redisson/redisson
 Watch   
 Star   
 Fork   
9 days ago
redisson

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

27 days ago
redisson

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)

2024-04-10 20:25:17
redisson

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)

2024-03-12 14:25:51
redisson

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

2024-02-28 15:40:43
redisson

redisson-3.27.1

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)

2024-02-20 17:14:35
redisson

redisson-3.27.0

Feature - client tracking 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

2024-02-12 16:47:37
redisson

redisson-3.26.1

Feature - enable DNS TCP fallback on UDP query timeout (thanks to @hellojukay)
Feature - StreamMessageId.autogenerateSequenceId() method added (thanks to @mrmx)
Feature - RLockReactive.isHeldByThread() method added (thanks to @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

2024-01-16 14:14:47
redisson

redisson-3.26.0

Feature - ability to specify retryInterval, retryAttempts, timeout settings per Redisson object. Please refer to the documentation
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

2023-12-20 19:41:51
redisson

redisson-3.25.2

Fixed - SSL connection can't be established

2023-12-18 16:54:45
redisson

redisson-3.25.1

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