Releases: redisson/redisson
redisson-3.35.0
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 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 codec optimization (thanks to @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)
Improvement - don't take lock for RMap.computeIfAbsent()
if only get is needed (thanks to @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)
Fixed - maven.compiler.release
setting isn't defined
Fixed - RSearch.info()
method throws NumberFormatException
(thanks to @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)
Fixed - wrong event keyspace name for MapCacheNative
object (thanks to @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
redisson-3.34.1
Fixed - RObject.rename()
method doesn't work in cluster
redisson-3.34.0
Feature - RJsonBuckets object added (thanks to @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)
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)
Fixed - Can't connect to servers error doesn't show exception reported during connection
Fixed - SeekableByteChannel.truncate()
method (thanks to @seakider)
Fixed - RMap.computeAsync()
method doesn't handle empty keys properly (thanks to @phrone)
redisson-3.33.0
Feature - RJsonStore object added
Feature - RLocalCachedJsonStore 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)
Fixed - RSearch AggregationOptions.loadAll()
setting isn't applied
Fixed - containsAll() method of RList, RQueue, RMultimap objects returns incorrect result (thanks to @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)
Fixed - password shouldn't be printed in logs
Fixed - encoded user/password in URL aren't accepted
redisson-3.32.0
Feature - Quarkus Cache implementation added
Feature - RMapCacheNative
implementation which uses Redis 7.4+ commands
Feature - unlinkByPattern() method added to RKeys interface (thanks to @seakider)
Fixed - Apache Tomcat request.changeSessionId() method does not change the session id in Redis (thanks to @bclay2116)
Fixed - RSearch
parse params error (thanks to @seakider)
Fixed - RSearch.info()
throws NumberFormatException
(thanks to @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)
Fixed - RListMultimap
throws too many results to unpack error
Fixed - entry shutdown during cluster slots migration check
redisson-parent-3.31.0
Feature - Spring Boot 3.3.0 integration
Feature - Spring Data Redis 3.3.0 integration
Feature - allow retry of NOREPLICAS error (thanks to @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)
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)
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)
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)
Fixed - broken tck JCache tests
Fixed - not all sentinels defined in the configuration are registered
redisson-3.30.0
Feature - sslKeystoreType
setting added
Feature - RPatternTopic.getActiveTopic()
method added (thanks to @MasterShi)
Feature - RJsonBucket.merge()
method added
Feature - Async, Rx, Reactive interfaces implemented for RBloomFilter
object
Feature - fallback mode for JCache
Feature - passwords encryption support
Feature - 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 @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
redisson-3.29.0
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 a 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)
Fixed - jmockit upgraded to 1.52.0 inside maven-surefire-plugin (thanks to @roharon)
redisson-3.28.0
Feature - Multi Sentinel mode implementation
Feature - RLocalCachedMapCacheV2
object implemented with effecient partitioning and advanced entry eviction
Feature - graceful shutdown in quarkus (thanks to @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)
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)
redisson-3.27.2
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