Skip to content

Releases: redisson/redisson

redisson-3.44.0

27 Jan 11:19
Compare
Choose a tag to compare

Feature - native eviction implemented for JCache API
Feature - advanced eviction implemented for JCache API
Feature - RKeyAsync.getKeysAsync() method added (thanks to @seakider)
Feature - added commandsMap setting to CommandsLoadBalancer object
Feature - added regex setting to RandomLoadBalancer and RoundRobinLoadBalancer objects to filter nodes
Feature - Unix Domain Socket (UDS) support for a single mode through "redis+uds://" or "valkey+uds://" scheme
Feature - lockWatchdogBatchSize setting added

Fixed - RBuckets.get() method doesn't use nameMapper in single mode
Fixed - valkeys scheme can't be used in Sentinel mode
Fixed - closed channel detection during connection ping process
Fixed - RSearch throws an error if nocontent param defined (thanks to @seakider)
Fixed - RemovedListener is invoked incorrectly by JCache.getAll() method
Fixed - synthetic class shouldn't be allowed to be used as a comparator for RPriorityQueue objects
Fixed - master node address isn't resolved through NatMapper object in Sentinel mode (tnanks @aramperes)
Fixed - STOPWORDS 0 can't be defined during RSearch index creation
Fixed - RScript.evalSha() method doesn't work in cluster mode
Fixed - task id duplication check added to RScheduledExecutorService methods
Fixed - failover handling in Sentinel mode
Fixed - Micronaut Session.put() method doesn't remove an entry if value = null
Fixed - RReadWriteLock.unlock() method doesn't respect the lock owner
Fixed - lock watchdog doesn't renew RLock if an expection has been thrown

redisson-3.43.0

13 Jan 10:03
Compare
Choose a tag to compare

Feature - RObservable interface for listeners added for RLock objects (thanks to @seakider)

Fixed - RExecutorService workers stop working (regression since 3.42.0) (thanks to @seakider)
Fixed - RLocalCacheMap.remove() method hangs if called inside a transaction
Fixed - poll methods of RTimeSeries and RScoredSortedSet objects return null instead of empty lists
Fixed - RSet.containsEach() method returns null instead of empty list
Fixed - RLocalCachedMap.fastRemove() method may throw NPE if storeMode = LOCALCACHE

redisson-3.42.0

07 Jan 11:41
Compare
Choose a tag to compare

Feature - listeners support in Spring's CacheConfig object (thanks to @seakider)
Feature - CLIENT LIST command support for Spring Data (thanks to @seakider)
Feature - cluster nodes state added in node ... hasn't been discovered yet error
Feature - onConnectFailed() and onPingFailed() methods with an error argument added to FailedNodeDetector object
Feature - support of "valkey" and "valkeys" schemes in urls

Fixed - RScheduledExecutorService tasks might not be canceled (thanks to @seakider)
Fixed - MASTERDOWN error handling
Fixed - RBloomFilter.contains() should return false if the filter doesn't exist (thanks to @seakider)
Fixed - RRemoteService calls do not throw RemoteServiceTimeoutException, leaving threads stuck (thanks to @seakider)
Fixed - RMap.addAndGet() method doesn't work with MapWriter
Fixed - RScheduledExecutorService tasks are not running on the next executor if the app was killed (thanks to @seakider)
Fixed - RListMultimapReactive.get() and RSetMultimapReactive.get() methods return object with methods which throw exceptions
Fixed - RPriorityBlockingQueue.take() method consumes an element even after the calling thread has been interrupted
Fixed - RExecutorService result futures might be never completed
Fixed - RRemoteService shouldn't allocate a new worker if requestQueue is empty
Fixed - RListMultimapReactive.get() method doesn't work (thanks to @kramer)
Fixed - RListMultimapRx.get() method doesn't work
Fixed - destroy() method doesn't work if called immediately after creation of RDelayedQueue object

redisson-3.41.0

23 Dec 07:11
Compare
Choose a tag to compare

Feature - RPermitExpirableSemaphore.getLeaseTime() method added (thanks to @seakider)
Feature - sslVerificationMode setting added

Fixed - RPermitExpirableSemaphore.release(java.util.List) shouldn't release permits if one of them doesn't exist (thanks to @seakider)
Fixed - RTopic listeners leak if they are defined as a lambda
Fixed - RPriorityBlockingQueue.draintTo() method shouldn't resend command on response timeout
Fixed - RandomXoshiro256PlusPlus might block Redisson initialization

redisson-3.40.2

12 Dec 10:40
Compare
Choose a tag to compare

Improvement - optimization LRUCacheMap speed by up to 200x

Fixed - Quarkus config parsing with sentinel nodes (thanks to @blacksails)
Fixed - starvation of pub/sub connections may cause a memory leak

redisson-3.40.1

06 Dec 08:33
Compare
Choose a tag to compare

Improvement - Netty pending tasks amount report in timeout exceptions

