1
0
mirror of https://github.com/redis/node-redis.git synced 2025-12-15 23:55:38 +03:00
Commit Graph

153 Commits

Author SHA1 Message Date
GitHub Action
a3b8146ffb Release search@5.10.0 2025-11-19 16:28:25 +00:00
Nikolay Karadzhov
ff91ecef81 chore(tests): bump test container version 8.4.0 (#3139) 2025-11-19 13:35:45 +02:00
Nikolay Karadzhov
539780caa8 bump test container version 8.4-GA-pre.3 (#3136)
* bump test container version 8.4-GA-pre.2

* chore(tests): bump test container version 8.4-GA-pre.3
2025-11-18 12:20:23 +02:00
Nikolay Karadzhov
c9f8cbcad5 chore: mark 8.4 features as experimental (#3134) 2025-11-11 13:03:19 +02:00
Hristo Temelski
b1c39fe02f fix: Hybrid Search, minor changes, added experimental notice (#3132)
* Hybrid Search, minor changes, added experimental notice

* fixed twot tests
2025-11-10 11:38:45 +02:00
Nikolay Karadzhov
568d60dbaa chore(tests): bump test container version 8.4-RC1-pre.2 (#3126) 2025-11-03 17:22:03 +02:00
Hristo Temelski
96a8a847f6 feat(search): add hybrid search command (#3119) 2025-10-31 13:09:04 +02:00
Nikolay Karadzhov
9c9a9732fb chore(tests): bump test container version 8.4-RC1-pre (#3115) 2025-10-30 13:16:56 +02:00
GitHub Action
cd0de0673c Release search@5.9.0 2025-10-23 14:04:01 +00:00
GitHub Action
9aa374c68c Release search@5.9.0-beta.3 2025-10-21 14:01:20 +00:00
Bobby I.
0438865b8a chore: Update default Redis version to 8.4-M01-pre in tests (#3092) 2025-10-06 13:53:37 +03:00
GitHub Action
4d986d42cc Release search@5.9.0-beta.2 2025-10-01 13:46:54 +00:00
GitHub Action
e8109cc74c Release search@5.9.0-beta.1 2025-09-26 08:53:04 +00:00
GitHub Action
35cf484462 Release search@5.9.0-beta.0 2025-09-10 09:04:35 +00:00
Nikolay Karadzhov
208a0d250f Hitless upgrades (#3021)
* feat(errors): Add specialized timeout error types for maintenance scenarios

- Added `SocketTimeoutDuringMaintananceError`, a subclass of `TimeoutError`, to handle socket timeouts during maintenance.
- Added `CommandTimeoutDuringMaintenanceError`, another subclass of `TimeoutError`, to address command write timeouts during maintenance.

* feat(linked-list): Add EmptyAwareSinglyLinkedList and enhance DoublyLinkedList functionality

- Introduced `EmptyAwareSinglyLinkedList`, a subclass of `SinglyLinkedList` that emits an `empty` event when the list becomes empty due to `reset`, `shift`, or `remove` operations.
- Added `nodes()` iterator method to `DoublyLinkedList` for iterating over nodes directly.
- Enhanced unit tests for `DoublyLinkedList` and `SinglyLinkedList` to cover edge cases and new functionality.
- Added comprehensive tests for `EmptyAwareSinglyLinkedList` to validate `empty` event emission under various scenarios.
- Improved code formatting and consistency.

* refactor(commands-queue): Improve push notification handling

- Replaced `setInvalidateCallback` with a more flexible `addPushHandler` method, allowing multiple handlers for push notifications.
- Introduced the `PushHandler` type to standardize push notification processing.
- Refactored `RedisCommandsQueue` to use a `#pushHandlers` array, enabling dynamic and modular handling of push notifications.
- Updated `RedisClient` to leverage the new handler mechanism for `invalidate` push notifications, simplifying and decoupling logic.

* feat(commands-queue): Add method to wait for in-flight commands to complete

- Introduced `waitForInflightCommandsToComplete` method to asynchronously wait for all in-flight commands to finish processing.
- Utilized the `empty` event from `#waitingForReply` to signal when all commands have been completed.

* feat(commands-queue): Introduce maintenance mode support for commands-queue

- Added `#maintenanceCommandTimeout` and `setMaintenanceCommandTimeout` method to dynamically adjust command timeouts during maintenance

* refator(client): Extract socket event listener setup into helper method

* refactor(socket): Add maintenance mode support and dynamic timeout handling

- Added `#maintenanceTimeout` and `setMaintenanceTimeout` method to dynamically adjust socket timeouts during maintenance.

* feat(client): Add Redis Enterprise maintenance configuration options

- Added `maintPushNotifications` option to control how the client handles Redis Enterprise maintenance push notifications (`disabled`, `enabled`, `au
to`).
- Added `maintMovingEndpointType` option to specify the endpoint type for reconnecting during a MOVING notification (`auto`, `internal-ip`, `external-ip`,
etc.).
- Added `maintRelaxedCommandTimeout` option to define a relaxed timeout for commands during maintenance.
- Added `maintRelaxedSocketTimeout` option to define a relaxed timeout for the socket during maintenance.
- Enforced RESP3 requirement for maintenance-related features (`maintPushNotifications`).

* feat(client): Add socket helpers and pause mechanism

- Introduced `#paused` flag with corresponding `_pause` and `_unpause` methods to
temporarily halt writing commands to the socket during maintenance windows.
- Updated `#write` method to respect the `#paused` flag, preventing new commands from being written during maintenance.
- Added `_ejectSocket` method to safely detach from and return the current socket
- Added `_insertSocket` method to receive and start using a new socket

* feat(client): Add Redis Enterprise maintenance handling capabilities

- Introduced `EnterpriseMaintenanceManager` to manage Redis Enterprise maintenance events and push notifications.
- Integrated `EnterpriseMaintenanceManager` into `RedisClient` to handle maintenance push notifications and manage socket transitions.
- Implemented graceful handling of MOVING, MIGRATING, and FAILOVER push notifications, including socket replacement and timeout adjustments.


* test: add E2E test infrastructure for Redis maintenance scenarios

* test: add E2E tests for Redis Enterprise maintenance timeout handling (#3)

* test: add connection handoff test


---------

Co-authored-by: Pavel Pashov <pavel.pashov@redis.com>
Co-authored-by: Pavel Pashov <60297174+PavelPashov@users.noreply.github.com>
2025-09-10 11:05:37 +03:00
GitHub Action
c73a8c6569 Release search@5.8.2 2025-08-20 08:33:23 +00:00
Nikolay Karadzhov
b9a5d36640 fix(search): properly decide if response has docs (#3060)
fixes: #3056
2025-08-20 11:12:25 +03:00
Nikolay Karadzhov
d5423b93d6 chore(tests): bump test container version 8.2.1-pre (#3057) 2025-08-18 11:32:41 +03:00
GitHub Action
603fa71fe1 Release search@5.8.1 2025-08-13 06:22:33 +00:00
Nikolay Karadzhov
6406172ea8 chore(tests): bump test container version 8.2 (#3046) 2025-08-06 09:49:52 +03:00
GitHub Action
1436a6e304 Release search@5.8.0 2025-08-05 09:58:17 +00:00
Pavel Pashov
66638fc903 Add support svs vamana index creation (#3025)
* feat(search): add SVS-VAMANA vector index algorithm support

- Add VAMANA algorithm with compression and tuning parameters
- Include comprehensive test coverage for various configurations
- Fix parameter validation to handle falsy values correctly

* feat(search): add additional VAMANA compression algorithms

- Add LVQ4, LVQ4x4, LVQ4x8, LeanVec4x8, and LeanVec8x8 compression options
- Update test to use LeanVec4x8 compression algorithm

* chore: update Redis version from 8.2-rc1 to 8.2-rc2-pre
2025-08-04 12:07:18 +03:00
GitHub Action
f37f98aced Release search@5.7.0 2025-07-31 13:39:26 +00:00
Pavel Pashov
d941ec5a4c Add Redis 8.2 New Stream Commands (#3029)
* chore: update Redis version from 8.2-RC1-pre to 8.2-rc1

* feat: implement XDELEX command for Redis 8.2

* feat: implement XACKDEL command for Redis 8.2

* refactor: create shared stream deletion types
  for Redis 8.2 commands

* feat: add Redis 8.2 deletion policies to XTRIM
  command

* feat: add Redis 8.2 deletion policies to XADD commands

* fix: correct XDELEX command method name and test parameter
2025-07-25 17:58:28 +03:00
GitHub Action
726e2c7c64 Release search@5.6.1 2025-07-23 15:53:04 +00:00
Nikolay Karadzhov
c21dd924fe fix(search): adjust field types for ft.search (#3018)
In ft.search SORTBY, SUMMARIZE and HIGHLIGHT all take
string arguments and do not need @ or $ as a prefix.
In fact, if you put @ or $ there, redis returns error like this:

[SimpleError: Property `@age` not loaded nor in schema]

fixes #3017
2025-07-17 14:02:22 +03:00
GitHub Action
ff5c6b3066 Release search@5.6.0 2025-07-08 11:37:44 +00:00
Pavel Pashov
b52177752e feat: added support for new bitop operations (#3001)
refactored bitop tests, covered all operations

updated default docker version on all packages
2025-06-19 13:56:00 +03:00
Nikolay Karadzhov
5d205cf161 chore(tests): bump test container version 8.0.2 (#2997) 2025-06-16 10:20:49 +03:00
Nikolay Karadzhov
c9ecb3d65c Release search@5.5.6 2025-06-06 10:16:17 +03:00
Nikolay Karadzhov
8610a6c836 Updated the Search package to use client@5.5.6 2025-06-06 10:15:45 +03:00
Navi sureka
21d8f0e957 docs(search): update SchemaFieldTypes to SCHEMA_FIELD_TYPE for redis@5.x (#2992) 2025-06-06 09:30:07 +03:00
Nikolay Karadzhov
2bb515e489 fix(search): align ft.search with server (#2988)
as per the ft.search docs ( https://redis.io/docs/latest/commands/ft.search ):

    If a relevant key expires while a query is running,
    an attempt to load the key's value will return a null array.
    However, the key is still counted in the total number of results.

So, instead of crashing when seeing a null as a value, we
return empty object.

fixes #2772
see https://github.com/redis/node-redis/pull/2814
2025-06-05 11:46:57 +03:00
Nikolay Karadzhov
b33a662e50 Automate release (#2977)
* release-it/bumper

* remove git:false

* fix package ordering

* adjust git add

* fix git config

* adjust git config for all packages

* add noop release script for test-utils

* no need to try to release root

* better way to handle skipping

* pass parameters down

* better version hint

* update node version

* return git arguments from before

* rename release workflow

* rename workflow

* set git.tagMatch

* add link to docs

* update description

* update workspace order in package-lock

* fix secondary releases

release-it/bumper was removing the ^ before the peerDep to client
npm is not happy with that. one potential fix would be to bump all
packages together as a prestep and then proceed without bupming again.
for now, this fix should bring us to the previous state ( what was used
in the manual process )

* require clean working dir in root

* remove root release-it config

not needed
2025-06-04 10:52:14 +03:00
Bobby I.
20c16e0c2c (docs) add jsdoc comments to command parsers (#2984)
* (docs) bloom: add jsdocs for all commands

* (docs) json: add jsdocs

* (docs) search: add jsdocs for all commands

* (docs) jsdocs for std commands

* (docs) jsdoc comments to time series commands
2025-06-03 14:38:07 +03:00
Nikolay Karadzhov
13566cf9d6 Release search@5.1.1 2025-05-28 16:24:51 +03:00
Nikolay Karadzhov
b2213d8132 Updated the Search package to use client@5.1.1 2025-05-28 16:24:32 +03:00
Nikolay Karadzhov
2cc68647fe Release search@5.1.0 2025-05-20 16:06:45 +03:00
Nikolay Karadzhov
4bb23283c3 Updated the Search package to use client@5.1.0 2025-05-20 16:05:08 +03:00
Bobby I.
ebd03036d6 revert the 'total' count logic in AGGREGATE response introduced in #2952 (#2955)
> FT.AGGREGATE returns an array reply where each row is an array reply and represents a single aggregate result.
The integer reply at position 1 does not represent a valid value.

https://redis.io/docs/latest/commands/ft.aggregate/#return
2025-05-09 10:13:32 +03:00
Bobby I.
5e9fea1fd3 Update Redis version to 8.0.1-pre (#2952)
> FT.AGGREGATE returns an array reply where each row is an array reply
and represents a single aggregate result.
> The integer reply at position 1 does not represent a valid value.

We now calculate the result length bazed on the number of results
instead of the integer reply at pos 1
2025-05-08 15:14:30 +03:00
Nikolay Karadzhov
17179ddb35 Release search@5.0.1 2025-05-05 12:02:20 +03:00
Nikolay Karadzhov
cc13ae298e Updated the Search package to use client@5.0.1 2025-05-05 12:01:39 +03:00
Nikolay Karadzhov
30cecc4b48 Release search@5.0.0 2025-04-30 17:13:28 +03:00
Nikolay Karadzhov
c942f0eb9f Updated the Search package to use client@5.0.0 2025-04-30 17:12:59 +03:00
Nikolay Karadzhov
048df302e4 Fix imports (#2929)
* fix: exports

align exports with v4 as much as possible

* document breaking changes

* export type

return SetOptions export
2025-04-30 14:38:32 +03:00
Bobby I.
5295926cc0 bump test container to 8.0-RC2-pre (#2927) 2025-04-29 10:56:38 +03:00
H. Temelski
17b3304323 Release search@5.0.0-next.7 2025-03-25 10:31:02 +02:00
H. Temelski
c50892a7f7 Updated the search package to use client@5.0.0-next.7 2025-03-25 10:30:08 +02:00
Hristo Temelski
d64072da95 feat(integer 8 vector support): Changed ft create vector types to union, added support for int8/uint8 (#2911)
* [CAE-827] Changed ft create vector types to union, added support for int8/uint8

* [CAE-827] Moved test cases
2025-03-21 11:43:10 +02:00