1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00
Commit Graph

149 Commits

Author SHA1 Message Date
Charley DAVID
e00041e0eb Fix: XAUTOCLAIM after a TRIM with pending messages returns nil (#2565)
* fix(client): XCLAIM & XAUTOCLAIM after a TRIM might return nils

* fix(client): Fix race condition in specs

* revert test utils changes

* make tests faster

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-09-19 17:37:16 -04:00
avinashkrishna613
4ec97be4f0 fix #1956 - add support for LATENCY HISTORY (#2555)
* added support for LATENCY_HISTORY command

* clean code

* Update LATENCY_HISTORY.ts

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-09-19 16:21:54 -04:00
Asher
6848f3d207 Add support for PUBSUB SHARDNUMSUB (#2541)
* Add support for command 'PUBSUB SHARDNUMSUB'

* Use import from PUBSUB_SHARDNUMSUB

* Add test case for non-empty reply

* clean tests

* run tests in redis >= 7, fix integration test

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-09-19 15:59:02 -04:00
Moshe L
01ca54e907 fix #1970 - add support for RESTORE (#2535)
* - Added RESTORE functionality

* add FIRST_KEY_INDEX, fix tests, clean example, add example to examples table

* use returnBuffers in test

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-09-18 19:45:33 -04:00
Evis Cheng
8ecfd3ebda Add support for CLUSTER MYSHARDID (#2528)
* Add support for CLUSTER.MYSHARDID command

* Update CLUSTER_MYSHARDID.ts

* Update CLUSTER_MYSHARDID.spec.ts

* add test and clean code

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-09-18 19:31:03 -04:00
Leibale
1f97893785 fix ACL GETUSER test 2023-09-18 18:25:13 -04:00
Codrin-Mihai Chira
4e610c2f8a Add support for CLIENT NO-TOUCH (#2497) 2023-09-18 17:49:37 -04:00
Francisco Presencia
fb255eb5d0 Have client.connect() return a Promise<RedisClient> (#2602)
* Connect returns the instance of the client

* Added a test

* No auto setup

* Added a bit of docs

* fix the return type, test, and the docs

* fix return type

* Update packages/client/lib/client/index.spec.ts

Co-authored-by: Francisco Presencia <franciscop@users.noreply.github.com>

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-09-18 17:40:08 -04:00
Leibale
fe74e322dd upgrade deps 2023-08-23 14:53:26 -04:00
Joren Vandeweyer
bc8abd5a38 fixes #2524 delaying graceful exit while pingInterval is set (#2525)
* fixes #2524

* `clearTimeout` in `disconnect` too

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-08-23 13:20:20 -04:00
Leibale Eidelman
100a5232ac use setImmediate instead of queueMicrotask (to improve performance) (#2516) 2023-05-29 09:01:22 -04:00
Kumar Arnav
e696653bf9 Add support for LATENCY LATEST (#2514)
* Add support for LATENCY LATEST.

* Fix the review comments.

* Fix the review comments.

* Update LATENCY_LATEST.ts

* Update dockers.ts

* Update LATENCY_GRAPH.spec.ts

* enable debug mode in tests

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-05-29 09:00:58 -04:00
Codrin-Mihai Chira
d4f194352f XINFO CONSUMERS - add support for the inactive field (#2490)
* Support XINFO CONSUMERS: Added the inactive field

* Update XINFO_CONSUMERS.ts

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-05-21 08:06:46 -04:00
Leibale Eidelman
dc920d3b67 fix isolationPool after reconnect (#2409)
* fix #2406 - fix isolationPool after reconnect

* revert breaking change

* fix
2023-04-26 14:44:09 -04:00
Leibale Eidelman
ba31c8a50e fix #2443 - fix multiple sockets on error in socket initiator (#2480)
* fix #2443 - fix multiple sockets on error in socket initiator

* handle `error` events in test
2023-04-26 12:56:42 -04:00
Carl Hopf
e1658ba6ef fix cluster extractFirstKey skip commandOptions() passed to args (#2439)
* cluster extractFirstKey skip commandOptions() passed to args

* cluster with commandOptions unit test

* improve performance

* fix type

* fix type

---------

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-04-26 12:56:04 -04:00
sorilove
9f2e27d07d Fixed a bug in the updateIsActive function (#2476)
Missing PubSubType.SHARDED and duplicate comparison of PubSubType.CHANNELS when comparing listeners size in updateIsActive function
2023-04-24 12:41:30 -04:00
Leibale Eidelman
e95b258dca fix #2419 - fix RESP2 array decoder in edge cases (#2424) 2023-02-24 17:34:19 -05:00
Mik13
0f28dad2a2 Execute empty MULTI (#2423)
* Fix multi.exec with empty queue and previous watch

When calling exec on a multi instance which you did not use, no command is sent currently.

This is a problem for watched keys, because no EXEC means no unwatch, which might cause hard-to-debug problems.

Proposed Fix: Sending UNWATCH

* execute empty multi command (instead of skipping)

* Update index.ts

* Update index.ts

* Update multi-command.ts

* Update multi-command.ts

* Update multi-command.ts

* Update multi-command.ts

* short circuit empty pipelines

* Update index.ts

---------

Co-authored-by: Leibale <me@leibale.com>
2023-02-24 17:33:16 -05:00
Leibale Eidelman
7cb467ad23 fix #2398 - fix v4 interface in legacyMode (#2402) 2023-01-30 14:24:11 -05:00
Leibale Eidelman
b3cd78503d fix reconnecting event (#2396)
* fix #2395 - fix reconnecting event

* Update socket.ts
2023-01-28 18:20:48 -05:00
Leibale Eidelman
2dba7f200b fix #2392 - handle errors in legacyMode (#2394) 2023-01-27 09:45:22 -05:00
Leibale Eidelman
3bd28a9924 fix #2391 - remove node: prefix from imports 2023-01-25 20:37:00 -05:00
Leibale Eidelman
3b1bad2296 Add support for sharded PubSub (#2373)
* refactor pubsub, add support for sharded pub sub

* run tests in redis 7 only, fix PUBSUB SHARDCHANNELS test

* add some comments and fix some bugs

* PubSubType, not PubSubTypes 🤦‍♂️

* remove test.txt

* fix some bugs, add tests

* add some tests

* fix #2345 - allow PING in PubSub mode (remove client side validation)

* remove .only

* revert changes in cluster/index.ts

* fix tests minimum version

* handle server sunsubscribe

* add 'sharded-channel-moved' event to docs, improve the events section in the main README (fix #2302)

* exit "resubscribe" if pubsub not active

* Update commands-queue.ts

* Release client@1.5.0-rc.0

* WIP

* use `node:util` instead of `node:util/types` (to support node 14)

* run PubSub resharding test with Redis 7+

* fix inconsistency in live resharding test

* add some tests

* fix iterateAllNodes when starting from a replica

* fix iterateAllNodes random

* fix slotNodesIterator

* fix slotNodesIterator

* clear pubSubNode when node in use

* wait for all nodes cluster state to be ok before testing

* `cluster.minimizeConections` tests

* `client.reconnectStrategry = false | 0` tests

* sharded pubsub + cluster 🎉

* add minimum version to sharded pubsub tests

* add cluster sharded pubsub live reshard test, use stable dockers for tests, make sure to close pubsub clients when a node disconnects from the cluster

* fix "ssubscribe & sunsubscribe" test

* lock search docker to 2.4.9

* change numberOfMasters default to 2

* use edge for bloom

* add tests

* add back getMasters and getSlotMaster as deprecated functions

* add some tests

* fix reconnect strategy + docs

* sharded pubsub docs

* Update pub-sub.md

* some jsdoc, docs, cluster topology test

* clean pub-sub docs

Co-authored-by: Simon Prickett <simon@redislabs.com>

* reconnect startegy docs and bug fix

Co-authored-by: Simon Prickett <simon@redislabs.com>

* refine jsdoc and some docs

Co-authored-by: Simon Prickett <simon@redislabs.com>

* I'm stupid

* fix cluster topology test

* fix cluster topology test

* Update README.md

* Update clustering.md

* Update pub-sub.md

Co-authored-by: Simon Prickett <simon@redislabs.com>
2023-01-25 11:00:39 -05:00
Ananda
e75a5db3e4 Add CLIENT LIST command and fix CLIENT INFO (#2368)
* fix client info

* add client list

* fix key validation in transformClientInfoReply

* fix issue with field in CLIENT LIST reply

* clean code

* fix multimem

* fix qbufFree argvMem totMem multiMem

Co-authored-by: Leibale <me@leibale.com>
2023-01-25 10:52:59 -05:00
Benjie
2287efdd1e Fix legacyMode/pingInterval issue (#2386)
* Add a test for legacyMode pingInterval

* Apply patch to fix legacy mode ping interval

* use this.#sendCommand instead of this.#v4

Co-authored-by: Leibale <me@leibale.com>
2023-01-24 20:11:48 -05:00
Ananda
63511e5b9b Add latency graph command (#2359)
* add latency graph command

* fix coding style

* Clean code

* use "enable-debug-command" is redis 7+ only

* Update LATENCY_GRAPH.spec.ts

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-01-18 12:55:38 -05:00
Leibale Eidelman
fad23973a5 fix #2333 - fix quit reply (#2346) 2023-01-18 12:55:11 -05:00
Brandon
aa75ee49c6 #2038 Resolve legacy mode hGetAll returning in the wrong format compared to v3 results (#2367)
* Ensure that transformReply is optionally passed through to commands in legacy mode within multi

* Execute transformReply on legacy #sendCommand

* Scope transform changes to hGetAll

* Extensible method of transforming legacy replies, expands RedisCommand interface

* check `TRANSFORM_LEGACY_REPLY` on client creation (rather then on command exec), add tests

Co-authored-by: Leibale Eidelman <me@leibale.com>
2023-01-18 12:54:29 -05:00
Vojtech Novak
f6093b7b0f fix: zero ttl is ignored (#2349)
* fix: zero ttl is ignored

* Update SET.ts

* Update SET.ts

Co-authored-by: Leibale Eidelman <me@leibale.com>
2022-12-15 12:04:13 -05:00
Leibale Eidelman
13ad249ae6 fix #2010 - stop reconnect after .disconnect() (#2323)
* fix #2010 - stop reconnect after .disconnect()

* fix quit
2022-11-24 14:03:34 -05:00
Leibale Eidelman
28b9701543 fix #2318 - add MULTI (uppercase) (#2324) 2022-11-24 14:01:43 -05:00
Leibale Eidelman
d923f7127a fix #2205 - reject commands in connect phase when disableOfflineQueue is true (#2328) 2022-11-24 14:01:09 -05:00
Leibale Eidelman
3c2f7ab92a Ping interval (#2321)
* fix #1598 fix #2276 - add `pingInterval` to client config

* setPingTimer on ready (instead of on connect)

* use isReady (instead of isOpen) and fix test

* Update client-configuration.md
2022-11-10 03:49:56 -05:00
Jonas Faure
252c2192ea fix(client): Avoids infinite promise-chaining when socket's creation fails (#2295)
* fix(client): timeout issues during tests

* fix(client): avoiding infinite Promise chaining while socket creation fails

* fix(client): Added missing semicolons

* clean test

Co-authored-by: leibale <leibale1998@gmail.com>
2022-10-26 16:42:52 -04:00
Matthijs Dabroek
c413657357 Reject multi.exec() promise with ClientClosedError after client disconnect (#2293)
* Add reject multi chain on client disconnect assertion to client test suite

* Reject multi chain exec with client closed error after client disconnect
2022-10-26 16:40:14 -04:00
Leibale Eidelman
0abd950f03 fix tsbuild (#2307)
* fix tsbuild

* fix tsbuild

* fix tsbuild
2022-10-26 15:32:19 -04:00
Kien Dang
2a8e11a51d Export SetOptions type in redis/client command (#2268)
* Export setOptions type

* Export setOptions type in commands

* Revert "Export setOptions type in commands"

* Export SetOptions type in redis client

* Export SetOptions type in @redis/client

* Fix lint
2022-09-21 17:05:16 -04:00
Roman Poleguev
e1c0580d65 Fix CLUSTER_NODES ipv6 address parsing (#2269) 2022-09-19 13:31:21 -04:00
Leibale Eidelman
942de1f0b4 Handle unhandled errors in socket.reconnectStrategry (#2226)
* handle errors in reconnect strategy

* add test

* fix retries typo

* fix #2237 - flush queues on reconnect strategy error

* Update socket.ts

* Update socket.ts
2022-08-22 17:59:45 -04:00
Brandon Everett
ac032d82a0 fix: loop over arguments instead of spreading (#2160)
* fix: loop over arguments instead of spreading

* update to use concat

* use the returned array from pushVerdictArguments (instead of assuming it'll push to the original array)

* fix "Type 'RedisCommandArguments' is not assignable to type 'string[]'."

* fix "Argument of type 'RedisCommandArgument | RedisCommandArguments[]' is not assignable to parameter of type 'RedisCommandArgument | RedisCommandArgument[]'"

* fix "Type 'RedisCommandArguments' is not assignable to type 'string[]'"

Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
2022-07-13 07:01:35 -04:00
Leibale Eidelman
71d582368a Add support for client.unref() and client.ref() (#2188)
* close #2185 - add support for client.unref() and client.ref()

* allow sync tests
2022-07-13 07:01:20 -04:00
Ștefan Cenușă
f9f5e494dd fixed MIGRATE function when key is array (#2184)
* fix: 2163 push empty string as arg

* fix: updated migrate test with keys array
2022-07-07 14:33:58 -04:00
Leibale Eidelman
6a850d36ae upgrade deps, fix "invalid save argument" error (#2174) 2022-06-30 13:07:29 -04:00
Tom Graham
82f43d9a53 Fix issue with buffers in objects using hSet (#2139)
* Fix issue with buffers in objects using hSet

When using hSet with an object, any buffer values inside the object are converted to strings instead of left as buffers.
This fix specifically handles the special case of buffers, whilst casting everything else strings (to continue "gracefully" handling the case where the value not a valid type).

* Update HSET.ts

* Update HSET.spec.ts

Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
2022-05-26 09:56:10 -04:00
Leibale Eidelman
bf80c163b1 fix #2046 - add support for multi in select (#2133)
* fix #2046 - add support for multi in select

* fix "Argument of type 'symbol | undefined' is not assignable to parameter of type 'number | undefined'"
2022-05-26 09:55:47 -04:00
Leibale Eidelman
7196b907e5 fix #1915 - CLIENT TRACKINGINFO (#2127)
* fix #1915 - CLIENT TRACKINGINFO

* remove .only
2022-05-12 13:05:27 -04:00
Leibale Eidelman
d8db974980 fix #1914 - CLIENT TRACKING (#2126) 2022-05-12 12:56:09 -04:00
Leibale Eidelman
429b11e020 fix #1959 - LCS (#2129)
* fix #1959 - LCS

* newlines at end of files
2022-05-11 14:24:07 -04:00
Leibale Eidelman
24c2c867f8 fix #1917 - CLIENT UNPAUSE (#2128)
* fix #1917 - CLIENT UNPAUSE

* fix CLIENT UNPAUSE
2022-05-11 14:20:52 -04:00