Skip to content

Commit

Permalink
Update changelog #2529
Browse files Browse the repository at this point in the history
  • Loading branch information
mp911de committed Nov 15, 2023
1 parent f2717e6 commit 14fa0b0
Showing 1 changed file with 94 additions and 122 deletions.
216 changes: 94 additions & 122 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
Lettuce 6.2.0 RELEASE NOTES
Lettuce 6.3.0 RELEASE NOTES
==============================

The Lettuce team is delighted to announce general availability of Lettuce 6.2.
The Lettuce team is delighted to announce general availability of Lettuce 6.3.

This is a massive release thanks to all the community contributions. Most notable changes
that ship with this release are:
This release ships with support for Observability through Micrometer Tracing that has been
ported from Spring Data into Lettuce directly. Another infrastructure change is to report
the driver version and driver name to Redis through `CLIENT SETINFO` if the Redis version
is 7.2 or later using RESP3.

* Support for Redis 7.0 commands and modifier/argument updates
This release ships also with refinements around Cluster Topology refresh to suspend
periodic refresh. This is useful for JVM Checkpoint-Restore arrangements (Project CRaC)
to ensure that no background activity opens connections.

This release also upgrades to Kotlin 1.7 as baseline.

Lettuce 6 supports Redis 2.6+ up to Redis 7.x. In terms of Java runtime, Lettuce requires
at least Java 8 and works with Java 18.
at least Java 8 and works with Java 21.

Thanks to all contributors who made Lettuce 6.2.0 possible.
Thanks to all contributors who made Lettuce 6.3.0 possible.

If you need any support, meet Lettuce at

Expand All @@ -20,133 +26,99 @@ If you need any support, meet Lettuce at
* Join the chat at https://gitter.im/lettuce-io/Lobby for general discussion
* GitHub Issues (Bug reports, feature
requests): https://github.com/lettuce-io/lettuce-core/issues
* Documentation: https://lettuce.io/core/6.2.0.RELEASE/reference/
* Javadoc: https://lettuce.io/core/6.2.0.RELEASE/api/
* Documentation: https://lettuce.io/core/6.3.0.RELEASE/reference/
* Javadoc: https://lettuce.io/core/6.3.0.RELEASE/api/

Commands
------------
--------

* Add support for `double` timeouts for `BZPOP` and `BLPOP`/`BRPOP` commands #1772
* Add support for `SINTERCARD` #1902
* Add support for `LMPOP` and `BLMPOP` commands #1903
* Add support for `CLUSTER DELSLOTSRANGE` and `CLUSTER ADDSLOTSRANGE` commands #1904
* Add NX/XX/GT/LT options to `EXPIRE` commands #1905
* Add support for `ZINTERCARD` command #1982
* Add support `NOW`, `FORCE` and `ABORT` args for `SHUTDOWN` command #1985
* Add support for EVAL_RO and EVALSHA_RO commands #1987
* Support `CONFIG GET/SET` with multiple parameters #1988
* Add support for CLIENT NO-EVICT command #1989
* Add support for ACL DRYRUN command #1992
* Add support for `REPLICAOF` and `CLUSTER REPLICAS` commands #2020
* Add support for `CLUSTER SHARDS` command #2025
* Add support for `XGROUP … ENTRIESREAD` #2141
* Add support for `EXPIRETIME` and `PEXPIRETIME` #2142
* Assert Redis 7.0 compatibility #2143
* Add support for `SENTINEL REPLICAS` command #2144
* Add support for `SORT_RO` #2145
* Add `WITHSCORE` option to `ZRANK` and `ZREVRANK` commands #2410
* Add support for `CLIENT SETINFO`, `CLIENT INFO`, and enhanced `CLIENT LIST` #2439
* ZMPOP and BZMPOP commands #2435
* Support 'FCALL' commands to Call Lua-scripts that are loaded as Function in redis #2185

Enhancements
------------

