Alice52 / common-api

this is spring common api
gitee.com
MIT License
1 stars 0 forks source link

fix(deps): update redisson.version to v3.37.0 #187

Open renovate[bot] opened 11 months ago

renovate[bot] commented 11 months ago

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
org.redisson:redisson-spring-data-21 (source) 3.17.7 -> 3.37.0 age adoption passing confidence
org.redisson:redisson-spring-boot-starter (source) 3.17.7 -> 3.37.0 age adoption passing confidence

Release Notes

redisson/redisson (org.redisson:redisson-spring-data-21) ### [`v3.37.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#02-Oct-2024---3370-released) Feature - `findCommon()` and `findCommonLength()` methods added to `RBucket` object\ Feature - `RMapCache.computeIfAbsent()` method with TTL parameter added (thanks to [@​lyrric](https://redirect.github.com/lyrric))\ Feature - Apache Tomcat `RedissonSessionManager.setConfig()` method added (thanks to [@​jglapa](https://redirect.github.com/jglapa))\ Feature - `LocalCachedMapOptions.useObjectAsCacheKey()` setting added (thanks to [@​lehuuthanh5](https://redirect.github.com/lehuuthanh5))\ Feature - `trySetRate()` and `setRate()` methods with TTL parameter added to `RRateLimiter` object\ Feature - `RKeys.getKeys()` method with type parameter added Improvement - `RRemoteService` method calls optimization Fixed - Spring Data Redis method `RedisSetCommands.isMember()` doesn't work\ Fixed - Spring Data Redis `xcaim()` and `xClaimJustId()` methods don't use getMinIdleTime() parameter (thanks to [@​jinia91](https://redirect.github.com/jinia91))\ Fixed - `retainAll()` and `containsAll()` methods of `RSet` object throw "too many results to unpack" error\ Fixed - `ServiceManager.execute()` method may hang in case of exception\ Fixed - `RedissonNode.shutdown()` method doesn't stop executors\ Fixed - listeners reattach process should be stopped on Redisson shutdown\ Fixed - `BiHashMap` usage removed\ Fixed - 100% CPU usage by CommandsQueue in rare cases\ Fixed - `ProtobufCodec` doesn't work with `CompositeCodec` ### [`v3.36.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#09-Sep-2024---3360-released) Feature - `Kryo5Codec` `useReferences` setting added\ Feature - `RListMultimapCacheNative` and `RSetMultimapCacheNative` objects added. Require Redis 7.4+\ Feature - `AggregationOptions.sortBy()` method with `withCount` parameter added (thanks to [@​pfyod](https://redirect.github.com/pfyod))\ Feature - `allowedClasses` setting added to `FuryCodec`\ Feature - `addIfAbsent(Map)` method added to `RSetCache` object (thanks to [@​lyrric](https://redirect.github.com/lyrric)) Improvement - 'hmget' should be instead of 'hget' in `RMapCache.getAllWithTTLOnly()` method Fixed - RedisExecutor throws "Failed to submit a listener notification task" error during shutdown\ Fixed - Keep the jmockit version in the plugin consistent with that in the dependencies (thanks to [@​lyrric](https://redirect.github.com/lyrric))\ Fixed - hostname after comma in Redis Cluster topology isn't parsed\ Fixed - `drainToAsync()` method returns an incorrect value (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - numeric cast in `CommandDecoder`\ Fixed - `RLiveObject` value shouldn't be deleted during index update\ Fixed - `RSetCache.addAllIfAbsent()` method doesn't work\ Fixed - missed `getSetMultimapCache()` and `getListMultimapCache()` methods in `RBatchReactive` object\ Fixed - missed `getMapCacheNative()` method in `RBatch` object\ Fixed - `MapValueDecoder` throws NPE\ Fixed - `EnumMap` type handling by `Kryo5Codec`\ Fixed - `Kryo5Codec` `registrationRequired` setting replaced with `allowedClasses`\ Fixed - JCache eviction task isn't removed on `close()` method invocation\ Fixed - missed `destroy()` method for `RListMultimapCache` and `RSetMultimapCache` objects ### [`v3.35.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#22-Aug-2024---3350-released) Feature - `INDEXEMPTY` option added to tag and text fields in `RSearch.createIndex()` method\ Feature - `INDEXMISSING` option added to all fields in `RSearch.createIndex()` method\ Feature - `StreamMessageId.LAST` option added\ Feature - `copy()` and `copyAndReplace()` methods added to `RObject` interface\ Feature - [Apache Fury](https://redirect.github.com/apache/fury) codec support\ Feature - `RSetCache` object supports `TrackingListener`, `SetAddListener` and `SetRemoveListener` listeners\ Feature - `RClusteredMapCacheNative` object implemented. Requires Redis 7.4+\ Feature - `RLocalCachedMapCacheNative` object implemented. Requires Redis 7.4+\ Feature - `localcache_native` and `clustered_native` implementations added to Quarkus module. Requires Redis 7.4+\ Feature - `RedissonClusteredCacheNative` and `RedissonLocalCachedCacheNative` implementations added to MyBatis module. Requires Redis 7.4+ Feature - `RedissonClusteredSpringCacheNativeManager` and `RedissonSpringLocalCachedCacheNativeManager` implementations added to Spring Cache module. Requires Redis 7.4+\ Feature - `RedissonClusteredNativeRegionFactory` and `RedissonLocalCachedNativeRegionFactory` added to Hibernate module. Requires Redis 7.4+\ Feature - `local-caches-native` and `clustered-caches-native` implementations added to Micronaut module. Requires Redis 7.4+ Improvement - `ProtobufCodec` memory allocation optimization\ Improvement - [Apache Fury](https://redirect.github.com/apache/fury) codec optimization (thanks to [@​chaokunyang](https://redirect.github.com/chaokunyang))\ Improvement - quarkus should make an attempt to read config file using Thread's ContextClassLoader\ Improvement - quarkus should make an attempt to read config file using Thread's ContextClassLoader (thanks to [@​seakider](https://redirect.github.com/seakider))\ Improvement - don't take lock for `RMap.computeIfAbsent()` if only get is needed (thanks to [@​shreyas-sprinklr](https://redirect.github.com/shreyas-sprinklr)) Fixed - writer, writeMode, writerAsync, writeBehindDelay, writeBehindBatchSize, loader, loaderAsync settings aren't applied to caches-native in Micronaut module\ Fixed - missed `caches-native` implementation for Micronaut 3.x and Micronaut 2.x\ Fixed - a new retry attempt to the same node isn't made for INFO_REPLICATION, SENTINEL_GET_MASTER_ADDR_BY_NAME, SENTINEL_SENTINELS, SENTINEL_SLAVES and CLUSTER_NODES commands\ Fixed - `RType.JSON` and `RType.STREAM` can't be resolved by `RKey.getType()` method\ Fixed - `RKeys.removeListener()` method doesn't remove `NewObjectListener` and `SetObjectListener`\ Fixed - `copy()` method doesn't works with db (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - `maven.compiler.release` setting isn't defined\ Fixed - `RSearch.info()` method throws `NumberFormatException` (thanks to [@​iamtakingiteasy](https://redirect.github.com/iamtakingiteasy))\ Fixed - timeout parameters defined per object aren't applied to `RJsonBuckets` and `RJsonBucket` objects\ Fixed - RedisException is thrown by `.removeAll()` and `.indexOf()` methods of `RedissonSubList` object (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - wrong event keyspace name for `MapCacheNative` object (thanks to [@​larryTheCoder](https://redirect.github.com/larryTheCoder))\ Fixed - missed `rename()` and `renamenx()` methods implementation for `RIdGenerator`, `RMapCache` and `RTimeSeries` objects\ Fixed - `Kryo5Codec` doesn't handle `UnmodifiableCollection`, `SynchronizedCollection` and `CheckedCollection`\ Fixed - `RRateLimiter` incorrect rate count in the event of an attempt to exceed the limit\ Fixed - `credentials-resolver`, `failed-slave-node-detector`, `command-mapper`, `name-mapper`, `nat-mapper` settings aren't recognized by Helidon and Quarkus\ Fixed - `RMultimapCacheReactive.expireKey()` method returns Single instead of Reactor Mono\ Fixed - `@RObjectField` annotation with codec option has no effect\ Fixed - an exception is thrown if the `@RObjectField` annotation is defined on a field\ Fixed - `RDestroyable.destroy()` method doesn't remove listeners\ Fixed - FailedSlaveNodeDetector's parameters by can't be defined in YAML config ### [`v3.34.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#31-Jul-2024---3341-released) Fixed - RObject.rename() method doesn't work in cluster ### [`v3.34.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#30-Jul-2024---3340-released) Feature - RJsonBuckets object added (thanks to [@​seakider](https://redirect.github.com/seakider))\ Feature - `remainTimeToLive(Set keys)` and `clearExpire(Set keys)` methods added to `RMapCacheNative` object\ Feature - `eval()` and `evalSha()` methods added to `RScript` object for execution on all nodes in Redis Cluster Improvement - performance optimization for Apache Tomcat Session management\ Improvement - default value of quietPeriod set to 0 in `RedissonClient.shutdown()` method\ Improvement - upgrade protobuf from 3.16.3 to 4.27.2 (thanks to [@​zzhlhc](https://redirect.github.com/zzhlhc)) Fixed - Apache Tomcat Session Manager throws CROSSSLOT Keys in request don't hash to the same slot (regression since 3.32.0)\ Fixed - empty partitions shouldn't be skipped in cluster topology scan\ Fixed - `ClusterConnectionManager.checkSlotsMigration()` method throws NPE\ Fixed - RSearch IndexInfoDecoder may throw NPE\ Fixed - local cached Map implementations don't emit cache clear event on `clear()` or `delete()` methods call\ Fixed - `RObject.rename()` method doesn't work in cluster\ Fixed - a new attempt to send a command should be made right after channel reconnection\ Fixed - 'race condition' while calling RLock.tryLock() method (thanks to [@​pad-master82](https://redirect.github.com/pad-master82))\ Fixed - Can't connect to servers error doesn't show exception reported during connection\ Fixed - `SeekableByteChannel.truncate()` method (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - `RMap.computeAsync()` method doesn't handle empty keys properly (thanks to [@​phrone](https://redirect.github.com/phrone)) ### [`v3.33.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#17-Jul-2024---3330-released) Feature - [RJsonStore](https://redirect.github.com/redisson/redisson/wiki/7.-distributed-collections/#​724-json-store) object added\ Feature - [RLocalCachedJsonStore](https://redirect.github.com/redisson/redisson/wiki/7.-distributed-collections/#​7241-json-store-local-cache) object added\ Feature - `RSearch.getIndexes()` method added\ Feature - `RedissonRegionNativeFactory` added for Hibernate module. Requires Redis 7.4+\ Feature - `RedissonSpringCacheNativeManager` implemented. Requires Redis 7.4+\ Feature - `RedissonCacheNative` implementation added for Mybatis cache. Requires Redis 7.4+\ Feature - `caches-native` cache type added to Micronaut module. Requires Redis 7.4+ Improvement - Spring Cache `RedissonCache.put()` method optimization **Breaking change - JsonCodec interface refactoring** Fixed - re-added master node isn't updated in Cluster topology\ Fixed - expiration time isn't set for Apacht Tomcat Manager `redisson:tomcat_notified_nodes` keys (thanks to [@​ehardy](https://redirect.github.com/ehardy))\ Fixed - RSearch `AggregationOptions.loadAll()` setting isn't applied\ Fixed - containsAll() method of RList, RQueue, RMultimap objects returns incorrect result (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - too many requests with small threads amount may cause OOM\ Fixed - connection leak during high load with few connections\ Fixed - RingBuffer#setCapacity, trim list incorrect (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - password shouldn't be printed in logs\ Fixed - encoded user/password in URL aren't accepted ### [`v3.32.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#24-Jun-2024---3320-released) Feature - Quarkus Cache implementation added\ Feature - `RMapCacheNative` implementation which uses Redis 7.4+ commands\ Feature - unlinkByPattern() method added to RKeys interface (thanks to [@​seakider](https://redirect.github.com/seakider)) Fixed - Apache Tomcat request.changeSessionId() method does not change the session id in Redis (thanks to [@​bclay2116](https://redirect.github.com/bclay2116))\ Fixed - RSearch parse params error (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - RSearch.info() throws `NumberFormatException` (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - cluster failover handling\ Fixed - last master node shouldn't be removed in cluster topology\ Fixed - duplicated master/slave added log output in sentinel mode\ Fixed - connection leak if master change operation failed during failover\ Fixed - `RxJava3` request can't be canceled\ Fixed - `RFairLock` doesn't calculate remaining ttl properly before next acquisition attempt\ Fixed - `scanInterval` setting check\ Fixed - `ElementsSubscribeService.resubscribe()` method throws `RedissonShutdownException`\ Fixed - `RMap.getAll()` method throws an exception if result of `RMap.keySet()` method passed as an argument\ Fixed - Redis node random selection doesn't work properly\ Fixed - concurrency problem during RLock expiration renewal (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - `RListMultimap` throws too many results to unpack error\ Fixed - entry shutdown during cluster slots migration check ### [`v3.31.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#31-May-2024---3310-released) Feature - Spring Boot 3.3.0 integration\ Feature - Spring Data Redis 3.3.0 integration\ Feature - allow retry of `NOREPLICAS` error (thanks to [@​ghollies](https://redirect.github.com/ghollies)) Improvement - `SequentialDnsAddressResolverFactory` default `concurrencyLevel` set to 2\ Improvement - `ThreadLocalRandom` replaced with `xoshiro256++` RNG to avoid collisions Fixed - cluster failover handling\ Fixed - cluster topology scan shouldn't be stopped by any exception\ Fixed - `RSetMultiMap` throws `too many results to unpack` error\ Fixed - append commands error when using batch mode (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - `ERR unknown command EVALSHA_RO` error shouldn't be logged\ Fixed - `TransactionalBucket#set(V, Duration)` `PSETEX` command is called before `MULTI` command (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - `CommandMapper` isn't applied to Lua scripts\ Fixed - incorrect connection release if `BatchOptions.executionMode` = `REDIS_WRITE_ATOMIC` or `REDIS_READ_ATOMIC` (thanks to [@​seakider](https://redirect.github.com/seakider))\ Fixed - `RFairLock` methods throw 'attempt to compare nil with number' error\ Fixed - Spring Data Redis `RedissonConnectionFactory.getSentinelConnection()` method throws error on the first offline sentinel\ Fixed - read mode = SLAVE isn't applied for `RSet.random()` methods\ Fixed - Keyspace notifications should be listened only on master nodes\ Fixed - `RListMultimap.removeAll()` method always deletes link to list\ Fixed - `RLockReactive` methods don't work in native image\ Fixed - Correctly update shutdown timeout after each step in connection manager shutdown (thanks to [@​MartinEkInsurely](https://redirect.github.com/MartinEkInsurely))\ Fixed - broken tck `JCache` tests\ Fixed - not all sentinels defined in the configuration are registered ### [`v3.30.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#10-May-2024---3300-released) Feature - `sslKeystoreType` setting added\ Feature - `RPatternTopic.getActiveTopic()` method added (thanks to [@​MasterShi](https://redirect.github.com/MasterShi))\ Feature - `RJsonBucket.merge()` method added\ Feature - Async, Rx, Reactive interfaces implemented for `RBloomFilter` object\ Feature - fallback mode for JCache\ Feature - [passwords encryption](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration#223-passwords-encryption) support\ Feature - [Spring Cloud Stream](https://redirect.github.com/redisson/redisson/wiki/14.-Integration-with-frameworks/#​149-spring-cloud-stream) integration Improvement - configuration variable defined as Java system property overrides environment variable Fixed - io.projectreactor package should be defined as optional in OSGi Manifest\ Fixed - Spring Data Redis `StreamPollTask.deserializeAndEmitRecords()` method throws NPE after failover\ Fixed - Spring Data Redis blocking poll commands can't be reattached after failover\ Fixed - Unable to find session error reported by `RedissonSessionManager`\ Fixed - Sentinels discovery is applied at Redisson startup if `sentinelsDiscovery = true`\ Fixed - master node is used for read operations after slave node addition if `readMode = SLAVE` in replicated mode\ Fixed - failover handling of blocking methods calls with defined timeout. RStream, RBlockingQueue objects\ Fixed - multiple `RLocalCachedMap` objects don't work in the same RTransaction (thanks to [@​vlad-ogol](https://redirect.github.com/vlad-ogol) [@​RajaJaisankar](https://redirect.github.com/RajaJaisankar))\ Fixed - codec setting isn't applied in `redisson.getMap(MapOptions)` method\ Fixed - Live Object field can't set to null value\ Fixed - `SentinelConnectionManager` stops scheduling topology change change / dns check after host resolution error\ Fixed - `RMapCache.fastPutIfExistsOperation()` method uses incorrect pubsub channel ### [`v3.29.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#22-Apr-2024---3290-released) Feature - `NewObjectListener` added to track created objects\ Feature - `NewObjectListener` and `SetObjectListener` can be registered with `RKeys.addListener()` method\ Feature - `subscribeOnElements()`, `subscribeOnLastElements()` and `subscribeOnFirstElements()` methods wait for `CompletionStage` to complete before polling the next element\ Feature - `shardedSubscriptionMode` setting added in Cluster configuration\ Feature - `RSemaphore.trySetPermits()` method with ttl parameter added\ Feature - `getDeletedIds()` method added to `RStream` `AutoClaimResult` object Improvement - responses map lock replaced with fine-grained entry locking in `RRemoteService` and `RScheduledExecutorService` Fixed - `RStream.autoClaim()` method throws ClassCastException\ Fixed - `RSearch` aggregate expression applied incorrectly\ Fixed - `LocalCachedMapDisabledKey` event is parsed incorrectly if local cache used with `RTransaction`\ Fixed - Slave node in cluster mode isn't shutdown properly if `readMode = MASTER` and `subscribeMode = MASTER` (regression since 3.27.2)\ Fixed - race condition during cluster topology update causes slave added/removed events\ Fixed - OSGi MANIFEST should define optional dependencies\ Fixed - `TimeoutException` is thrown if `connectionMinimumIdleSize = 0`\ Fixed - `ClassCastException` is thrown for Reactive/Rx RemoteService invocation if Redisson instance isn't Reactive/Rx\ Fixed - semaphore object is not deleted after `RLocalCachedMap.clearLocalCache()` method invocation\ Fixed - `AggregationOptions.groupBy()` setting with reducers used in `RSearch.aggregate()` method causes an exception\ Fixed - `AggregationOptions.groupBy()` setting usage with `RSearch.aggregate()` method causes an exception if reducers aren't defined\ Fixed - `AggregationOptions.sortBy()` setting usage with `RSearch.aggregate()` method causes an exception\ Fixed - resource leak error when executing multiple contains operation of `RSet` in transaction (thanks to [@​wynn5a](https://redirect.github.com/wynn5a))\ Fixed - jmockit upgraded to 1.52.0 inside maven-surefire-plugin (thanks to [@​roharon](https://redirect.github.com/roharon)) ### [`v3.28.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#10-Apr-2024---3280-released) Feature - [Multi Sentinel mode](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration/#​211-multi-sentinel-mode) implementation\ Feature - `RLocalCachedMapCacheV2` object implemented with effecient partitioning and advanced entry eviction\ Feature - graceful shutdown in quarkus (thanks to [@​naah69](https://redirect.github.com/naah69)) Improvement - `RLongAdder` and `RDoubleAddder` should use sharded topic if possible\ Improvement - reduced CPU and Memory consumption by `ClusterConnectionManager.getLastPartitonsByURI()` method\ Improvement - `RedisURI.hashCode()` caching to reduce CPU consumption\ Improvement - shutdown check added in `RTopic.removeListener()` method Fixed - incorrect detection of sharded pubsub support\ Fixed - `RBatch` does not work with RKeys.randomKeyAsync() method (thanks to [@​wynn5a](https://redirect.github.com/wynn5a))\ Fixed - unresolved Redis node hostname in cluster mode affects cluster topology scan\ Fixed - `MASTER` nodes aren't used if `readMode = MASTER_SLAVE`\ Fixed - `RLock`, `RFencedLock`, `RReadWriteLock` miss unlock messages and wait a defined timeout before a next attempt or hang\ Fixed - `RSemaphore`, `RPermitExpirableSemaphore` miss release messages and wait a defined timeout before a next attempt or hang\ Fixed - incorrect value of `RLongAdder.sum()` and `RDoubleAddder.sum()` methods if multiple Adder instances for the same Redisson object are used\ Fixed - `CountDownLatch.await()` method may throw NPE\ Fixed - ExecutionException handling in RExecutorService, RLock, RPermitExpirableSemaphore, RSemaphore objects\ Fixed - `ConcurrentModificationException` is thrown on RedissonSession save method if readMode = MEMORY\ Fixed - Spring Data Redis zPopMin() and zPopMax() methods don't work (thanks to [@​bimslab](https://redirect.github.com/bimslab)) ### [`v3.27.2`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#12-Mar-2024---3272-released) Feature - `RShardedTopic.countSubscribers()` method implemented\ Feature - `RedissonMultiLock` implements `isHeldByThread()` and `isHeldByCurrentThread()` methods Fixed - Multiple locking of RLock reset remainTimeToLive to config default\ Fixed - exception thrown by `natMapper` is not shown in logs\ Fixed - OSGi jdk.net package import should be optional\ Fixed - `ServiceManager.resolveAll()` method throws NPE\ Fixed - `RObject.addListenerAsync()` method throws `UnsupportedOperationException`\ Fixed - `StatusListener` doesn't work with `RShardedTopic`\ Fixed - NPE is thrown in cluster mode if slave node added\ Fixed - continuously reconnecting to a removed slave node in cluster mode\ Fixed - incorrect handling of TrackingListener removal\ Fixed - `FlushListener` receives duplicate events\ Fixed - `SlotsDecoder` throws NPE on empty result\ Fixed - Clash between RedissonCache and Spring (6.1+) Cache interface methods\ Fixed - `RedissonClient.shutdown()` method hangs at `serviceManager.getShutdownLatch()` invocation\ Fixed - "Failed to submit a listener notification task. Event loop shut down?" error caused by `PingConnectionHandler`\ Fixed - `JsonCodecWrapper` isn't cached properly ### [`v3.27.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#28-Feb-2024---3271-released) Feature - added `TrackingListener` support to `RList`, `RQueue`, `RDeque`, `RBlockingQueue`, `RBlockingDeque`, `RDelayedQueue`, `RRingBuffer` objects\ Feature - `addListener()`, `random()` methods added to `RLexSortedSet` object Improvement - show log warning "DNS TCP fallback on UDP query timeout disabled" if Netty version is lower 4.1.105\ Improvement - ChannelName.toString() conversion optimization Fixed - `retryInterval` and `retryAttempts` settings aren't applied in case of 'READONLY You can't write against a read only replica.' error\ Fixed - `RRemoteService` may cause CPU spike after Master failover\ Fixed - `FlushListener` causes `ClassCastException`\ Fixed - `TrackingListener` causes `ClassCastException`\ Fixed - `RedissonSetCache.addIfAbsentAsync()` uses incorrect argument for zadd (thanks [@​fooooxxxx](https://redirect.github.com/fooooxxxx)) ### [`v3.27.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#20-Feb-2024---3270-released) Feature - [client tracking](https://redirect.github.com/redisson/redisson/wiki/10.-additional-features/#​109-client-tracking-listener) support. `TrackingListener` is available for `RBucket`, `RStream`, `RScoredSortedSet`, `RSet`, `RMap` and `RBucket` objects\ Feature - added `RKeys.addListener()` method to register global listeners\ Feature - `FlushListener` added to track flushdb/flushall command invocation\ Feature - `Kryo5Codec` constructor with `registrationRequired` parameter added\ Feature - `nettyExecutor` setting added\ Feature - enable DNS TCP fallback when UDP query timeout for `RoundRobinDnsAddressResolverGroupFactory` and `SequentialDnsAddressResolverFactory` Improvement - cache result of `INFO REPLICATION` command for `RLock` objects Fixed - Spring Data Redis `ReactiveKeyCommands.pExpire()` method throws an exception\ Fixed - NPE is thrown by `RedisExecutor.handleError()` method\ Fixed - sharded pubsub detection for `Apache Tomcat Session Manager`, `RMapCache` and `RLocalCachedMap` objects\ Fixed - Redisson's threads aren't shutdown if Redis node address isn't defined\ Fixed - NPE is thrown while creating `RLocalCacheMap` object without WriteMode value\ Fixed - incorrect RESP3 protocol parsing causes `SlaveConnectionPool no available Redis entries` error\ Fixed - repeated new connections with AWS Elasticache serverless\ Fixed - internal `LRUCacheMap` object throws `ConcurrentModificationException` ### [`v3.26.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#12-Feb-2024---3261-released) Feature - enable DNS TCP fallback when UDP query timeout (thanks to [@​hellojukay](https://redirect.github.com/hellojukay))\ Feature - `StreamMessageId.autogenerateSequenceId()` method added (thanks to [@​mrmx](https://redirect.github.com/mrmx))\ Feature - `RLockReactive.isHeldByThread()` method added (thanks to [@​sanail](https://redirect.github.com/sanail)) Fixed - missed implementation of Spring Data Redis `ReactiveStringCommands.bitField()` method\ Fixed - Spring Data Redis `opsForCluster().randomKey()` method throws `UnsupportedOperationException`\ Fixed - `JCache.close()` method throws `IllegalStateException` if statistics enabled\ Fixed - doubled connections to the master node if `readMode = MASTER_SLAVE` or there are no slave nodes\ Fixed - `RSearch.delDict()` and `RSearch.addDict()` methods throw NPE\ Fixed - connection ping handler doesn't use `commandTimeout` setting\ Fixed - repeated new connections with AWS Elasticache serverless\ Fixed - `RLock` throws `ERR unknown command 'wait'` with AWS Elasticache serverless\ Fixed - `RSearchReactive.dropIndex()` method doesn't call onComplete() handler ### [`v3.26.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#16-Jan-2024---3260-released) Feature - ability to specify `retryInterval`, `retryAttempts`, `timeout` settings per Redisson object. Please refer to the [documentation](https://redirect.github.com/redisson/redisson/wiki/3.-operations-execution)\ Feature - `LocalCachedMapOptions.expirationEventPolicy` setting added\ Feature - `StreamAddListener`, `StreamCreateConsumerListener`, `StreamCreateGroupListener`, `StreamRemoveConsumerListener`, `StreamRemoveGroupListener`, `StreamRemoveListener`, `StreamTrimListener` listeners added for `RStream` object Fixed - Spring Data Redis `RedissonConnection.setCommands()` method returns null\ Fixed - continuously reconnecting to a removed slave node in cluster mode\ Fixed - `EntryExpiredListener` isn't invoked by `RMapCache` instance in Redis Cluster 7+ and if `nameMapper` is defined\ Fixed - `Skipped slave up ...` error is thrown in Sentinel mode if nodes use IPv6\ Fixed - NPE is thrown when adding or removing shards in ElastiCache\ Fixed - `RAtomicDouble`, `RAtomicLong`, `RMap`, `RScoredSortedSet`, `RSet` listeners aren't removed properly\ Fixed - connection isn't reconnected on `WRONGPASS` Redis error\ Fixed - connection timeout during Redisson start ignores connections amount\ Fixed - `RSearch.search()` method doesn't execute query with aliases properly\ Fixed - `FCALL_RO` command isn't used when `RFunction` method called with `FunctionMode.READ` parameter\ Fixed - `IllegalReferenceCountException` is thrown when canceling a method call\ Fixed - Redis scan cursor exceed `Long.MAX_VALUE` in AWS Elasticache\ Fixed - internal `ServiceManager.calcSHA()` method should use UTF-8 encoding by default ### [`v3.25.2`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#20-Dec-2023---3252-released) Fixed - SSL connection can't be established ### [`v3.25.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#18-Dec-2023---3251-released) Improvement - JDK21 Virtual Threads compatibility Fixed - EvictionTask keeps running even after `destroy()` method called\ Fixed - Sprint Data Redis throws `Subscription registration timeout exceeded`\ Fixed - Sprint Data Redis `RedisMessageListenerContainer.addMessageListener()` method hangs if called after container start\ Fixed - NPE is thrown if `lazyInitialization = true`\ Fixed - `PriorityQueue` methods may hang due to unreleased lock after exception\ Fixed - `RMap.getAll()` method throws `IndexOutOfBoundsException`\ Fixed - natMapper isn't applied to slaves and master nodes at start in Sentinel mode\ Fixed - method invocation hangs after failover if `retryInterval = 0`\ Fixed - transactional Map and MapCache keySet method returns inconsistent state\ Fixed - Multilock lock method doesn't work properly with non-MILLISECONDS TimeUnit ### [`v3.25.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#05-Dec-2023---3250-released) Feature - RESP3 protocol support. [protocol](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration#protocol) setting added\ Feature - Spring Data Redis 3.2.0 implementation\ Feature - `RSetCacheV2`, `RSetV2` objects with more effecient partitioning in Cluster added in [PRO](https://redisson.pro) version Improvement - SLF4j updated to 2.0.9 version Fixed - RFunction/RScript keys parameter accepts only String values\ Fixed - IP address instead of hostname is used in sentinel mode with SSL connection\ Fixed - Resources leak in `Version.logVersion()` method\ Fixed - `RLiveObjectService.persist()` method with varargs hangs in cluster mode\ Fixed - Redisson connection process may hang at start in some cases\ Fixed - `EntryExpiredListener` isn't invoked by RMapCache instance in Redis Cluster 7+\ Fixed - slave node in sentinel mode can't be recovered if it's a master node\ Fixed - `JsonJacksonCodec` fails to serialize Throwable on Java17 (thanks to [@​tomjankes](https://redirect.github.com/tomjankes))\ Fixed - `RBlockingDeque.move()` throws an exception for empty result\ Fixed - `RScoredSortedSet.pollFirstEntries(count)` and `pollLastEntries(count)` methods return wrong result\ Fixed - `BZMPOP` command timeout isn't applied\ Fixed - `getBlockingDeque()`, `getDeque()`, `getPriorityDeque()`, `getPriorityBlockingDeque()` throw `NoClassDefFoundError` if JDK version < 21\ Fixed - `RLocalCachedMap.containsKey()` method does not work properly if `storeCacheMiss = true`\ Fixed - `RedissonRemoteService` exceptions handling (thanks to [@​mrmx](https://redirect.github.com/mrmx))\ Fixed - `RSearch.info()` method throws `NumberFormatException`\ Fixed - `HttpSessionListener.sessionDestroyed()` method isn't called if Tomcat Session deleted by the node which didn't create it\ Fixed - `LZ4CodecV2` isn't compatible with `LZ4Codec`\ Fixed - `RSearch` GroupBy.reduce alias isn't applied (thanks to [@​arjunE1395](https://redirect.github.com/arjunE1395)) ### [`v3.24.3`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#24-Oct-2023---3243-released) Feature - Helidon 4.0 integration Fixed - `ERR invalid expire time` error is thrown during `RLock.unlock()` call if `retryAttempts = 0` ### [`v3.24.2`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#22-Oct-2023---3242-released) Fixed - `IllegalArgument timeout...` error is throw during Redisson shutdown\ Fixed - Intermittent Exception when creating `RLocalCachedMap` (regression since 3.24.1)\ Fixed - `RSearch.aggregate()` doesn't apply `withCursor()` and `sortBy()` options correctly\ Fixed - `MOVED redirection loop detected` error should be thrown only if both source and target addresses are equal ### [`v3.24.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#18-Oct-2023---3241-released) Feature - `writerRetryAttempts` and `writerRetryInterval` settings added to `MapOptions` object (thanks to [@​zzhlhc](https://redirect.github.com/zzhlhc))\ Feature - `RSortedSet` implements `RExpirable`\ Feature - `RBlockingQueue.pollFromAnyWithName()` method added\ Feature - `org.redisson.codec.LZ4CodecV2` codec based on apache commons-compress added\ Feature - Redis Cache async methods implementation introduced in Spring 6.1.0\ Feature - `tcpKeepAliveCount`, `tcpKeepAliveIdle`, `tcpKeepAliveInterval`, `tcpUserTimeout` settings added\ Feature - `subscriptionTimeout` setting added Fixed - `RedissonClient.shutdown()` method should be completed within timeout (thanks [@​dgolombek](https://redirect.github.com/dgolombek))\ Fixed - `RBuckets.trySet()`, `RBuckets.set()`, `RBuckets.get()`, `RKeys.touch()`, `RKeys.unlink()`, `RKeys.delete()`, `RKeys.countExists()` methods may hang after failover in Redis cluster\ Fixed - exceptions aren't wrapped in `CacheException` for `containsKey()`, `getAll()` and `removeAll()` methods of `JCache`\ Fixed - Command execution timeout for command: (PING)\ Fixed - `RBucketReactive.delete()` method doesn't work in Quarkus Native mode (thanks to [@​DicksengA](https://redirect.github.com/DicksengA))\ Fixed - auto configuration with Spring Boot 2.7.x+\ Fixed - `RSortedSet` doesn't work correctly if `NameMapper` object was specified\ Fixed - `RPriorityQueue` has incorrect lock name if `NameMapper` object was specified\ Fixed - `RMapCache.expireEntries()` and `expireEntry()` methods don't update `maxIdle` parameter properly\ Fixed - non-volatile `RedisConnection.lastUsageTime` field may cause incorrect idle time calculation\ Fixed - `attempt to unlock lock, not locked by current thread` error occurs in rare cases even if `RLock.unlock()` method called by lock owner thread\ Fixed - `RCountDownLatch` only notifying the first async listener after countdown reaches 0 (thanks to [@​Sinbios](https://redirect.github.com/Sinbios))\ Fixed - `RStream.trim()` and `trimNonStrict()` methods don't work with Redis 6.2+\ Fixed - `RReadWriteLock.readLock().isLocked()` method returns incorrect result if acquired by writeLock owner thread\ Fixed - `RedissonClient.getLiveObjectService()` method causes an attempt to connect to Redis if `lazyInitialization = true` ### [`v3.23.5`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#19-Sep-2023---3235-released) Feature - `failedSlaveNodeDetector` setting added to Cluster, Sentinel, Replicated, Master/Slave modes\ Feature - module name added to redisson jar (thanks to [@​KrogerWalt](https://redirect.github.com/KrogerWalt))\ Feature - `putAll()` method with TTL added to RMapCacheRx and RMapCacheReactive objects\ Feature - Fallback to TCP in case of a UDP DNS truncation\ Feature - `RMapCacheV2`, Spring `RedissonSpringCacheV2Manager` and Hibernate `RedissonRegionV2Factory` objects with more effecient partitioning in Cluster added in [PRO](https://redisson.pro) version Fixed - NPE is thrown by `RedissonAutoConfiguration` if Spring Boot 3.1+\ Fixed - `WeightedRoundRobinBalancer` doesn't support hostnames\ Fixed - NPE is thrown by CommandPubSubDecoder in rare cases\ Fixed - during connection initialization a new attempt isn't made for Busy, ClusterDown, TryAgain and Wait Redis errors\ Fixed - `RJsonBucket.getType()` method throws NPE if type is null\ Fixed - `IllegalStateException` is thrown if `RedisConnectionDetails` object registered in Spring Context with settings for Cluster or Sentinel\ Fixed - `RSearch` can not create Vector field\ Fixed - `RSearch` vector field doesn't support alias ### [`v3.23.4`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#29-Aug-2023---3234-released) Feature - methods for multiple permits support added to `RPermitExpirableSemaphore` object (thanks to [@​ikss](https://redirect.github.com/ikss))\ Feature - `ProtobufCodec` codec added (thanks to [@​dumbbell-5kg](https://redirect.github.com/dumbbell-5kg))\ Feature - `WAITAOF` command support through `BatchOptions.syncAOF()` setting\ Feature - `bgSave()`, `scheduleBgSave()`, `save()`, `getLastSaveTime()`, `bgRewriteAOF()`, `size()` methods added to `RedisNode` object Improvement - `RSemaphore` and `RLock` operations should have slave synchronization even if `readMode = MASTER` and `subscriptionMode = MASTER` Fixed - wrong order call of RSearch's `FieldIndex` tag `caseSensitive()` and `separator()` settings\ Fixed - `RedisConnectionDetails` object isn't used for Redisson configuration in Spring Boot 3.1+\ Fixed - incorrect `slots added`,`slots removed` messages in Redis Cluster mode\ Fixed - Tomcat Manager "Session can't be found" message should have debug level\ Fixed - `RBoundedBlockingQueue` can't be deleted if `nameMapper` was defined\ Fixed - `RLock` isn't unlocked after `RTransaction.commit()` ### [`v3.23.3`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#28-Jul-2023---3233-released) Feature - `TransportMode.IO_URING` added (thanks to [@​sgammon](https://redirect.github.com/sgammon))\ Feature - `LocalCachedMapOptions.useKeyEventsPattern()` setting introduced Improvement - Long as string cache in CommandEncoder (thanks to [@​tomerarazy](https://redirect.github.com/tomerarazy))\ Improvement - each `AddressResolver` created by `SequentialDnsAddressResolverFactory` should share common DnsCache and DnsCnameCache instances\ Improvement - RedisURI optimization (thanks to [@​ikss](https://redirect.github.com/ikss)) Fixed - codec errors during Quarkus native build\ Fixed - extra subscription topic allocation by `RLocalCachedMap` object (regression since 3.23.2) ### [`v3.23.2`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#28-Jul-2023---3232-released) Feature - Micronaut 4.0 integration Improvement - PubSub channels should be reconnected back to Slave from Master node if `SubscriptionMode = SLAVE` Fixed - Setting `retryAttempts` to 0 causes an exception (regression since 3.23.1)\ Fixed - `RTopic` subscribes only to a single master in cluster if `__keyspace` or `__keyevent` channel is defined\ Fixed - `SlaveConnectionPool no available Redis entries` error may arise in some cases\ Fixed - StackOverflowError is thrown by `AggregationOptions.groupBy()` method\ Fixed - `failedSlaveCheckInterval` value should be greater than zero before it can be applied\ Fixed - `RedissonLocalCachedMap.putAllOperation()` method throws `ClassCastException` if `SyncStrategy = UPDATE` ### [`v3.23.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#18-Jul-2023---3231-released) Improvement - the scope of key event subscriptions reduced for `RLiveObjectService` object. Now it uses key-space channel\ Improvement - the scope of key event subscriptions reduced for `RLocalCachedMap` object. Now it uses key-space channel Fixed - codecs defined via Spring Native application.properties file can't be recognized during application run\ Fixed - `retryAttempt` setting isn't applied during Redisson startup\ Fixed - Quarkus 2/3 native image can't be built\ Fixed - unknown property `quarkus.redisson.*` warnings in quarkus\ Fixed - Redisson settings defined in Quarkus application.properties file can't be used in native mode ### [`v3.23.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#10-Jul-2023---3230-released) Feature - added `RBloomFilter` `contains()` and `add()` methods with element collection support\ Feature - RMapCache and RLocalCachedMap should use sharded pubsub in Redis Cluster 7.0+\ Feature - [lazyInitialization](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration#lazyinitialization) setting added\ Feature - `expireEntryIfNotSet()`, `expireEntries()`, `expireEntry()`, `expireEntriesIfNotSet()` methods added to `RMapCache` object\ Feature - `MapCacheOptions` object with `removeEmptyEvictionTask()` setting introduced. Removes `RMapCache` eviction task from memory if map is empty upon entries eviction process completion **Breaking change - RMapCache and RLocalCachedMap should use sharded pubsub in Redis Cluster 7.0+**\ **Breaking change - RMapCache object uses MapCacheOptions object** Improvement - `RMapCache` shouldn't emit events if no listeners added Fixed - canceling tasks that scheduled with cron expression does not interrupt the thread (thanks to [@​zcxsythenew](https://redirect.github.com/zcxsythenew))\ Fixed - `RExecutorService` task response should be deleted if task was canceled\ Fixed - `RedisConnection.close()` method has private visibility\ Fixed - `ConcurrentModificationException` occasionally thrown during batch execution\ Fixed - `StringIndexOutOfBoundsException` is thrown if Redis port isn't defined in configuration\ Fixed - missed methods implementation of Spring Data Redis module: `zRevRangeByLex()`, `time(TimeUnit)`, `zRemRangeByLex()`, `zLexCount()`, `rewriteConfig()`, `zRangeStoreByLex()`, `zRangeStoreRevByLex()`, `zRangeStoreByScore()`, `zRangeStoreRevByScore()`, `flushDb()`, `flushAll()`, `replicaOf()`, `replicaOfNoOne()` Fixed - transactional `RMap.fastRemove()` method throws `UnsupportedOperationException`\ Fixed - `RBloomFilter` `contains()` and `add()` methods don't return accurate results if false probability is high\ Fixed - incorrect handling "unknown command" response for `RTopic` operations\ Fixed - `RLiveObjectService.delete(class, id)` method doesn't delete indexes\ Fixed - `RMultimapCache` throws an exception if entry removed before expiration moment\ Fixed - `keepPubSubOrder` setting isn't applied ### [`v3.22.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#19-Jun-2023---3221-released) Feature - Apache Tomcat Manager should use sharded pubsub in Redis Cluster 7.0+\ Feature - Micronaut Session store should use sharded pubsub in Redis Cluster 7.0+\ Feature - RClusteredScoredSortedSet object implemented\ Feature - `maxDeletedEntryId`, `entriesAdded`, `recordedFirstEntryId` properties added to `StreamInfo` object\ Feature - `inactive` property added to `StreamConsumer` object\ Feature - `LocalCachedMapOptions.cacheSize = -1` should disable local cache storage **Breaking change - Apache Tomcat Manager and Micronaut Session store now use sharded PubSub in Redis Cluster 7.0+** Fixed - map index entry isn't deleted when `RLiveObjectService` expires\ Fixed - `RMultimap.fastRemoveValue()` method doesn't delete entry completely if no values retain\ Fixed - Default getCache method checks for Object class equality (thanks [@​agupta-hw](https://redirect.github.com/agupta-hw))\ Fixed - `RScoredSortedSet.distributedIterator()` doesn't work (regression since 3.21.0)\ Fixed - Memory leak if `RLocalCachedMap` created with `storeMode=LOCALCACHE` and `syncStrategy=UPDATE` params\ Fixed - wait time handling in RedissonSpinLock (thanks [@​vladimirkl](https://redirect.github.com/vladimirkl))\ Fixed - java.lang.ClassCastException is thrown by RDequeReactive.pollLast() and RDequeReactive.pollFirst() methods (thanks [@​wynn5a](https://redirect.github.com/wynn5a))\ Fixed - `RSearch.search()` method throws "Parameters must be specified in PARAM VALUE pairs" error\ Fixed - `RRateLimiter.setRate()` method does not behave as expected when RateType is pre_client (thanks [@​wynn5a](https://redirect.github.com/wynn5a))\ Fixed - collection fields aren't deleted when `RLiveObject` expires or is deleted ### [`v3.22.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#05-Jun-2023---3220-released) Feature - Spring Data Redis 3.1.0 implementation\ Feature - Spring Boot 3.1.0 support\ Feature - `lastEntry()`, `firstEntry()`, `pollLastEntries()`, `pollFirstEntries()`, `entryIterator()`, `rankEntry()`, `revRankEntry()` methods added to `RScoredSortedSet` object\ Feature - `RCountDownLatch`, `RLock`, `RPermitExpirableSemaphore`, `RSemaphore` objects use sharded PubSub in Redis Cluster 7.0+\ Feature - `slavesSyncTimeout`, `commandMapper`, `sslCiphers`, `sslTrustManagerFactory`, `sslKeyManagerFactory` settings added\ Feature - `RMultimap.fastRemoveValue()` method added\ Feature - `allowedClasses` setting added to `SerializationCodec`\ Feature - `entriesRead` and `makeStream` parameters added to `RStream.createGroup()` method **Breaking change - RCountDownLatch, RLock, RPermitExpirableSemaphore, RSemaphore objects now use sharded PubSub in Redis Cluster 7.0+** Fixed - Expired LiveObjects with RIndex annotations retain indexed data\ Fixed - `RRingBuffer` doesn't implement `expire()`, `expireAt()`, `delete()`, `clearExpire()` methods properly\ Fixed - `RLocalCachedMap` local cache isn't cleared after instance expiration ### [`v3.21.3`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#18-May-2023---3213-released) Fixed - default retryInterval isn't applied to RBatch object\ Fixed - RBatches no longer respect the default number of retries (regression since 3.21.1) ### [`v3.21.2`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#17-May-2023---3212-released) Feature - `RBitSet.set(long[], boolean)` method added (thanks to [@​skasj](https://redirect.github.com/skasj)) Fixed - Pattern Topic messages are missed/duplicated after failover in cluster if channel starts with `__keyspace` and `__keyevent` and `subscriptionMode = SLAVE`\ Fixed - to many pubsub topics may cause memory leak\ Fixed - RBatches no longer respect the default number of retries (regression since 3.21.1) ### [`v3.21.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#11-May-2023---3211-released) Feature - `addIfAbsent()`, `addIfExists()`, `addIfGreater()`, `addIfLess()`, `addAll()`, `addAllIfAbsent()`, `addAllIfExist()`, `addAllIfGreater()`, `addAllIfLess()` methods added to `RSetCache` object\ Feature - `SetAddListener`, `SetRemoveListener`, `SetRemoveRandomListener` added to `RSet` object\ Feature - `ScoredSortedSetAddListener`, `ScoredSortedSetRemoveListener` added to `RScoredSortedSet` object\ Feature - `MapPutListener`, `MapRemoveListener` added to `RMap` object\ Feature - `IncrByListener` added to `RAtomicDouble` and `RAtomicLong` objects\ Feature - `RMapCache.getAllWithTTLOnly()` method added **Breaking change - RedissonDelayedQueue internal data format changed**\ **Breaking change - RedissonReliableTopic internal data format changed** Improvement - `RedissonReliableTopic` internal structure optimization Fixed - `RReliableTopic` data loss\ Fixed - failover isn't handled correctly in some cases\ Fixed - `BatchOptions.retryAttempts = 0` isn't applied to `RBatch` object\ Fixed - `RMap.keySet()` throws NPE if CompositeCodec used\ Fixed - RediSearch NumericFilter shouldn't set exclusive range by default\ Fixed - RediSearch NumericFilter throws NPE\ Fixed - `RLocalCachedMap.removeListener()` method doesn't remove loca cache listeners ### [`v3.21.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#29-Apr-2023---3210-released) Feature - [RediSearch module support](https://redirect.github.com/redisson/redisson/wiki/9.-distributed-services/#​96-redisearch-service)\ Feature - [Tracing support](https://redirect.github.com/redisson/redisson/wiki/16.-Observability/#​162-tracing)\ Feature - `RSetCache` extends `RSet` interface\ Feature - `RSemaphore` and `RPermitExpirableSemaphore` objects wait for sync operations completion\ Feature - Quarkus 3 support\ Feature - `LocalCacheUpdateListener` and `LocalCacheInvalidateListener` listeners support added to RLocalCachedMap object Improvement - `RRateLimiter` object uses 128-bit random\ Improvement - EVAL script cache applied to `RBatch` executed in `IN_MEMORY` mode\ Improvement - `RMap.keySet()` method shouldn't load map values\ Improvement - `SequentialDnsAddressResolverFactory` default concurrencyLevel set to 6 Fixed - `RMapCache.fastPut()` method doesn't clear ttl and idleTime params if entry reinserted after expiration\ Fixed - Unable to find session error arise if Tomcat session was deleted or expired\ Fixed - `MasterSlaveEntry.getClient()` method may throw NPE\ Fixed - initialize Decoders LinkedHashMap with correct initial size to avoid unnecessary resizing (thanks [@​theigl](https://redirect.github.com/theigl))\ Fixed - failover handling may cause temporary connections spike\ Fixed - `RedissonCache.invalidate()` method breaks cache configuration ### [`v3.20.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#28-Mar-2023---3201-released) Feature - `LoadBalancer.getEntry(List, RedisCommand)` method added\ Feature - [CommandsLoadBalancer](https://redirect.github.com/redisson/redisson/blob/master/redisson/src/main/java/org/redisson/connection/balancer/CommandsLoadBalancer.java) added\ Feature - NodeType parameter added to ConnectionListener methods Improvement - command should be redirected to a master node if slave node returns LOADING error Fixed - `NameMapper` is called twice when acquiring a `RReadWriteLock`\ Fixed - closing idle connections causes connection listener to fire\ Fixed - `Unable to init enough connections amount!` error\ Fixed - no retry attempts are made for `None of slaves were synced` error\ Fixed - `READONLY You can't write against a read only replica..` is thrown after failover in sentinel mode (thanks [@​alexworkgit](https://redirect.github.com/alexworkgit))\ Fixed - continuously attempts of `INFO REPLICATION` command execution until attempts limit reached by RLock object after failover\ Fixed - Node hasn't been discovered yet error isn't resolved by a new attempt for RBatch and RLock objects\ Fixed - `RedisClusterDownException`, `RedisLoadingException`, `RedisBusyException`, `RedisTryAgainException`, `RedisWaitException` are thrown by RBatch and RLock objects even if these errors disappeared after new attempts\ Fixed - `Unable to init enough connections amount! Only 0 of ... were initialized` error (thanks [@​alexworkgit](https://redirect.github.com/alexworkgit))\ Fixed - `nameMapper` isn't applied to some methods of `RSet` and `RScoredSortedSet` objects\ Fixed - `readUnion()`, `readDiff()` and `readIntersection()` methods of `RSet` object don't use Redis slave nodes ### [`v3.20.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#01-Mar-2023---3200-released) Feature - new [Multi cluster mode](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration/#​210-multi-cluster-mode) which supports [AWS Redis Global Datastore](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html) and [Azure Redis Cache active-passive replication](https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-how-to-geo-replication)\ Feature - [Proxy mode](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration/#​29-proxy-mode) supports [RLEC Active-Active databases](https://docs.redis.com/latest/rs/databases/active-active/get-started/)\ Feature - [monitorIPChanges](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration#monitoripchanges) setting added for replicated servers mode\ Feature - auto-detection of unavailable master in replicated mode (thanks [@​nicdard](https://redirect.github.com/nicdard)) Fixed - `RLock` can only be obtained by single redisson node if `None of slaves were synced` error occurred\ Fixed - `RSetMultimapReactive.get()` method throws `ClassCastException`\ Fixed - Redisson doesn't start in Spring Boot Native image\ Fixed - `RedissonClient.shutdown(long, long, TimeUnit)` method isn't overridden by cluster, replicated and sentinel managers\ Fixed - Node hasn't been discovered yet error isn't resolved by a new attempt for RBatch and RLock objects\ Fixed - `RMapCache.addAndGet()` method doesn't handle Long type properly\ Fixed - `eventLoopGroup`, `connectionListener` and `executor` settings can't be defined through YAML configuration\ Fixed - `keySet()`, `values()`, `entrySet()` methods of `RLocalCachedMap` return empty result if `storeMode == LOCALCACHE` ### [`v3.19.3`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#06-Feb-2023---3193-released) Fixed - a new attempt should be made on WAIT error during failover\ Fixed - Kryo5Codec fails to (de)serialize Object without no-args constructor (regression since 3.19.2) ### [`v3.19.2`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#01-Feb-2023---3192-released) Fixed - `RLock` instance can acquire lock with previous leaseTime if it's not specified\ Fixed - `RMap.computeAsync()` method causes deadlock if MapLoader is defined\ Fixed - `RBoundedBlockingQueue.offer()` methods always use global codec\ Fixed - Spring Boot `clientName` setting isn't used\ Fixed - `connectTimeout` setting is set incorrectly if Spring Boot 2.4.0+\ Fixed - command replies don't match if exception is thrown in CommandEncoder\ Fixed - empty result of BLMPOP command causes IndexOutOfBoundsException\ Fixed - canceled blocking operation isn't interrupted immediately in some cases\ Fixed - RStream.read() and RStream.readGroup() methods are hang forever is timeout > 0 and < 1000 milliseconds\ Fixed - `CacheLoader.loadAll()` method isn't called by `JCache.getAll()` method if readThrough=true\ Fixed - `Kryo5Codec` Serializers don't work in GraalVM native image mode\ Fixed - `LinkedHashMap` and `LinkedHashSet` objects can't be decoded properly by `Kryo5Codec`\ Fixed - `NameMapper` isn't applied to `RFunction` and `RScript` objects\ Fixed - `RFunction.callAsync()` method called with `RBatch` object throws `MOVED` errors in Redis cluster mode\ Fixed - `RFunction.loadAndReplace()` method uses incorrect command parameters\ Fixed - `codec`, `nettyHook`, `addressResolverGroupFactory`, `connectionListener` settings can't be defined through Quarkus or Helidon config\ Fixed - `RFunction.load()` method uses incorrect command parameters\ Fixed - empty `RTopic` message handling (thanks [@​MooRoakee](https://redirect.github.com/MooRoakee)) ### [`v3.19.1`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#06-Jan-2023---3191-released) Feature - `containsEach()` method added to RSet object (thanks to [@​slovvik](https://redirect.github.com/slovvik))\ Feature - `getPermits()`, `acquiredPermits()`, `setPermits()` methods added to `RPermitExpirableSemaphore` object (thanks to [@​kscaldef](https://redirect.github.com/kscaldef), [@​derekroller](https://redirect.github.com/derekroller)) **Breaking change - Kryo5Codec uses own serializators to serialize UUID, URI and Pattern objects** Fixed - `RReliableTopic` doesn't remove all expired subscribers at once\ Fixed - `RPatternTopic` messages duplication after failover in cluster if channel starts with `__keyspace@` and `__keyevent@`\ Fixed - `RBatch.getListMultimapCache()` method should return `RMultimapCacheAsync` interface\ Fixed - SharedPubSub listener isn't being triggered (thanks to [@​MrChaos1993](https://redirect.github.com/MrChaos1993))\ Fixed - `RSetCacheRx` and `RSetCacheReactive` miss `tryAdd()` method\ Fixed - `RSetRx` and `RSetReactive` objects miss `tryAdd()` method\ Fixed - `RBloomFilter` bitset can't be expired and deleted if `nameMapper` is used (thanks to [@​javed119](https://redirect.github.com/javed119))\ Fixed - `RMapCacheRx` and `RMapCacheReactive` interfaces miss `addListener()` method\ Fixed - `RMapCacheAsync` interface misses `addListenerAsync()` method\ Fixed - `RTopicAsync.addListenerAsync()` method uses wrong generic pattern for MessageListener object\ Fixed - `RPermitExpirableSemaphore` throws CROSSSLOT error in cluster if nameMapper is used ### [`v3.19.0`](https://redirect.github.com/redisson/redisson/blob/HEAD/CHANGELOG.md#16-Dec-2022---3190-released) Feature - implementation of Spring Cache methods added in Spring 5.2\ Feature - `entriesRead` and `lag` fields added to `StreamGroup` object\ Feature - added [RFencedLock](https://redirect.github.com/redisson/redisson/wiki/8.-distributed-locks-and-synchronizers/#​810-fenced-lock) implementation\ Feature - [credentialsResolver](https://redirect.github.com/redisson/redisson/wiki/2.-Configuration#credentialsresolver) setting added **Breaking change - default codec changed to Kryo5Codec** Fixed - new Redis node isn't discovered between PubSub subscription attempts\ Fixed - `codec`,`nettyHook`,`addressResolverGroupFactory`,`connectionListener` settings can't be defined through Micronaut config\ Fixed - evictions metrics doesn't work for RedissonCache (thanks [@​Nicola](https://redirect.github.com/Nicola) Dardanis)\ Fixed - PubSub connection isn't reused if it reached subscriptions limit before unsubscribe operation

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.



This PR was generated by Mend Renovate. View the repository job log.