Skip to content

New msgpack extensions, extended connection options, bug fixes #53

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Sep 5, 2024

Conversation

goodwise
Copy link
Contributor

@goodwise goodwise commented Jun 5, 2024

  • Added 3 new msgpack extensions: UUID, Datetime, Decimal.
  • Connection object now accepts all options of net.createConnection(), including Unix socket path.
  • New nonWritableHostPolicy and related options, which improves a high availability capabilities without any 3rd parties.
  • Ability to disable the offline queue.
  • Fixed bug with int32 numbers when it was encoded as floating. Use method packInteger() to solve this.
  • selectCb() now also accepts spaceId and indexId as their String names, not only their IDs.
  • Some performance improvements by caching internal values.
  • TLS (SSL) support.
  • New pipeline()+exec() methods kindly borrowed from the ioredis, which lets you to queue some commands in memory and then send them simultaneously to the server in a single (or several, if request body is too big) network call(s). Thanks to the Tarantool, which made this possible.
    This way the performance is significantly improved by 500-1600% - you can check it yourself by running npm run benchmark-read or npm run benchmark-write.
    Note that this feature doesn't replaces the Transaction model, which has some level of isolation.
  • Changed const declaration to var in order to support old Node.JS versions.

goodwise added 3 commits June 6, 2024 01:57
- Now supports 3 new msgpack extensions: UUID, Datetime, Decimal
- Connection object accepts all options of net.createConnection()
- Extended readme documentation
goodwise added 3 commits June 7, 2024 17:19
- Updated Readme docs
- New nonWritableHostPolicy and related options, which improves a high availability capability without any 3rd parties
- Ability to disable the offline queue
- Now Unix-sockets can be passed as string in first argument of connection constructor and recognized correcty
Fixed 'nonWritableHostPolicy' option description.
Beautified options
@sergos
Copy link
Contributor

sergos commented Jun 7, 2024

Sorry, but test.sh is broken exactly at the first commit.
Apparently, istanbul isn't aware of ?. and fails w/some sort of parsing.

@sergos sergos assigned goodwise and unassigned sergos Jun 7, 2024
@goodwise
Copy link
Contributor Author

goodwise commented Jun 7, 2024

Will inspect this.

What is the reason to use the Denque? The whole functionality of this module could be implemented with a native Array's methods like push / pop / shift / splice, which are 2 times faster in my own benchmarks and available since node 0.10.0 version

goodwise added 2 commits June 8, 2024 01:46
- Fixed compatability with old versions of Node.JS
- Little fix of 'test' suite in order to pass it with new Unix socket support
- selectCb() parameters now can accept spaceId and indexId as Strings, not only numbers
Renamed to 'msgpack-extensions' for clarity
@goodwise
Copy link
Contributor Author

goodwise commented Jun 7, 2024

is broken

Fixed it

@goodwise goodwise changed the title New msgpack extensions, extended connection options, modified+beautified readme.md New msgpack extensions, extended connection options, bug fixes Jun 22, 2024
@goodwise goodwise mentioned this pull request Jun 22, 2024
- Some performance improvements by caching internal values.
- TLS (SSL) support.
- New `pipeline()`+`exec()` methods kindly borrowed from the [ioredis](https://github.com/redis/ioredis?tab=readme-ov-file#pipelining), which lets you to queue some commands in memory and then send them simultaneously to the server in a single (or several, if request body is too big) network call(s). Thanks to the Tarantool, which [made this possible](https://www.tarantool.io/en/doc/latest/dev_guide/internals/iproto/format/#packet-structure).
This way the performance is significantly improved by 500-1600% - you can check it by yourself running `npm run benchmark-read` or `npm run benchmark-write`.
Note that this feature doesn't replaces the Transaction model, which has some level of isolation.
- Changed `const` declaration to `var` in order to support old Node.JS versions.
@goodwise
Copy link
Contributor Author

@sergos @oleg-jukovec any news?

goodwise added 2 commits July 24, 2024 09:25
Use `.findPipelineError(pipeline_answer)` to get the first error and `.findPipelineErrors()` to get an array of all occured errors.
@sergos
Copy link
Contributor

sergos commented Sep 5, 2024

is broken

Fixed it

As of today tests are passing, no more questions from me.

Copy link
Contributor

@sergos sergos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Co-authored-by: Michael Filonenko <filonenko.mikhail@gmail.com>
@sergos sergos merged commit ed972dd into tarantool:master Sep 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

int32 в индексе
4 participants