* Allow configuring a default ThreadFactoryProvider to create ClientResources #1711
* Introduce API to allow for extending RedisClusterClient and its connections #1754
* Password Rotation support - Add a CredentialProvider interface/class and set your own
provider #1774
* Emit command latency events using JFR #1820
* Support RedisConnectionStateListener registration for individual connection #1838
* NodeSelection `dispatch` output gets reused #1876
* Specify concrete scheduler name #1898
* Avoid routing to cluster replicas that are loading data #1923
* Introduce `nodeFilter` `Predicate` to filter `Partitions` #1942
* Add exception type for `READONLY` errors #1943
* Do not use pause detector for `CommandLatencyCollector` by default #1995
* Rename `ReadFrom.NEAREST` to `LOWEST_LATENCY` to clarify its functionality #1997
* Deprecate connection-related methods on commands API #2028
* Promote `AsyncCloseable` to public API #2030
* Improving performance of RedisAdvancedClusterAsyncCommandsImpl::mget #2042
* Redis cluster refresh of large clusters keeps I/O threads busy #2045
* Reduces overhead of RedisClusterNode.forEachSlot #2058
* Implement `AutoCloseable` in `AbstractRedisClient` #2076
* StatefulRedisClusterConnectionImpl getConnection always calls connection provider with
Intent.WRITE #2095
* Assert Redis 7.0 compatibility #2143
* Add support for disconnect on timeout to recover early from no `RST` packet failures
#2082
* Avoid buffer copies in `RedisStateMachine` #2173
* Make SlotHash utility methods public #2199
* Improve `AdaptiveRefreshTriggeredEvent` to provide the cause and contextual details
#2338
* Refine `RedisException` instantiation to avoid exception instances if they are not used
#2353
* Add capability of FailOver with takeOver option #2358
* Add option to disable tracing for individual commands #2373
* ReplicaTopologyProvider can't parse replicas from INFO #2375
* Add support for Micrometer Tracing #2391
* Add Command filter to `MicrometerCommandLatencyRecorder` #2406
* Expose methods to suspend periodic topology refresh and to check whether a topology
refresh is running #2428
* Accept Double and Boolean in `MapOutput` #2429
* Array lists with set capacities in SimpleBatcher #2445
* Add fallback to RESP2 upon `NOPROTO` response #2455
* Introduce generic Object output #2467
* Propagate initialization failures from `ChannelInitializer` #2475
* Register library name and library version on Redis 7.2 or greater #2483
* Add support for cluster-announced hostname #2487

Fixes
-----

* Could not initialize JfrConnectionCreatedEvent #1767
* Fix potential null-dereference in CommandHandler #1703
* Cannot refresh Redis Cluster topology #1706
* `RedisPubSubCommands`,`RedisClusterPubSubCommands`, and other types missing
in `reflect-config.json` #1710
* Additional Redis PubSub types missing from reflect-config.json #1737
* AbstractRedisClient#shutdown() never ends when Redis is unstable #1768
* Closing ClusterNodeEndpoint asynchronously doesn't retrigger buffered commands #1769
* CopyArgs should honor replace parameter value instead of doing null check only #1777
* Exception thrown during RedisClusterClient shutdown #1800
* SSL CN name checked failed after Redis Sentinel failover #1812
* `ClassCastException` when no `LATENCY_UTILS_AVAILABLE` or `HDR_UTILS_AVAILABLE` #1829
* Static command interface methods are erroneously verified against command names #1833
* Coroutine commands that result in a `Flow` can hang #1837
* Fix `ACL SETUSER` when adding specified categories #1839
* Fix `ACL SETUSER` when setting noCommands #1846
* `ACL SETUSER` not retaining argument order #1847
* io.lettuce.core.protocol.CommandExpiryWriter cannot be cast to
io.lettuce.core.protocol.DefaultEndpoint #1882
* Attempting to execute commands during a JVM shutdown will cause a
RedisConnectionFailureException / IllegalStateException: Shutdown in progress #1883
* Tracing incorrect when command execute timeout #1901
* Run flush commands with `FlushMode` on upstreams only #1908
* `RoundRobinSocketAddressSupplier` is not refreshing when `RedisURI` changes #1909
* `ClientResources.mutate()` leads to `DefaultClientResources was not shut down properly`
if the original instance is GC'd #1917
* `BoundedPoolConfig` with `-1` as `maxTotal` does not work as unlimited pool #1953
* `CommandArgs` using `Long.MIN_VALUE` results in `0` #2019
* `SslClosedEngineException` thrown after exceeding connection init timeout #2023
* `NodeTopologyView` passes null-Value to `StringReader` constructor #2035
* `MasterReplicaConnectionProvider` with zero connections
causes `IllegalArgumentException` #2036
* `DefaultCommandLatencyCollector.PauseDetectorWrapper` defines `PauseDetector` in method
signatures #2056
* decorrelatedJitter and fullJitter delay calculation overflows #2115
* XPending command cannot be called with IDLE param without defining CONSUMER #2132
* Routing XREADGROUP command in Redis cluster #2140
* Ensure `PooledClusterConnectionProvider` uses correct write-connection #2146
* CommandHandler's validateWrite method has a calculated overflow problem #2150
* Proper creation of `AttributeKey` #2111
* INFO response parsing throws on encountering '\' on NodeTopologyView #2161
* `PartitionSelectorException` during refresh of `Partitions` #2178
* RedisURI.Builder#withSsl(RedisURI) not working with SslVerifyMode#CA #2182
* SMISMEMBER is not marked a readonly command #2197
* Eval lua script expects return integer but null #2200
* `ZRANGESTORE` does not support by Rank comparison #2202
* zrevrangestorebylex/zrevrangestorebyscore range arguments flipped #2203
* Own `RedisCredentialsProvider` causes issue with protocol handshake on Redis 5 #2234
* NullPointerException if INFO command on redis cluster fails #2243
* XTrimArgs Should Allow Limit = 0 #2250
* The hostname and password cannot parse even if escaping with RedisURI redis-sentinel the
password include '@' and '#' #2254
* Fix password parsing error when redis-sentinel URI contains @ #2255
* Handle unknown endpoints in MOVED response #2290
* Fallback to RESP2 hides potential authentication configuration problems #2313
* Accept slots as String using `CLUSTER SHARDS` #2325
* `RedisURI.applySsl(…)` does not retain `SslVerifyMode` #2328
* Apply `SslVerifyMode` in `RedisURI.applySsl(…)` #2329
* Fix long overflow in `RedisSubscription#potentiallyReadMore` #2383
* Consistently implement CompositeArgument in arg types #2387
* Reactive Cluster `MGET` is not running in parallel #2395
* Polish RedisObservation name & javadoc #2404
* `memory usage` command passes key as `String` instead of using the codec #2424
* Fix NPE when manually flushing a batch #2444
* `flushCommands` leads to random inbound command order when using large argument values
with SSL #2456
* `CommandListener` notified twice on error #2457
* `RoleParser` does not define `none`, `handshake`, and `unknown` replica states #2482
* StatefulRedisClusterPubSubConnectionImpl's activated() method will report exception
after resubscribe() was call. #2534

