Skip to content

Refactor master/slave terminology to primary/replica #3463#3608

Open
yeong0jae wants to merge 207 commits into
redis:mainfrom
yeong0jae:refactor/master-slave-to-primary-replica
Open

Refactor master/slave terminology to primary/replica #3463#3608
yeong0jae wants to merge 207 commits into
redis:mainfrom
yeong0jae:refactor/master-slave-to-primary-replica

Conversation

@yeong0jae
Copy link
Copy Markdown

Deprecated master/slave terminology and added primary/replica alternatives across the codebase.
#3463

  • Deprecated old APIs (not removed) for backward compatibility
  • Added new primary/replica naming APIs
  • Created io.lettuce.core.primaryreplica package
  • Updated docs and examples

Make sure that:

  • You have read the contribution guidelines.
  • You have created a feature request first to discuss your contribution intent. Please reference the feature request ticket number in the pull request.
  • You applied code formatting rules using the mvn formatter:format target. Don’t submit any formatting related changes.
  • You submit test cases (unit or integration tests) that back your changes.

uglide and others added 30 commits August 1, 2025 10:11
* Add support for 8.2 stream commands

- Add support for XDELEX and XACKDEL
- Extend XADD and XTRIM to support trimming policy

* Add @SInCE tags

* Update NodeSelection API

* Add StreamEntryDeletionResult.UNKNOWN to avoid throwing exceptions

* Clean up RedisCommandBuilder

- Remove redundant code blocks
- Use CommandKeyword for IDS
- Add unit tests

* Fix broken test
* test: remove redundant assertions and clarify time-related values with constants

* test: remove redundant assertions and clarify time-related values with constants

