Skip to content

Conversation

@jbrinkman
Copy link
Collaborator

Issue link

This Pull Request is linked to issue [#4752]

Checklist

Before submitting the PR make sure the following are checked:

  • This Pull Request is related to one issue.
  • Commit message has a detailed description of what changed and why.
  • [NA] Tests are added or updated.
  • [NA] CHANGELOG.md and documentation files are updated.
  • Destination branch is correct - main or release
  • Create merge commit if merging release branch into main, squash otherwise.

jamesx-improving and others added 21 commits September 5, 2025 12:25
* Go: Switch to MUSL binary

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* rustup add musl targets

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* lint

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* rustup add musl targets in Makefile

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Add pathing

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Trigger CodeQL on main

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix typo

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix typo

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update docs

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Format

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Address feedback

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update doc

Signed-off-by: Alex Rehnby-Martin <[email protected]>

---------

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>
Co-authored-by: Alex Rehnby-Martin <[email protected]>
Co-authored-by: Alexey Temnikov <[email protected]>
* Java: Migration guide for Jedis compatibility layer

Signed-off-by: Prateek Kumar <[email protected]>
… Valkey 9.0 (#4694)

Python: Add Multi-Database Support for Cluster Mode Valkey 9.0 (#4659)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* python: Add multi-database support for cluster and standalone modes

- Add database_id parameter to BaseClientConfiguration, GlideClientConfiguration, and GlideClusterClientConfiguration
- Implement SELECT command for both cluster and standalone modes with comprehensive documentation
- Add validation for database_id parameter (0-15 range, integer type)
- Refactor configuration protobuf request creation with helper methods for better maintainability
- Add extensive test coverage for database_id configuration and validation
- Include production warnings and recommended approaches in SELECT command documentation
- Support routing configuration for cluster mode SELECT operations
- Ensure database_id persists across reconnections when set in client configuration

Documentation:
- Added comprehensive docstrings with warnings about SELECT command limitations
- Included examples showing recommended database_id configuration approach
- Documented reconnection behavior and cluster-specific routing requirements



* fixing database_id restriction



* fixed test test_standalone_client_with_very_high_database_ids



* fix python tests with higher databases id



* fix lint error



* refactoring out the route option from the select command



* Remove SELECT command from cluster mode and enable cluster tests

- Remove select() method from ClusterCommands in both async and sync clients
- Enable cluster mode testing for database_id tests (parametrize True, False)
- Delete database_id integration test file

The SELECT command is not recommended for cluster mode due to reconnection
behavior where nodes revert to configured database_id, not the selected one.



* removed database_id validation|
renamed tests to be cluster/standalone agnostic
clean up comments



* added changelog



* lint fix



* fix test database_id should be skipped for versions lower than 9.0.0



* fix test



* added select rounting
refactored extract_client_id to be in utilities



* fix database_id documentation
added custom command test using select



---------

Signed-off-by: affonsov <[email protected]>
… 9.0 (#4696)

Go: Add Multi-Database Support for Cluster Mode Valkey 9.0 (#4660)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* go: Add multi-database support for cluster mode clients

- Add DatabaseId field to baseClientConfiguration for both standalone and cluster clients
- Implement WithDatabaseId() method for ClusterClientConfiguration
- Add database ID validation with proper error handling for negative values
- Refactor standalone client to use shared database ID logic from base configuration
- Add Select() and SelectWithOptions() methods for cluster clients with routing support
- Include comprehensive test coverage for database isolation, reconnection persistence, and error handling
- Add backward compatibility support - clients default to database 0 when no database_id specified
- Add server version compatibility checks (cluster multi-database requires Valkey 9.0+)
- Update documentation with warnings about SELECT command limitations and recommended configuration approach

This enables cluster mode clients to connect to specific databases at initialization time,
with the database selection persisting across reconnections, unlike the SELECT command
which resets on reconnection.



* fixed go tests
- batch tests
- database id tests



* removed selectWithOptions



* go: Remove Select command from cluster clients

- Remove Select method from ClusterClient and related interfaces
- Delete comprehensive database_id integration tests
- Remove Select command from batch operations
- Remove Select examples and tests
- Add example for cluster client with database_id configuration

The Select command is being removed in favor of using the database_id
configuration parameter, which provides persistent database selection
across reconnections.



* remove config validation
simplified tests



* added changelog



* removing batch test, and readding standalone select and removing batch select



---------

Signed-off-by: affonsov <[email protected]>
….0 (#4697)

Java: Multi-Database Support for Cluster Mode Valkey 9.0 (#4658)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* Java: implement multi-database support for cluster mode

- Move databaseId from GlideClientConfiguration to BaseClientConfiguration
- Add databaseId validation and protobuf integration
- Update SELECT command with AllNodes routing and reconnection warnings
- Add connection management for database selection after auth
- Add comprehensive tests with Valkey 9+ version guards

Completes Java client implementation for Valkey 9 cluster multi-database support.



* fixing database id restriction



* fixed java test error select_command_invalid_database_standalone



* fixed lint errors



* Refactored select command to route to all nodes per default
Removed the option to provide a route



* java lint fix



* java: Remove SELECT command from cluster client

- Remove select() method from GlideClusterClient and ConnectionManagementClusterCommands interface
- Delete MultiDatabaseTests.java which tested SELECT command functionality
- Remove SELECT command tests from SharedCommandTests.java
- Add focused test for cluster database_id configuration in ClusterClientTests
- Remove SELECT import from GlideClusterClient

The SELECT command is being removed from the cluster client API as database
selection should be handled through client configuration (databaseId parameter)
rather than runtime commands, which provides better consistency and avoids
reconnection issues.



* remove database_id validatation and simplified tests



* added changelog



* fix documentation



* fix databaseId documentation



---------

Signed-off-by: affonsov <[email protected]>
…key 9.0) (#4698)

Node: Add Multi-Database Support for Cluster Mode (Valkey 9.0) (#4657)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* node changes



* move tests to sharedtests.ts



* reafactoring to select to all nodes being in the core



* node: Remove SELECT command support from cluster client

- Remove select() method from GlideClusterClient
- Remove createSelect import from cluster client
- Remove extensive test coverage for SELECT functionality
- Remove database ID validation tests from client internals
- Add minimal database ID test for cluster client configuration
- Clean up ConfigurationError import that's no longer needed

This change removes the SELECT command implementation that was added
for Valkey 9.0+ cluster support, likely due to reliability concerns
with database switching in cluster mode or to simplify the API.



* added changelog



* fix test, and removed comment



---------

Signed-off-by: affonsov <[email protected]>
Python sync: removed select command (#4684)

removed sync select command

Signed-off-by: Lior Sventitzky <[email protected]>
* CI: Added self hosted macOS runners (#4683)

added self hosted runners  for macos
Signed-off-by: Lior Sventitzky <[email protected]>

* CD: removed self hosted mac arm runners from required CD platforms #4700 (#4702)

removed self hosted mac from cd, reverted npm-cd

Signed-off-by: Lior Sventitzky <[email protected]>

---------

Signed-off-by: Lior Sventitzky <[email protected]>
…4708)

Python: fixed pypi-cd workflow, fixed release tests (#4703)

fixed pypi upload, fixed release tests

Signed-off-by: Lior Sventitzky <[email protected]>
* Use zigbuild for easier cross-compilation

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Use zigbuild for easier cross-compilation

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Use zigbuild for easier cross-compilation

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix musl classifier / detection

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix musl classifier / detection

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix musl classifier / detection

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update docs

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Exclude arm musl test

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update arm runner

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update go exclusion

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Format

Signed-off-by: Alex Rehnby-Martin <[email protected]>

---------

Signed-off-by: Alex Rehnby-Martin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>
* CD: Fix Node CD delete artifact issue 2nd try

Signed-off-by: James Xin <[email protected]>

* Linter

Signed-off-by: James Xin <[email protected]>

* remove temporary testing

Signed-off-by: James Xin <[email protected]>

---------

Signed-off-by: James Xin <[email protected]>
…cs (#4715)

python: Update ExpiryType enum references in hash field expiration docs

Replace deprecated ExpiryType enum values with new names in docstrings:
- EX → SEC
- PX → MILLSEC
- EXAT → UNIX_SEC
- PXAT → UNIX_MILLSEC
- KEEPTTL → KEEP_TTL

Updates documentation for hash field expiration commands in both async and sync clients.

Signed-off-by: affonsov <[email protected]>
…he sync client (#4720)

Python sync/CD: added description to pypi package of the sync client (#4714)

added description to sync client

Signed-off-by: Lior Sventitzky <[email protected]>
* Java: Compatibility layer module

Signed-off-by: Prateek Kumar <[email protected]>

* Java: fix integration tests

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql for java code

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Update java cd

Signed-off-by: Prateek Kumar <[email protected]>

* Java: lint issues fixed

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Add signing configuration to jedis-compatibility build.gradle

Signed-off-by: Prateek Kumar <[email protected]>

* Java: update dependency

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Update valkey-glide-jedis-compatibility file path

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix build.gradle publishing code

Signed-off-by: Prateek Kumar <[email protected]>

---------

Signed-off-by: Prateek Kumar <[email protected]>
fix(java-cd): copy secring.gpg to jedis-compatibility for signing

Signed-off-by: jbrinkman <[email protected]>
Python Sync: revert license format (#4731)

revert license format

Signed-off-by: Lior Sventitzky <[email protected]>
* Java: Fix Jedis compatibility layer valkey-glide dependency

Signed-off-by: Prateek Kumar <[email protected]>
@jbrinkman jbrinkman requested a review from a team as a code owner September 18, 2025 13:21
Python: improve UDS socket error handling (#4733)

fixed uds error handling

Signed-off-by: Lior Sventitzky <[email protected]>
Co-authored-by: Lior Sventitzky <[email protected]>
@jbrinkman jbrinkman merged commit ba1bcd7 into main Sep 18, 2025
112 of 121 checks passed
xShinnRyuu pushed a commit that referenced this pull request Sep 24, 2025
* Go: Add MUSL support (#4476)

* Go: Switch to MUSL binary

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* rustup add musl targets

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* lint

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* rustup add musl targets in Makefile

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Add pathing

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Trigger CodeQL on main

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update CI

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix typo

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix typo

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Modify CD

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update docs

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Format

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Address feedback

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update doc

Signed-off-by: Alex Rehnby-Martin <[email protected]>

---------

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>
Co-authored-by: Alex Rehnby-Martin <[email protected]>
Co-authored-by: Alexey Temnikov <[email protected]>

* Java: Migration guide for Jedis compatibility layer (#4672) (#4681)

* Java: Migration guide for Jedis compatibility layer

Signed-off-by: Prateek Kumar <[email protected]>

* [Backport to 2.1] Python: Add Multi-Database Support for Cluster Mode Valkey 9.0  (#4694)

Python: Add Multi-Database Support for Cluster Mode Valkey 9.0 (#4659)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* python: Add multi-database support for cluster and standalone modes

- Add database_id parameter to BaseClientConfiguration, GlideClientConfiguration, and GlideClusterClientConfiguration
- Implement SELECT command for both cluster and standalone modes with comprehensive documentation
- Add validation for database_id parameter (0-15 range, integer type)
- Refactor configuration protobuf request creation with helper methods for better maintainability
- Add extensive test coverage for database_id configuration and validation
- Include production warnings and recommended approaches in SELECT command documentation
- Support routing configuration for cluster mode SELECT operations
- Ensure database_id persists across reconnections when set in client configuration

Documentation:
- Added comprehensive docstrings with warnings about SELECT command limitations
- Included examples showing recommended database_id configuration approach
- Documented reconnection behavior and cluster-specific routing requirements



* fixing database_id restriction



* fixed test test_standalone_client_with_very_high_database_ids



* fix python tests with higher databases id



* fix lint error



* refactoring out the route option from the select command



* Remove SELECT command from cluster mode and enable cluster tests

- Remove select() method from ClusterCommands in both async and sync clients
- Enable cluster mode testing for database_id tests (parametrize True, False)
- Delete database_id integration test file

The SELECT command is not recommended for cluster mode due to reconnection
behavior where nodes revert to configured database_id, not the selected one.



* removed database_id validation|
renamed tests to be cluster/standalone agnostic
clean up comments



* added changelog



* lint fix



* fix test database_id should be skipped for versions lower than 9.0.0



* fix test



* added select rounting
refactored extract_client_id to be in utilities



* fix database_id documentation
added custom command test using select



---------

Signed-off-by: affonsov <[email protected]>

* [Backport 2.1] Go: Add Multi-Database Support for Cluster Mode Valkey 9.0 (#4696)

Go: Add Multi-Database Support for Cluster Mode Valkey 9.0 (#4660)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* go: Add multi-database support for cluster mode clients

- Add DatabaseId field to baseClientConfiguration for both standalone and cluster clients
- Implement WithDatabaseId() method for ClusterClientConfiguration
- Add database ID validation with proper error handling for negative values
- Refactor standalone client to use shared database ID logic from base configuration
- Add Select() and SelectWithOptions() methods for cluster clients with routing support
- Include comprehensive test coverage for database isolation, reconnection persistence, and error handling
- Add backward compatibility support - clients default to database 0 when no database_id specified
- Add server version compatibility checks (cluster multi-database requires Valkey 9.0+)
- Update documentation with warnings about SELECT command limitations and recommended configuration approach

This enables cluster mode clients to connect to specific databases at initialization time,
with the database selection persisting across reconnections, unlike the SELECT command
which resets on reconnection.



* fixed go tests
- batch tests
- database id tests



* removed selectWithOptions



* go: Remove Select command from cluster clients

- Remove Select method from ClusterClient and related interfaces
- Delete comprehensive database_id integration tests
- Remove Select command from batch operations
- Remove Select examples and tests
- Add example for cluster client with database_id configuration

The Select command is being removed in favor of using the database_id
configuration parameter, which provides persistent database selection
across reconnections.



* remove config validation
simplified tests



* added changelog



* removing batch test, and readding standalone select and removing batch select



---------

Signed-off-by: affonsov <[email protected]>

* [Backport 2.1] Java: Multi-Database Support for Cluster Mode Valkey 9.0 (#4697)

Java: Multi-Database Support for Cluster Mode Valkey 9.0 (#4658)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* Java: implement multi-database support for cluster mode

- Move databaseId from GlideClientConfiguration to BaseClientConfiguration
- Add databaseId validation and protobuf integration
- Update SELECT command with AllNodes routing and reconnection warnings
- Add connection management for database selection after auth
- Add comprehensive tests with Valkey 9+ version guards

Completes Java client implementation for Valkey 9 cluster multi-database support.



* fixing database id restriction



* fixed java test error select_command_invalid_database_standalone



* fixed lint errors



* Refactored select command to route to all nodes per default
Removed the option to provide a route



* java lint fix



* java: Remove SELECT command from cluster client

- Remove select() method from GlideClusterClient and ConnectionManagementClusterCommands interface
- Delete MultiDatabaseTests.java which tested SELECT command functionality
- Remove SELECT command tests from SharedCommandTests.java
- Add focused test for cluster database_id configuration in ClusterClientTests
- Remove SELECT import from GlideClusterClient

The SELECT command is being removed from the cluster client API as database
selection should be handled through client configuration (databaseId parameter)
rather than runtime commands, which provides better consistency and avoids
reconnection issues.



* remove database_id validatation and simplified tests



* added changelog



* fix documentation



* fix databaseId documentation



---------

Signed-off-by: affonsov <[email protected]>

* [Backport 2.1] Node: Add Multi-Database Support for Cluster Mode (Valkey 9.0) (#4698)

Node: Add Multi-Database Support for Cluster Mode (Valkey 9.0) (#4657)

* - Implement database selection for cluster clients when database_id != 0
- Send SELECT command to all cluster nodes using MultiNode routing
- Add comprehensive error handling with clear error messages
- Include test for database selection error handling in cluster mode
- Support backward compatibility with servers that don't support multi-db cluster mode
- Enable cluster-databases=16 for Valkey 9.0+ in cluster manager

This enables cluster clients to work with non-default databases on Valkey 9.0+
servers configured with cluster-databases support, while gracefully handling
older servers that don't support this feature.



* update valkey9 multi db tests



* fix lint



* fixing valkey 9 cluster tests



* add to route to all nodes in the core



* rust lint fix



* implement database selection in cluster mode via connection parameters

- Add database_id field to ClusterParams and BuilderParams structs
- Add database() method to ClusterClientBuilder for setting database ID
- Pass database_id through connection info instead of post-connection SELECT
- Remove SELECT command from cluster routing
- Remove post-connection SELECT command logic from create_cluster_client
- Add comprehensive tests for database isolation and reconnection behavior
- Verify database ID persistence across node reconnections
- Test multi-database cluster support with proper isolation verification

This change moves database selection from a post-connection SELECT command
to a connection parameter, which is more reliable for cluster mode and
handles reconnections automatically. The approach works with servers that
support multi-database cluster configurations (like Valkey 9.0+).



* add valkey9 constraint in the core tests



* fix core test not skipping test when version was lower than valkey 9



* Fix version check



* refactored test test_set_database_id_after_reconnection to be similar from standalone
removed is_valkey_9_or_higher



* removed tests and cleanup



* renamed builder.database to builder.database_id



* node changes



* move tests to sharedtests.ts



* reafactoring to select to all nodes being in the core



* node: Remove SELECT command support from cluster client

- Remove select() method from GlideClusterClient
- Remove createSelect import from cluster client
- Remove extensive test coverage for SELECT functionality
- Remove database ID validation tests from client internals
- Add minimal database ID test for cluster client configuration
- Clean up ConfigurationError import that's no longer needed

This change removes the SELECT command implementation that was added
for Valkey 9.0+ cluster support, likely due to reliability concerns
with database switching in cluster mode or to simplify the API.



* added changelog



* fix test, and removed comment



---------

Signed-off-by: affonsov <[email protected]>

* [Backport 2.1] Python sync: removed select command (#4705)

Python sync: removed select command (#4684)

removed sync select command

Signed-off-by: Lior Sventitzky <[email protected]>

* [Backport 2.1] CI/CD: Added self hosted macOS ARM runners (#4706)

* CI: Added self hosted macOS runners (#4683)

added self hosted runners  for macos
Signed-off-by: Lior Sventitzky <[email protected]>

* CD: removed self hosted mac arm runners from required CD platforms #4700 (#4702)

removed self hosted mac from cd, reverted npm-cd

Signed-off-by: Lior Sventitzky <[email protected]>

---------

Signed-off-by: Lior Sventitzky <[email protected]>

* [backport 2.1] Python: fixed pypi-cd workflow, fixed release tests (#4708)

Python: fixed pypi-cd workflow, fixed release tests (#4703)

fixed pypi upload, fixed release tests

Signed-off-by: Lior Sventitzky <[email protected]>

* Fix FFI tests for non-alpine distros (#4711)

Signed-off-by: Jeremy Parr-Pearson <[email protected]>

* MUSL Java Build Fixes (#4712)

* Use zigbuild for easier cross-compilation

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Use zigbuild for easier cross-compilation

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Use zigbuild for easier cross-compilation

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix musl classifier / detection

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix musl classifier / detection

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Fix musl classifier / detection

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update docs

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Exclude arm musl test

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update arm runner

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Update go exclusion

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Format

Signed-off-by: Alex Rehnby-Martin <[email protected]>

---------

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* Revert go upload step change (#4716)

Signed-off-by: Alex Rehnby-Martin <[email protected]>

* CD: Fix Node CD delete artifact issue (#4717)

Signed-off-by: James Xin <[email protected]>

* CD: Fix Go musl CD issue (#4719)

Signed-off-by: James Xin <[email protected]>

* CD: Fix Node CD delete artifact issue 2nd try (#4718)

* CD: Fix Node CD delete artifact issue 2nd try

Signed-off-by: James Xin <[email protected]>

* Linter

Signed-off-by: James Xin <[email protected]>

* remove temporary testing

Signed-off-by: James Xin <[email protected]>

---------

Signed-off-by: James Xin <[email protected]>

* Python: Update ExpiryType enum references in hash field expiration docs (#4715)

python: Update ExpiryType enum references in hash field expiration docs

Replace deprecated ExpiryType enum values with new names in docstrings:
- EX → SEC
- PX → MILLSEC
- EXAT → UNIX_SEC
- PXAT → UNIX_MILLSEC
- KEEPTTL → KEEP_TTL

Updates documentation for hash field expiration commands in both async and sync clients.

Signed-off-by: affonsov <[email protected]>

* [Backport 2.1] Python sync/CD: added description to pypi package of the sync client (#4720)

Python sync/CD: added description to pypi package of the sync client (#4714)

added description to sync client

Signed-off-by: Lior Sventitzky <[email protected]>

* Java: Compatibility layer module (#4692)

* Java: Compatibility layer module

Signed-off-by: Prateek Kumar <[email protected]>

* Java: fix integration tests

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql for java code

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix codeql java build

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Update java cd

Signed-off-by: Prateek Kumar <[email protected]>

* Java: lint issues fixed

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Add signing configuration to jedis-compatibility build.gradle

Signed-off-by: Prateek Kumar <[email protected]>

* Java: update dependency

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Update valkey-glide-jedis-compatibility file path

Signed-off-by: Prateek Kumar <[email protected]>

* Java: Fix build.gradle publishing code

Signed-off-by: Prateek Kumar <[email protected]>

---------

Signed-off-by: Prateek Kumar <[email protected]>

* Fix: Copy GPG secring to jedis-compatibility in Java CD workflow (#4723)

fix(java-cd): copy secring.gpg to jedis-compatibility for signing

Signed-off-by: jbrinkman <[email protected]>

* [Backport 2.1] Python Sync: revert license format (#4732)

Python Sync: revert license format (#4731)

revert license format

Signed-off-by: Lior Sventitzky <[email protected]>

* Java: Fix Jedis compatibility layer valkey-glide dependency (#4737)

* Java: Fix Jedis compatibility layer valkey-glide dependency

Signed-off-by: Prateek Kumar <[email protected]>

* [Backport 2.1] Python: improve UDS socket error handling (#4733) (#4755)

Python: improve UDS socket error handling (#4733)

fixed uds error handling

Signed-off-by: Lior Sventitzky <[email protected]>
Co-authored-by: Lior Sventitzky <[email protected]>

---------

Signed-off-by: James Xin <[email protected]>
Signed-off-by: Alex Rehnby-Martin <[email protected]>
Signed-off-by: Prateek Kumar <[email protected]>
Signed-off-by: affonsov <[email protected]>
Signed-off-by: Lior Sventitzky <[email protected]>
Signed-off-by: Jeremy Parr-Pearson <[email protected]>
Signed-off-by: jbrinkman <[email protected]>
Co-authored-by: James Xin <[email protected]>
Co-authored-by: Alex Rehnby-Martin <[email protected]>
Co-authored-by: Alexey Temnikov <[email protected]>
Co-authored-by: prateek-kumar-improving <[email protected]>
Co-authored-by: affonsov <[email protected]>
Co-authored-by: Lior Sventitzky <[email protected]>
Co-authored-by: Jeremy Parr-Pearson <[email protected]>
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.

9 participants