Other
-----

* Edit wiki for versioned pages #1699
* RedisURI: improve deprecation notice in withPassword() #1707
* Improve kotlin api generator to provide replacement for a deprecated method #1759
* cancelCommandsOnReconnectFailure should have appropriate warnings. #1787
* Upgrade to Reactor 3.4 #1804
* Upgrade to Commons Pool 2.10.0 #1805
* Upgrade to Micrometer 1.7 #1806
* Upgrade to Kotlin 1.5 #1807
* Dependency upgrades #1808
* Fixed obvious typo in MicrometerOptions.Builder.minLatency(Duration) #1826
* Upgrade dependencies #1853
* Upgrade build to Java 17 #1854
* Deprecate `AbstractRedisClient.setDefaultTimeout(…)` to avoid ambiguity
with `RedisURI.getTimeout()` #1868
* Replace reactor's deprecated API #1885
* A question about the letuce CI project view #1914
* Bump log4j-core to 2.15.0 #1934
* Upgrade log4j to 2.17 to address CVE-2021-45105 #1941
* Extend copyright license years to 2022 #1952
* `RedisCoroutinesCommands` calls are locked after calling multi() #1954
* Add tests for Sentinel with ACL authentication #1956
* Fix Javadoc link in README #1959
* Upgrade dependencies #1962
* Docs have some minor spacing and grammar issues #1993
* Fix a little typo #2003
* Use HTTPS for links #2026
* Separate profile to support m1 chip #2043
* Bump netty to fix vulnerability issue #2098
* Move off deprecated `DirectProcessor` API #2136
* Upgrade to Netty 4.1.79.Final #2153
* Upgrade to Micrometer 1.9.2 #2154
* Upgrade to Reactor 3.4.21 #2155
* Upgrade to Reactive Streams 1.0.4 #2156
* Improve Document on pingBeforeActivateConnection #2138
* Improve Document on dynamicRefreshSources #2139
* Fixes typo in ReadFrom #2213
* Fix duplicate word occurrences #2307
* Update netty.version to 4.1.89.Final #2311
* Avoid using port 7443 in Lettuce tests #2326
* Upgrade to Reactor 3.4.27 #2330
* Fix Set unit test sscanMultiple fail in redis7 #2349
* README.md demo has a error #2377
* Upgrade to Kotlin 1.7 #2392
* Upgrade to Netty 4.1.94.Final #2431
* Update SetArgs.java builder method param comment #2441
* Use enum for no-op `PauseDetectorWrapper` #2474
* Upgrade build to Redis 7.2 #2481
* Refine command outputs to capture whether a segment has been received instead of relying
on the deserialized value state #2498
* Upgrade to Reactor 3.6.0 #2517
* Docs on metrics (wiki) are misleading #2538
* Upgrade to Micrometer 1.12.0 #2549
* Upgrade to netty 4.1.101.Final #2550

0 comments on commit 14fa0b0

Please sign in to comment.