* test: remove redundant assertions and clarify time-related values with constants
* RediSearch support (part 1 of 3) (redis#3325)

* Revert "Revert "Add support for FT.CREATE redis#2717 (redis#3150)" (redis#3160)" (redis#3161)

This reverts commit 319e315.

* Add support for FT.DROPINDEX redis#2722 (redis#3164)

* Add support for FT.DROPINDEX redis#2722

* Polishing

* FT.SEARCH added

Vibe code the FT.SEARCH command
Pulled latest from the integration branch

Fixed a lot of the hallucinations

RESP2 parser improvements

JSON Indexing tests

Add some advanced use-cases

Fixed all integration tests

Fixed schema fields, added vector tests, but they are all failing

Fixed vector search tests

Improve coverage of integration and unit tests

One unit test fails

* API cleanup, added Kotlin implementation

* Implement the FT.AGGREGATE command

Fixing the integration tests for FT.AGGREGATE

Polishing 1/3

Add more documentation ot the AggregateArgs

* Implement the FT.CURSOR command

Add Integration tests for the FT.CURSOR

Add RESP2 tests for all aggragation integration tests

* FT.AGGREGATE was never working in the first place, now it is working, but for RESP3 only

* Fixing unit tests (part1)
Fixing unit tests (part2)
Fixing unit tests (part3)

* Polishing (part 1)

* RediSearch support (part 2 of 3) (redis#3360)

Introducing the FT.ALTER

Introducing the FT.ALIASADD, FT.ALIASUPDATE, FT.ALIASDEL

Introducing the FT.TAGVALS

* RediSearch support (part 3 of 3) (redis#3364)

* Introducing the FT.SUGADD FT.SUGDEL FT.SUGGET and FT.SUGLEN

* Introducing the FT.DICTADD, FT.DICTDEL, FT.DICTDUMP

* Introducing the FT.SPELLCHECK

* Introducing the FT.SPELLCHECK (polishing)

* Introducing the FT.EXPLAIN, FT.SYNUPDATE, FT.SYNDUMP, FT._LIST

* Introducing the FT.PROFILE

Polishing 1

Polishing 1

* Polishing 2

* Removing the FT.PROFILE command entirely

* Polishing 3

* Polishing 4

* RediSearch with Lettuce - final fixes (redis#3371)

* Fix wrong aggregation arguments order
Docs part (to squash later)
Modified CreateArgs and SearchArgs
Address review comments 1/many
Addressed review comment by Igor, more polishing

* Cluster tests

* Extend wordlist

* Extend wordlist 2

* Avoid NPE when empty result received

* Avoid NPE when empty result received 2

* Disable cluster tests for 7.2 and 7.4
* Provide support for the SVS-VMANA index

* Enable VAMANA tests for Redis 8.2+
* reuse-objectmapper-defaultjsonparser

Refactor DefaultJsonParser to use a single static ObjectMapper instance instead of creating new instances for each method call, improving performance and memory usage.

* Allow injection of custom ObjectMapper in DefaultJsonParser

* Add JavaDoc

---------

Co-authored-by: Tihomir Mateev <[email protected]>
* Releasing 6.8.0.RELEASE

* Expanding the evergrowing wordlist

* Expanding the evergrowing wordlist 2
…re (redis#3328) (redis#3346)

* chore: remove deprecated ClientOptions#cancelCommandsOnReconnectFailure
- removed the option from ClientOptions and ClusterClientOptions and related builders
- removed usages from integration tests and unit tests
- removed usage from ReconnectionHandler and DefaultEndpoint

Signed-off-by: The-East-Wind <[email protected]>

* Also remove the documentation on the cancelCommandsOnReconnectFailure option

---------

Signed-off-by: The-East-Wind <[email protected]>
Co-authored-by: Tihomir Mateev <[email protected]>
…dis#3328) (redis#3344)

* chore: remove deprecated AbstractRedisClient#getDefaultTimeout
- remove usages from RedisClient and replaced with timeout value from redisUri
- fixed failing tests in RedisClientConnectIntegrationTests by asserting timeout to be equal to default timeout from RedisURI
- refactored DefaultRedisClient test fixture to not set timeout

Signed-off-by: The-East-Wind <[email protected]>

* chore: remove deprecated default timeout from AbstractRedisClient
- refactor AtLeastOnce and AtMostOnce IntegrationTests to remove setting timeout on the client level and instead set it in the URI level
- removed default timeout and usages which set it from AbstractRedisClient, RedisClient and RedisClusterClient

Signed-off-by: The-East-Wind <[email protected]>

* docs: update relevant documentation to remove usage of RedisClient#setDefaultTimeout

Signed-off-by: The-East-Wind <[email protected]>

---------

Signed-off-by: The-East-Wind <[email protected]>
* Remove deprecated withPassword(String) method

* Completely remove all deprecated logic in the RedisURI class

---------

Co-authored-by: Tihomir Mateev <[email protected]>
* Enable adaptive refresh by default redis#3249

* Added @SInCE

* Fix integration test [incomplete]

* Add also fix to issue 3250

* Change default to 5 seconds

* Remove unnecessary new line
…edis#3279)

* Using non-native transports with SocketOptions should cause an error

* Add LettuceAssert.assertState

Revert previous implement
* Bump kotlin.version from 1.7.21 to 1.9.25

Bumps `kotlin.version` from 1.7.21 to 1.9.25.

Updates `org.jetbrains.kotlin:kotlin-bom` from 1.7.21 to 1.9.25
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v1.9.25/ChangeLog.md)
- [Commits](JetBrains/kotlin@v1.7.21...v1.9.25)

Updates `org.jetbrains.kotlin:kotlin-maven-plugin` from 1.7.21 to 1.9.25

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlin:kotlin-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Minimum language and api level is now 1.4

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tihomir Mateev <[email protected]>
…edis#3266)

- Changed constructor to private to prevent instantiation
* Update redis-search.md dialect_2=> dialect2, CreateArgs.TargetType.HASH instead of IndexDataType.HASH

* Polishing + added some more information on query dialects

---------

Co-authored-by: Tihomir Mateev <[email protected]>
github-action-benchmark and others added 28 commits December 20, 2025 01:59
…#3585)

* Update NIO event loop creation to use Netty 4.2 API redis#3584

After upgrading to Netty 4.2 in redis#3405, the NIO event loop creation in
DefaultEventLoopGroupProvider still used the old Netty 4.1 API
(new NioEventLoopGroup()), which creates event loops incompatible with
applications using Netty 4.2's new IO model.

This commit introduces NioProvider following the same pattern as
EpollProvider, KqueueProvider, and IOUringProvider. The provider creates
NIO event loop groups using MultiThreadIoEventLoopGroup with
NioIoHandler.newFactory(), ensuring compatibility with Netty 4.2.

Fixes redis#3584

* Fix test to handle MultiThreadIoEventLoopGroup redis#3584

The test was expecting NioEventLoopGroup but now we return
MultiThreadIoEventLoopGroup (Netty 4.2 API). Updated the test to use
EventLoopGroup interface instead of the concrete type.

* Fix DefaultClientResourcesUnitTests for MultiThreadIoEventLoopGroup redis#3584

Updated tests to use MultithreadEventLoopGroup instead of NioEventLoopGroup
for variables that need to call executorCount(). The allocate() method now
returns MultiThreadIoEventLoopGroup (Netty 4.2 API) instead of
NioEventLoopGroup.

* Apply code formatting to DefaultClientResourcesUnitTests redis#3584

* Add Netty 4.2 compatibility test case redis#3584

* Stop using deprecated NioEventLoopGroup.class in favor of NioProvider redis#3584

- Updated DefaultEventLoopGroupProvider to use NioProvider.getResources().matches() instead of explicit NioEventLoopGroup.class check
- Updated Transports.eventLoopGroupClass() to return NioProvider.getResources().eventLoopGroupClass() instead of NioEventLoopGroup.class
- This removes all references to the deprecated NioEventLoopGroup.class from the main source code (except in NioProvider.matches() for backward compatibility)

* Reorder eventLoop groups

---------

Co-authored-by: Aleksandar Todorov <[email protected]>
@jit-ci
Copy link
Copy Markdown

jit-ci Bot commented Jan 11, 2026

Hi, I’m Jit, a friendly security platform designed to help developers build secure applications from day zero with an MVS (Minimal viable security) mindset.

In case there are security findings, they will be communicated to you as a comment inside the PR.

Hope you’ll enjoy using Jit.

Questions? Comments? Want to learn more? Get in touch with us.

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.