Fixed - Redis or Valkey hostname parsing
Fixed - NoClassDefFoundError is thrown during run with Spring Boot 3.4.0 in GraalVM native mode
Fixed - RTopic and RShardedTopic fail to resubscribe after node's DNS record change (regression since 3.27.0)

redisson-3.40.0

03 Dec 10:31
Compare
Choose a tag to compare

Feature - metrics added to RClusteredTopic, RReliableTopic, RClusteredReliableTopic, RShardedTopic, RJsonStore and RLocalCachedJsonStore objects
Feature - Spring Data Redis 3.4.x module added
Feature - Spring Boot upgraded to 3.4.0
Feature - setIfLess() and setIfGreater() methods added to RAtomicDouble and RAtomicLong objects (thanks to @seakider)
Feature - RMultimap.fastReplaceValues() method added (thanks to @davidreis97)

Fixed - IPV6 uris with braces are parsed incorrectly
Fixed - minCleanUpDelay setting isn't applied during the first run of the EvictionTask
Fixed - master node shouldn't be changed on new ip addition for AWS Serverless endpoint
Fixed - Quarkus native build requires Snappy library
Fixed - Quarkus 3.14+ compatibility
Fixed - RBitSet.length() method returns unexpected value and caused RedisException in some case (thanks to @seakider)
Fixed - TypedJsonJacksonCodec doesn't catch Exception (thanks to @lyrric)

redisson-3.39.0

15 Nov 13:20
Compare
Choose a tag to compare

Feature - partitioning implementation for RTopic object
Feature - partitioning implementation for RShardedTopic object
Feature - partitioning implementation for RReliableTopic object
Feature - ZStandard compression codec added (ZStdCodec)
Feature - ability to register listeners for RListMultimap and RSetMultimap objects
Feature - ability to register listeners for RTimeSeries object

Fixed - possible race-condition in RMapCache.computeIfAbsent() method
Fixed - possible race-condition in computeIfAbsent(), computeIfPresent() methods of RMap object
Fixed - RMapCache.computeIfAbsentAsync() method isn't implemented
Fixed - use CursorId in ScanIteration to avoid long overflow in Spring Data 3.3 implementation (thanks to @vlastikcz)
Fixed - unable to cancel a task created by RExecutorService.scheduleAtFixedRate() method (thanks to @zcxsythenew)
Fixed - potential LocalCache memory leak if useObjectAsCacheKey = true (thanks to @lehuuthanh5)
Fixed - EntryListener is not working on Turkish language Windows 10
Fixed - Redisson shutdown exception is thrown during background process of expired Tomcat sessions
Fixed - some methods of Reactive and RxJava API don't work in GraalVM native image
Fixed - RTransactionRx and RTransactionReactive don't work in GraalVM native image
Fixed - JsonJacksonCodec doesn't work in GraalVM native image
Fixed - NPE is thrown if RExecutorService task submitted in GraalVM native image
Fixed - RObject.rename() method does not replace an existing structure in cluster mode

redisson-3.38.1

31 Oct 07:10
Compare
Choose a tag to compare

Fixed - Kryo codec upgraded to 5.6.2 for JDK 8 compatibility (thanks to @Wujiaxuan007)
Fixed - pollAsync() and removeAsync() methods of RPriorityQueue and RPriorityDeque objects aren't guarded properly with lock
Fixed - Spring Cache Cacheable(sync) annotation loads value multiple times for reactive types or completableFuture

redisson-3.38.0

30 Oct 11:10
Compare
Choose a tag to compare

Feature - Local cache for Live Object Service support
Feature - RClientSideCaching object added. Client side caching through RESP3 protocol
Feature - Tomcat 11 support
Feature - RBatch.getSearch() method added (thanks to @pfyod)
Feature - RedissonClient.getMultiLock() method added for locking on objects (thanks to @lyrric)
Feature - RPatternTopic.removeListener() accepts multiple ids
Feature - LocalCachedMapOptions.useTopicPattern() setting added
Feature - InetAddress and SocketAddress serialization added to Kryo5Codec

Breaking change - RLongAdder and RDoubleAdder topic channel name has been renamed

Improvement - timeToLive parameter renamed to keepAliveTime for RRateLimiter.trySetRate() and setRate() methods (thanks to @lyrric)

Fixed - lazyInitialization=true doesn't work in cluster mode (regression since 3.27.0)
Fixed - Spring Cache @Cacheable(sync) doesn't work with reactive types or completableFuture
Fixed - Pub/Sub connections randomly disconnecting (regression since 3.26.0) (thanks to @Wujiaxuan007)
Fixed - RLiveObjectService.persist() and merge() methods, when called with multiple arguments, return detached objects
Fixed - RJsonBucketReactive and RJsonBucketRx use Reactive Types as arguments
Fixed - ClassNotFoundException is thrown when a LiveObject expires
Fixed - Micronaut native image build
Fixed - Quarkus native image build
Fixed - RSearch.info() method throws an exception on infinity values (thanks to @iamtakingiteasy)