All Versions
Latest Version
Avg Release Cycle
27 days
Latest Release

Changelog History
Page 5

  • v3.12.0 Changes

    December 26, 2019

    ๐Ÿ”‹ Feature - RExecutorService task id injection
    ๐Ÿ”‹ Feature - submit() methods with ttl parameter added to RExecutorService
    ๐Ÿ”‹ Feature - schedule() methods with timeToLive parameter added to RScheduledExecutorService
    ๐Ÿ”‹ Feature - MyBatis cache implementation added
    ๐Ÿ”‹ Feature - added implementation of doSuspend and doResume methods of Spring Transaction Manager
    ๐Ÿ”‹ Feature - WorkerOptions.taskTimeout setting added
    ๐Ÿ”‹ Feature - RSemaphore.addPermits method added
    ๐Ÿ”‹ Feature - ability to define TaskFailureListener, TaskFinishedListener, TaskStartedListener and TaskSuccessListener task listeners with WorkerOptions object

    ๐Ÿ‘Œ Improvement - Default workers amount of RExecutorService set to 1

    ๐Ÿ›  Fixed - CommandDecoder throws NPE
    ๐Ÿ›  Fixed - ReplicatedConnectionManager triggers reactivation of slaves with ip address instead of hostname (thanks to @f-sander)
    ๐Ÿ›  Fixed - Reactive/Rxjava2 transaction doesn't unlock lock on rollback or commit
    ๐Ÿ›  Fixed - Spring Transaction Manager doesn't handle Redisson TransactionException
    ๐Ÿ›  Fixed - RBuckets.get throws NPE for non-existed buckets (thanks to @d10n)
    ๐Ÿ›  Fixed - RPermitExpirableSemaphore does not expire
    ๐Ÿ›  Fixed - RedissonCacheStatisticsAutoConfiguration should be conditional on CacheMeterBinderProvider presence (thanks to @ehontoria)

  • v3.11.6 Changes

    November 28, 2019

    ๐Ÿ”‹ Feature - RExecutorServiceAsync.cancelTaskAsync() method added
    ๐Ÿ”‹ Feature - RExecutorService.hasTask() method added
    ๐Ÿ”‹ Feature - RExecutorService.getTaskCount() method added
    ๐Ÿ”‹ Feature - RMap write-behind queue should be fault-tolerant
    ๐Ÿ”‹ Feature - added poll() methods with limit to RQueue, RDeque, RDelayedQueue objects
    ๐Ÿ”‹ Feature - checkSlotsCoverage setting added to cluster config
    ๐Ÿ”‹ Feature - RExecutorService.getTaskIds() method added
    ๐Ÿ”‹ Feature - awaitAsync() methods added to RCountDownLatch object
    ๐Ÿ”‹ Feature - RCountDownLatchRx and RCountDownLatchReactive objects added

    ๐Ÿ›  Fixed - channel subscription proccess in interruptible methods can't be interrupted
    ๐Ÿ›  Fixed - RMap.get() method invokes MapWriter.write() method during value loading
    ๐Ÿ›  Fixed - interruptible blocking methods couldn't be canceled
    ๐Ÿ›  Fixed - ClusterNodesDecoder ignore unknown flag and avoid throwing exception (thanks to ZhangJQ)
    ๐Ÿ›  Fixed - AsyncSemaphore counter field should be volatile
    ๐Ÿ›  Fixed - data encoding exception is not logged during remote call invocation
    ๐Ÿ›  Fixed - Spring Data ZRangeByScore method doesn't support Infinity Double value
    ๐Ÿ›  Fixed - spring metainfo files should be excluded in redisson-all artifact
    ๐Ÿ›  Fixed - RKeysRx.getKeys() and RKeysReactive.getKeys() methods throws Exception

  • v3.11.5 Changes

    October 26, 2019

    ๐Ÿ”‹ Feature - Automatic-Module-Name entry added to manifest file
    ๐Ÿ”‹ Feature - subscribeOnElements method added to RBlockingQueue object
    ๐Ÿ”‹ Feature - subscribeOnFirstElements and subscribeOnLastElements methods added to RBlockingDeque object
    ๐Ÿ”‹ Feature - subscribeOnFirstElements and subscribeOnLastElements methods added to RScoredSortedSet object
    ๐Ÿ”‹ Feature - support of Spring Data Redis 2.2.x
    ๐Ÿ”‹ Feature - added batched persist method to RLiveObjectService object
    ๐Ÿ”‹ Feature - Kryo5Codec implemented

    ๐Ÿ›  Fixed - host details in Redis url cause extra bracket at the end
    ๐Ÿ›  Fixed - RBuckets.get() method doesn't work with custom codec
    ๐Ÿ›  Fixed - RLock.unlock() method hangs forever
    ๐Ÿ›  Fixed - RStream.trim method throws exception
    ๐Ÿ›  Fixed - Spring Data pubsub listeners executes multiple times
    ๐Ÿ›  Fixed - Redis commands processing handler consumes 100% of CPU resources

  • v3.11.4 Changes

    September 24, 2019

    ๐Ÿ”‹ Feature - support search by numeric fields in LiveObject search engine. Follow conditions are supported: greater than on equal, greater than, lower than, lower than or equal

    ๐Ÿ›  Fixed - threads blocked waiting on CountDownLatch
    ๐Ÿ›  Fixed - rename and renamenx methods of RMultimap interface aren't working
    ๐Ÿ›  Fixed - memory leak caused by FastThreadLocal object used in CodecDecoder
    ๐Ÿ›  Fixed - blocking queue methods don't re-throw InterruptedException
    ๐Ÿ›  Fixed - RExecutorService tasks duplication after task retry event
    ๐Ÿ›  Fixed - Redisson.shutdown method blocks calling thread
    ๐Ÿ›  Fixed - Spring Boot default connection timeout is 0 seconds
    ๐Ÿ›  Fixed - IPv6 handling in Sentinel manager (thanks to AndreevDm)
    ๐Ÿ›  Fixed - RMapCache.remainTimeToLive method returns negative remain time
    ๐Ÿ›  Fixed - RBuckets.get method doesn't work in Redis cluster mode
    ๐Ÿ›  Fixed - wrong error message if Sentinel server has misconfiguration

  • v3.11.3 Changes

    August 30, 2019

    ๐Ÿ”‹ Feature - JBoss Marshalling codec implementation
    ๐Ÿ”‹ Feature - support for Spring's @Autowired, @Value and JSR-330 @Inject annotations in ExecutorService tasks
    ๐Ÿ”‹ Feature - SSL support for Sentinel mode
    ๐Ÿ”‹ Feature - sizeInMemory() method added to RObjectReactive and RObjectRx interfaces
    ๐Ÿ”‹ Feature - getId() method added to RedissonClient, RedissonRxClient, RedissonReactiveClient interfaces

    ๐Ÿ‘Œ Improvement - useCache parameter added to FstCodec
    ๐Ÿ‘Œ Improvement - URL object should be used for sslKeystore and sslTruststore settings

    ๐Ÿ›  Fixed - RedisTimeoutException thrown if retryAttempts set to 0
    ๐Ÿ›  Fixed - RStream.readGroup method doesn't work properly with TypedJsonJacksonCodec
    ๐Ÿ›  Fixed - semaphore object is not deleted after RLocalCachedMap.clearLocalCache method invocation
    ๐Ÿ›  Fixed - Redisson couldn't be shutdown if one of RBatch commands was canceled

  • v3.11.2 Changes

    August 03, 2019

    ๐Ÿ‘Œ Improvement - RLiveObject interface should extend RExpirable
    ๐Ÿ‘Œ Improvement - RKeys.deleteByPattern method performance improvements

    ๐Ÿ›  Fixed - RBatch.execute method throws NoSuchElementException
    ๐Ÿ›  Fixed - RedisTimeoutException is thrown if retryInterval set to 0
    ๐Ÿ›  Fixed - Set.intersection, union and diff methods should return Integer
    ๐Ÿ›  Fixed - FSTCodec state is not fully copied
    ๐Ÿ›  Fixed - CommandAsyncService.CODECS map changed to Soft reference map
    ๐Ÿ›  Fixed - RKeys.deleteByPatternAsync method doesn't work in batch mode
    ๐Ÿ›  Fixed - subscribe timeouts after failover
    ๐Ÿ›  Fixed - a new attempt is not made if node with defined slot wasn't discovered
    ๐Ÿ›  Fixed - some methods of RScript object doesn't use defined codec
    ๐Ÿ›  Fixed - RedissonConnection.set method returns null if invoked with expiration parameter
    ๐Ÿ›  Fixed - removeAll method doesn't work on collections returned by Multimap based objects

  • v3.11.1 Changes

    June 25, 2019

    ๐Ÿ”‹ Feature - getPendingInvocations method added to RRemoteService object
    ๐Ÿ”‹ Feature - natMap setting support for Sentinel mode (thanks to fgiannetti)
    ๐Ÿ”‹ Feature - listPending method added to RStream, RStreamAsync, RStreamRx, RStreamReactive interfaces
    ๐Ÿ”‹ Feature - implementation of Spring Session ReactiveSessionRepository added
    ๐Ÿ”‹ Feature - allow usage of multiple env variables with default values in one config entry (thanks to tristanlins)

    ๐Ÿ‘Œ Improvement - Use maven packaging for redisson project as jar instead of bundle (thanks to jchobantonov)
    ๐Ÿ‘Œ Improvement - add default entries in MANIFEST.MF file and extra Build-Time entry as well (thanks to jchobantonov)

    ๐Ÿ›  Fixed - RMap.replace method doesn't update idle timeout (thanks to mcacker)
    ๐Ÿ›  Fixed - timeout drift in RedissonFairLock (thanks to jncorpron)
    ๐Ÿ›  Fixed - dead Sentinel appears in logs as node added and down
    ๐Ÿ›  Fixed - Publish/Subscribe connections are not resubscribed properly after failover process
    ๐Ÿ›  Fixed - RedissonLocalCachedMap.clearLocalCache method is not executed asynchronously
    ๐Ÿ›  Fixed - Tomcat RedissonSession.setAttribute method doesn't check the value for null (thanks to jchobantonov)
    ๐Ÿ›  Fixed - Tomcat Manager UpdateValve should be installed only once (thanks to jchobantonov)
    ๐Ÿ›  Fixed - remove MessageListener from topic when Tomcat Session Manager stopInternal is invoked (thanks to jchobantonov)
    ๐Ÿ›  Fixed - RStream.getInfo method throws java.lang.ClassCastException
    ๐Ÿ›  Fixed - RedissonMultiLock could be acquired by multiple threads if waitTime == -1 and leaseTime != -1
    Fixed - PRINCIPAL_NAME_INDEX_NAME key is not created in redis
    ๐Ÿ›  Fixed - SessionExpiredEvent is not triggered in Spring Session implementation
    ๐Ÿ›  Fixed - host name containing underscore cause NPE
    ๐Ÿ›  Fixed - Illegal reflective access by org.redisson.misc.URIBuilder warning removed
    ๐Ÿ›  Fixed - RedissonSessionRepository doesn't trigger created event if keyPrefix setting is not null (thanks to hs20xqy)
    ๐Ÿ›  Fixed - RRemoteService.getFreeWorkers method removes registered service
    ๐Ÿ›  Fixed - zero timeout isn't respected in RRateLimiter.tryAcquire method
    ๐Ÿ›  Fixed - RedissonObjectBuilder.REFERENCES map should be filled one time
    ๐Ÿ›  Fixed - RReadWriteLock.readLock doesn't take in account expiration date of the last acquired read lock. (thanks to Aimwhipy)
    ๐Ÿ›  Fixed - result object of RMapRx.iterator methods don't return Flowable object
    ๐Ÿ›  Fixed - Tomcat Session doesn't expire if broadcastSessionEvents = true
    ๐Ÿ›  Fixed - ClassNotFoundException thrown during SerializationCodec.decode method invocation (thanks to jchobantonov)
    ๐Ÿ›  Fixed - connections amount setting for mirrors is not applied in Proxy mode

  • v3.11.0 Changes

    May 29, 2019

    ๐Ÿ”‹ Feature - radiusStoreSortedTo methods added to RGeo, RGeoAsync, RGeoRx, RGeoReactive interfaces
    ๐Ÿ”‹ Feature - Local cache for JCache added. Read the documentation for more details
    ๐Ÿ”‹ Feature - Async, Reactive, RxJava2 interfaces added to JCache. Read the documentation for more details
    ๐Ÿ”‹ Feature - RRingBuffer object added. Read the documentation for more details

    ๐Ÿ‘Œ Improvement - reduced memory consumption by ClusterConnectionManager
    ๐Ÿ‘Œ Improvement - UpdateValve needs to execute only once at the end of the request (thanks to jchobantonov)

    ๐Ÿ›  Fixed - HttpSessionListener.sessionDestoyed method isn't invoked if session wasn't loaded by Tomcat instance
    ๐Ÿ›  Fixed - redisson-spring-data ReactiveSubscription.receive method throws NPE
    ๐Ÿ›  Fixed - Redis response isn't fully consumed after decoding error
    Fixed - Spring Session PRINCIPAL_NAME_INDEX_NAME session attribute has incorrect name
    ๐Ÿ›  Fixed - internal AsyncSemaphore object doesn't notify sleeping threads with permits more than one
    ๐Ÿ›  Fixed - RedisTemplate.radius and RedisConnection.geoRadius methods throws IllegalArgumentException during response decoding
    ๐Ÿ›  Fixed - RedissonNodeConfig.mapReduceWorkers setting couldn't be set (thanks to xiaoxuan.bai)

  • v3.10.7 Changes

    April 29, 2019

    ๐Ÿ”‹ Feature - Add support for Reactive and RxJava2 interfaces to RemoteService object
    ๐Ÿ”‹ Feature - MILLISECONDS option added to RRateLimiter.RateIntervalUnit object
    ๐Ÿ”‹ Feature - range method added to RList, RListReactive and RListRx interfaces

    ๐Ÿ‘Œ Improvement - JCache.getAll execution optimization for non-existing keys
    ๐Ÿ‘Œ Improvement - 10X Performance boost for JCache.putAll method

    ๐Ÿ›  Fixed - disconnected sentinels shouldn't be used in sentinel list
    ๐Ÿ›  Fixed - Apache Tomcat RedissonSessionManager doesn't use classloader aware codec for session Map object (thanks to jchobantonov)
    ๐Ÿ›  Fixed - LiveObject field with Map type couldn't be persisted
    ๐Ÿ›  Fixed - RRateLimiter allows permits limit exceeding
    ๐Ÿ›  Fixed - CompositeCodec.getMapValueDecoder method uses MapKeyDecoder instead of MapValueDecoder
    ๐Ÿ›  Fixed - memory leak during blocking methods invocation of Queue objects
    ๐Ÿ›  Fixed - Apache Tomcat RedissonSessionManager.findSession shouldn't create a new one session (thanks to jchobantonov)
    ๐Ÿ›  Fixed - JCache.removeAll method doesn't notify Cache listeners
    ๐Ÿ›  Fixed - UpdateValve sould be removed from pipeline in Apache Tomcat RedissonSessionManager.stopInternal method (thanks to jchobantonov)
    ๐Ÿ›  Fixed - Redis Sentinel prior 5.0.1 version doesn't require password. Regression since 3.10.5 version
    ๐Ÿ›  Fixed - Redisson tries to renewed Lock expiration even if lock doesn't exist. Regression since 3.10.5 version
    ๐Ÿ›  Fixed - FstCodec can't deserialize ConcurrentHashMap based object with package visibility

  • v3.10.6 Changes

    April 05, 2019

    ๐Ÿ”‹ Feature - broadcastSessionEvents setting added to Tomcat Session Manager
    ๐Ÿ”‹ Feature - remainTimeToLive method added to RLock, RLockAsync, RLockRx and RLockReactive interfaces
    ๐Ÿ”‹ Feature - NAT mapping support for cluster mode
    ๐Ÿ”‹ Feature - isLock method added to RLockAsync, RLockRx, RLockReactive interfaces
    ๐Ÿ”‹ Feature - writeBehindDelay and writeBehindBatchSize settings added to MapOptions object

    ๐Ÿ‘Œ Improvement - Eviction task logging added
    ๐Ÿ‘Œ Improvement - MapWriter interface retains only two methods for handling batch updates
    ๐Ÿ‘Œ Improvement - MapOptions.writeBehindThreads parameter removed

    ๐Ÿ›  Fixed - RBitSet.asBitSet methods throws NPE if RBitSet object doesn't exist
    ๐Ÿ›  Fixed - JCache.getAll method throws RedisException: too many results to unpack
    ๐Ÿ›  Fixed - RLock.lock method can be interrupted with Thread.interrupt method
    ๐Ÿ›  Fixed - Tomcat Session parameters aren't updated completely in readMode=MEMORY
    ๐Ÿ›  Fixed - RLock.unlock method returns true if lock doesn't exist
    ๐Ÿ›  Fixed - Tomcat Session Manager doesn't remove session attributes in updateMode=AFTER_REQUEST
    ๐Ÿ›  Fixed - Pattern topic listeners fail to re-attach on cluster failover (thanks to shailender-bathula)
    ๐Ÿ›  Fixed - CommandPubSubDecoder.decodeResult throws IllegalStateException in JBOSS environment
    ๐Ÿ›  Fixed - NullValue object shouldn't be stored if RedissonSpringCacheManager.allowNullValues = false
    ๐Ÿ›  Fixed - removeListener method of RTopicReactive and RTopicRx interfaces throws NoSuchMethodException