Redisson v3.17.1 Release Notes

  • ๐Ÿ”‹ Feature - transient fields support for LiveObjects to avoid data serialization
    ๐Ÿ”‹ Feature - removeAllListenersAsync() method added to RTopic object
    ๐Ÿ”‹ Feature - transactionAware setting added to RedissonSpringCacheManager

    ๐Ÿ‘Œ Improvement - amount of created connections in parallel reduced to 5, for better stability

    ๐Ÿ›  Fixed - RedissonReactiveClient.getMultilock() method should accept RLockReactive objects
    ๐Ÿ›  Fixed - RedissonRxClient.getMultilock() method should accept RLockRx objects
    ๐Ÿ›  Fixed - don't close connection on error response during topology scan
    ๐Ÿ›  Fixed - SET command should be an idempotent operation
    ๐Ÿ›  Fixed - MasterSlaveConnectionManager throws ClassCastException if host unknown
    ๐Ÿ›  Fixed - RReadWriteLock renewal doesn't work if writeLock released before readLock then both were acquired
    ๐Ÿ›  Fixed - Spring Data Redis module. Scan In cluster mode, other nodes cannot be scanned
    ๐Ÿ›  Fixed - RReliableTopic object throws "attempt to compare nil with number" error
    ๐Ÿ›  Fixed - RedissonSpinLock.tryLock() method returns false instead of true if the remaining wait time is negative
    ๐Ÿ›  Fixed - an error should be thrown if merge(), compute(), computeIfAbsent() and computeIfPresent() of RMap used in batch
    ๐Ÿ›  Fixed - Unable to specify timezone in CronSchedule object
    ๐Ÿ›  Fixed - RMapCache.destroy() method throws NPE
    ๐Ÿ›  Fixed - RLock.tryLock() method throws CancellationException
    ๐Ÿ›  Fixed - Unable to connect to Redis server error is thrown due to NPE
    ๐Ÿ›  Fixed - RBlockingQueue.pollLastAndOfferFirstTo() throws ClassCastException if result is empty
    ๐Ÿ›  Fixed - internal AsyncSemaphore doesn't skip canceled tasks in the same thread
    ๐Ÿ›  Fixed - RLocalCachedMap.getAll() method doesn't respect storeCacheMiss setting
    ๐Ÿ›  Fixed - 0 value for waitTime and leastTime isn't handled correctly by RMultiLock object
    ๐Ÿ›  Fixed - Spring Data Redis module. RedissonConnection.execute() method doesn't invoke overloaded methods correctly