From 5df4b02639070ededbd1593f138139a6a30fce41 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Wed, 29 May 2019 10:48:59 +0300 Subject: [PATCH] Update CHANGELOG.md --- CHANGELOG.md | 93 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 88 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b231b6f54..fc4cb3ad2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,30 @@ Redisson Releases History Сonsider __[Redisson PRO](https://redisson.pro)__ version for advanced features and support by SLA. -### 29-Apr-2019 - versions 3.10.7 released +### 28-May-2019 - 3.11.0 released +Feature - `radiusStoreSortedTo` methods added to `RGeo`, `RGeoAsync`, `RGeoRx`, `RGeoReactive` interfaces +Feature - `Async`, `Reactive`, `RxJava2` interfaces added to `JCache`. Read the [documentation](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks#1441-jcache-api-asynchronous-reactive-and-rxjava2-interfaces) for more details +Feature - `RRingBuffer` object added. Read the [documentation](https://github.com/redisson/redisson/wiki/7.-distributed-collections/#721-ring-buffer) for more details + +Improvement - reduced memory consumption by ClusterConnectionManager + +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) +Improvement - UpdateValve needs to execute manager.store only once at the end of the request (thanks to [jchobantonov](https://github.com/jchobantonov)) + +### 29-Apr-2019 - 3.10.7 released Feature - Add support for [Reactive and RxJava2 interfaces](https://github.com/redisson/redisson/wiki/9.-distributed-services#913-remote-service-asynchronous-reactive-and-rxjava2-calls) 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](https://github.com/jchobantonov)) Fixed - LiveObject field with Map type couldn't be persisted @@ -23,15 +41,17 @@ Fixed - Redis Sentinel prior 5.0.1 version doesn't require password. Regression 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 -### 05-Apr-2019 - versions 3.10.6 released +### 05-Apr-2019 - 3.10.6 released 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 @@ -43,14 +63,16 @@ Fixed - `CommandPubSubDecoder.decodeResult` throws `IllegalStateException` in JB Fixed - NullValue object shouldn't be stored if `RedissonSpringCacheManager.allowNullValues = false` Fixed - `removeListener` method of `RTopicReactive` and `RTopicRx` interfaces throws NoSuchMethodException -### 20-Mar-2019 - versions 3.10.5 released +### 20-Mar-2019 - 3.10.5 released Feature - `getMultiLock`, `getRedLock` methods added to `RedissonClient`, `RedissonRxClient` and `RedissonReactiveClient` interfaces Feature - `getInfo`, `listGroups`, `listConsumers` methods added to `RStream`, `RStreamRx`, `RStreamReactive` interfaces Feature - `RPatternTopic.removeListenerAsync` method added Feature - `getAndSet` method with TTL support added `RBucket`, `RBucketAsync`, `RBucketReactive`, `RBucketRx` interfaces Feature - `addListener` and `removeListener` methods added to `RObject`, `RObjectAsync`, `RObjectReactive`, `RObjectRx` objects. It allows to add and remove listeners for Deleted and Expired keyspace events published by Redis + Improvement - shuffle list of sentinels to distribute load (thanks to [hrakaroo](https://github.com/hrakaroo)) Improvement - methods of RxJava2 interfaces should use full set of result objects: `Single`, `Maybe` or `Completable` + Fixed - compatibility with hibernate 5.2.0 - 5.2.4 versions Fixed - ClassCastException during `RBatchReactive` and `RBatchRx` execution in `exectionMode` = `REDIS_WRITE_ATOMIC` or `REDIS_READ_ATOMIC` Fixed - sentinel mode doesn't support AUTH command @@ -60,9 +82,10 @@ Fixed - RStream.readGroup method doesn't handle empty result properly with Redis Fixed - AUTH password included in exceptions Fixed - locked lock isn't unlocked after disconnect to Redis -### 08-Mar-2019 - versions 3.10.4 released +### 08-Mar-2019 - version 3.10.4 released Feature - `getCountDownLatch`, `getPermitExpirableSemaphore`, `getSemaphore`, `getFairLock` methods added to `RMultimap` object Feature - `maxCleanUpDelay` and `minCleanUpDelay` settings added to `Config` object + Fixed - `RLocalCachedMap.destroy` method doesn't clear local cache Fixed - HP NONSTOP OS is not supported by MapCacheEventCodec Fixed - `RedissonLocalCachedMap.readAll*` methods throw NPE if `evictionPolicy = WEAK` used @@ -73,14 +96,16 @@ Fixed - negative delay shouldn't be allowed to define for `RDelayedQueue.offer` Fixed - eviction delay for `RMapCache` object is not decreased Fixed - `RMultiLock.tryLockAsync` and `RMultiLock.lockAsync` methods may hang during invcation -### 26-Feb-2019 - versions 3.10.3 released +### 26-Feb-2019 - 3.10.3 released Feature - `RTransaction.getBuckets` method added Feature - ability to redefine `CacheKeysFactory` in Hibernate Cache Factory Feautre - ability to specify default values for environment variable (thanks to [aaabramov](https://github.com/aaabramov)) Feature - `RRateLimiter.getConfig` method added Feature - `ping` and `pingAll` methods with timeout added to `Node` object + Improvement - create Redis stream group if it doesn't exist Improvement - response decoding optimization + Fixed - `RStream.listPending` throws `IndexOutOfBoundsException` Fixed - `LocalCacheView.toCacheKey` method throws `StackOverflowError` Fixed - `RedissonSessionManager` doesn't support async servlets (thanks to [dnouls](https://github.com/dnouls)) @@ -93,8 +118,10 @@ Fixed - Transactional RBucket object doesn't respect transaction timeout Feature - `StreamMessageId.NEVER_DELIVERED` added Feature - [decodeInExecutor](https://github.com/redisson/redisson/wiki/2.-Configuration#decodeinexecutor) setting added Feature - `lockAsync` and `tryLockAsync` methods with threadId param added to RedissonMultiLock object + Improvement - default values of `nettyThreads` and `threads` settings set to `32` and `16` respectively Improvement - Redis nodes with empty names in cluster config should be skipped + Fixed - `RFuture.cause()` method should return CancellationException and not throw it Fixed - continues handling of RedisLoadingException leads to excessive load Fixed - slave's connection pools are not initialized when it back from failover @@ -118,10 +145,12 @@ Feature - `cachedKeySet`, `cachedValues`, `cachedEntrySet` and `getCachedMap` me Feature - __Hibernate 5.4__ support Feature - [search LiveObjects](https://github.com/redisson/redisson/wiki/9.-Distributed-services#rindex) by field Feature - allow checking if lock is held by a thread (thanks to [hackworks](https://github.com/hackworks)) + Improvement - return `null` if Tomcat session attribute couldn't be parsed Improvement - Tomcat Session key codec changed to StringCodec Improvement - Spring Session key codec changed to StringCodec Improvement - Tomcat Session recycle method implementation (thanks to [jchobantonov](https://github.com/jchobantonov)) + Fixed - RRateLimiter RateType checking (thanks to [shengjie8329](https://github.com/shengjie8329)) Fixed - implementation of workaround for DNS name resolver bug Fixed - running scheduleWithFixedDelay Job couldn't be canceled @@ -157,10 +186,12 @@ Feature - Spring Data Redis 2.1.x support added Feature - Spring Boot Starter 2.1.x support added Feature - Spring Data Redis 2.0.x and 2.1.x integrations support `ReactiveRedisTemplate` Feature - Support of [Different monitoring systems](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks#1410-statistics-monitoring-jmx-and-other-systems) + Improvement - RGeo.radius methods use GEORADIUS_RO and GEORADIUSBYMEMBER_RO commands Improvement - restored implementation of DnsAddressResolverGroupFactory Improvement - RedisConnectionClosedException removed Improvement - __default codec changed to FSTCodec__ + Fixed - `RMap.getAll` throws `ClassCastException` during transaction execution Fixed - `pingConnectionInterval` and `lock-watchdog-timeout` parameters added to `redisson.xsd` Fixed - zRevRangeWithScores does not work properly in Spring RedisTemplate @@ -193,8 +224,10 @@ Feature - `takeFirstElements` and `takeLastElements` added to `RScoredSortedSetR Feature - `takeFirst` and `takeLast` methods added to `RScoredSortedSet` object Feature - `readGroup` method variations added to `RStream` object Feature - `remove`, `trim`, `fastClaim`, `removeGroup`, `removeConsumer`, `updateGroupMessageId` methods added to `RStream` object + Improvement - JCache performance optimization up to 2x times Improvement - Redis url validation + Fixed - Exception serialization by Jackson codec Fixed - DNS channels aren't pooled Fixed - RStream commands don't work with Redis 5.0.1 version @@ -218,7 +251,9 @@ Feature - multi-type listeners support for `RTopic` and `RPatternTopic` objects. Feature - `useScriptCache` setting added. Manages by Lua-script caching on Redis side. Please refer to [documentation](https://github.com/redisson/redisson/wiki/2.-Configuration#usescriptcache) for more details Feature - added `RMap.putAllAsync` method with batch size Feature - added `RSet.random` method limited by count + Improvement - memory allocation optimization during ExecutorService task execution + Fixed - `keepAlive` is not being set Fixed - Redisson can't resolve short DNS name Fixed - Redisson shuts down executor it doesn't own @@ -232,7 +267,9 @@ Fixed - `UnsupportedOperationException` thrown when using Spring Actuator with r ### 06-Oct-2018 - versions 2.13.2 and 3.8.2 released Feature - `RPermitExpirableSemaphore.updateLeaseTime` method added + Improvements - cluster state check + Fixed - DNS resolver fails to find valid DNS record Fixed - MultiLock should attempt to release locks if request was sent successfully Fixed - `RRateLimiter.tryAcquire` with timeout blocks forever @@ -246,6 +283,7 @@ Fixed - tomcat session replication in IN_MEMORY mode (thanks to Yasin Koyuncu) ### 18-Sep-2018 - versions 2.13.1 and 3.8.1 released Feature - __RStream__ object added. Please refer to [documentation](https://github.com/redisson/redisson/wiki/7.-Distributed-collections#720-stream) for more details + Fixed - `failedSlaveCheckInterval` setting is not applied under some conditions Fixed - `spring.factories` and `spring.provides` files added to Spring Boot module Fixed - `pingConnectionInterval` setting affects re-connection process with password enabled setting @@ -260,8 +298,10 @@ Feature - __Spring Data Redis__ integration. Please refer to [documentation](htt Feature - __Spring Boot Starter__ implementation. Please refer to [documentation](https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter#spring-boot-starter) for more details Feature - `RBlockingDequeReactive` object added Feature - `sharedSession` setting for Tomcat Session Manager. Appropriate solution for migration of EAR based application with multiple WARs hosted previously on WebLogic or other servers. Please refer to [documentation](https://github.com/redisson/redisson/tree/master/redisson-tomcat) for more details + Improvement - Redis request/response handling performance improvement Improvement - CompositeIterator decoupled from CompositeIterable (thanks to [Pepe-Lu](https://github.com/Pepe-Lu)) + Fixed - task scheduled with time more than 1 hour is not executed Fixed - RScheduledExecutorService doesn't handle delayed tasks correctly Fixed - `RMapCache` and `RSetCache` objects should implement `RDestroyable` @@ -279,13 +319,16 @@ Feature - `RScoredSortedSetReactive`, `RSetReactive`, `RListReactive` objects im Feature - `RGeoReactive` object added Feature - reactive version of FairLock added Feature - `RRateLimiterReactive` object added + Improvement - RObjectReactive and RScoredSortedSetReactive interfaces synced with `RObjectAsync` and `RScoredSortedSetAsync` + Fixed - readonly command shouldn't be executed on master node used as slave Fixed - connection is closed per command execution for master node used as slave in `readMode=MASTER_SLAVE` Fixed - `RLiveObjectService` should use entityClass's classloader ### 16-Jul-2018 - versions 2.12.4 and 3.7.4 released Feature - dump and restore methods added to `RObject` interface + Fixed - Redis response hangs if `RLiveObject` stored as nested object Fixed - slow Redisson initialization in Sentinel Fixed - missing PubSub messages when pingConnectionInterval setting is specified @@ -298,6 +341,7 @@ Fixed - `RHyperLogLog.addAll` method doesn't add all elements ### 27-Jun-2018 - versions 2.12.3 and 3.7.3 released Feature - added `RKeys.getKeys` method with batch size Feature - added `SnappyCodecV2` codec + Fixed - `SerializationCodec` doesn't support proxied classes Fixed - NPE if `RScheduledExecutorService`'s task scheduled with cron expression for finite number of execution Fixed - validation of cron expression parameter of `RScheduledExecutorService.schedule` method @@ -309,6 +353,7 @@ Fixed - `RRateLimiter.acquire` method throws NPE ### 14-Jun-2018 - versions 2.12.2 and 3.7.2 released Feature - `RBatchOptions.executionMode` setting added. Please refer to [documentation](https://github.com/redisson/redisson/wiki/10.-additional-features#103-execution-batches-of-commands) for more details + Fixed - NPE in JCacheManager.close method Fixed - ExecutorService tasks aren't reloaded properly Fixed - removed unnecessary creation of HashMap instances in cluster mode @@ -327,8 +372,10 @@ Feature - ExecutorService task failover. Default failover interval is 60 seconds Feature - `RScoredSortedSet.pollFirst` and `pollLast` methods with count parameter added Feature - `RScoredSortedSet.pollFirst` and `pollLast` methods with timeout added Feature - `RScoredSortedSet.pollFirstFromAny` and `pollLastFromAny` methods added + Improvement - `Node.time()` method returns `Time` object Improvement - RListReactive, RMapCacheReactive, RSetCacheReactive and RSetReactive are up-to-date to Async interfaces + Fixed - setPingConnectionInterval is not propagated for single server configuration Fixed - ClusterConnectionManager should use shared resolverGroup Fixed - value can't be added to BloomFilter @@ -347,8 +394,10 @@ Feature - __XA Transaction API implementation__ Please refer to [documentation] Feature - `RPermitExpirableSemaphoreReactive` object added Feature - `RMap.fastReplace` method added Feature - PING support for Pub/Sub connections + Improvement - `RBatch` object settings extracted as BatchOptions object Improvement - `RBitSet.set` method should return boolean + Fixed - New IP discovery through DNS doesn't work for cluster mode Fixed - replication for Tomcat Session Manager with `readMode=INMEMORY` Fixed - `pingConnectionInterval` is not applied @@ -367,6 +416,7 @@ Fixed - `RedisTimeoutException` arise during blocking command execution on RBloc Feature - `RKeys.copy` method added Feature - `RObject.copy` method added Feature - `RSetCache.getLock` method added + Fixed - `ClusterConnectionManager` throws `IllegalArgumentException` Fixed - `CommandDecoder` doesn't remove command from commands queue when response was decoded with error Fixed - `RSetMultimap.get()` doesn't create multimap entry in case of absence @@ -377,6 +427,7 @@ Fixed - hdel comand wasn't used during remote service task removal ### 27-Mar-2018 - versions 2.11.4 and 3.6.4 released Feature - `RSet.getLock` method added + Fixed - race condition with load balancer node selection Fixed - `READONLY can't write against a read only slave` error during failover Fixed - NPE during failover in Sentinel mode @@ -388,6 +439,7 @@ Fixed - `ClassCastException` in `RListMultimapCache.removeAll` method ### 14-Mar-2018 - versions 2.11.3 and 3.6.3 released Feature - DNS monitoring for Sentinel nodes + Fixed - Old/stale nodes not removed from NodesGroup Fixed - CertificateException while connecting over SSL to Azure or AWS Elasticache config endpoint Fixed - publish subscribe connections couldn't be resubscribed during failover @@ -410,8 +462,10 @@ Feature - new values added to `performanceMode` setting Feature - `lockAsync` and `unlockAsync` methods added to `RedissonMultiLock` Feature - `RMapCache.remainTimeToLive` method added Feature - `Config.addressResolverGroupFactory` setting added (thanks @Hai Saadon) + Improvement - `UpdateMode.AFTER_REQUEST` update mode optimization in tomcat session manager Improvement - removed ByteBuf object usage during collection iteration + Fixed - `Unable to send command` error under heavy load using Redisson PRO Fixed - `expire`, `expireAt` and `clearExpire` commands aren't implemented properly for `RBloomFilter`, `RDelayedQueue`, `RFairLock`, `RLocalCachedMap` and `RPermitExpirableSemaphore` object Fixed - Redis clients duplication during discovering ip change of hostname @@ -425,6 +479,7 @@ Feature - `rangeTailReversed`, `rangeHeadReversed` and `rangeReversed` methods a Feature - `RBucketsAsync` interface added Feature - `scanInterval` setting added for Sentinel mode Feature - `RLocalCachedMap.clearLocalCache` method added + Fixed - remove `hset` command invocation during `RMapCache` entry loading Fixed - buffer leak in `replace` and `remove` methods of `RLocalCachedMap` object Fixed - `RRemoteService` object throws NPE @@ -451,8 +506,10 @@ Feature - __`DoubleAdder` object added__ Please read [documentation](https://git Feature - `RBucket.getAndDelete`, `RAtomicLong.getAndDelete` and `RAtomicDouble.getAndDelete` methods added Feature - __`RAtomicDoubleReactive` object added__ Feature - `RPriorityQueue.pollLastAndOfferFirstTo` method added + Improvement - support single config endpoint node for cluster mode Improvement - hash functions replaced with https://github.com/google/highwayhash + Fixed - JDK 1.6+ compatibility for RemoteService Fixed - `setDnsMonitoringInterval(-1)` doesn't disable DNS monitoring Fixed - `RLocalCachedMap.putAll` gets stuck if map passed as parameter contains > 10000 elements @@ -467,6 +524,7 @@ Fixed - JsonJacksonCoded shouldn't override provided objectMapper settings (than ### 25-Dec-2017 - versions 2.10.7 and 3.5.7 released Feature - __`RClusteredBitSet` object added__ Please read [documentation](https://github.com/redisson/redisson/wiki/6.-Distributed-objects/#641-bitset-data-partitioning) for more details + Improvement - Memory consumption optimization. `RExecutorFuture` and `RScheduledFuture` shouldn't be tracked if they weren't stored Improvement - Config settings `codecProvider` and `redissonReferenceEnabled` renamed to `referenceCodecProvider` and `referenceEnabled` Fixed - `RedissonRedLock` couldn't be locked in some cases @@ -480,7 +538,9 @@ Feature - `RSetMultimapReactive` object added Feature - `RListMultimapReactive` object added Feature - `ReconnectionStrategy` and `SyncStrategy` added to `LocalCachedMapOptions` Feature - `pingConnectionInterval` setting added + Improvement - added sync on key for `JCache.invoke` method + Fixed - arguments encoding for `RScript` Fixed - `MapLoader` hangs if loaded value is null Fixed - OutOfMemory during `RExecutorService` usage @@ -501,9 +561,11 @@ Fixed - handling connection to Redis nodes returned to online state Feature - Added pingConnection, keepAlive, tcpNoDelay settings Feature - Slaves synchronization support for `RBatch`/`RBatchReactive` objects + Improvement - Data encoding should be executed on client thread only Improvement - Handling Redis redirect optimization Improvement - Better collection handling for RedissonReference (thanks to Rui Gu) + Fixed - `RedisLoadingException` handling during re-connection process Fixed - `RedisClient` can't be shutdown properly Fixed - timeout drift for `RFairLock` @@ -518,8 +580,10 @@ Fixed - `RMapCache.getAll` doesn't support large keySet ### 28-Sep-2017 - versions 2.10.4 and 3.5.4 released Feature - added `maxSize` setting for `SpringCacheManager` Feature - allow `LiveObjectService` to work with classes that inherit from REntities (thanks to @sdjacobs) + Improvement - `RMapCache` entires eviction process optimized Improvement - handling of slave down process + Fixed - operation on slave coldn't be executed after its restart (thanks to @xavierfacq) Fixed - `ArrayIndexOutOfBoundsException` in RedissonSessionRepository Fixed - storing Live Objects in Redisson's collection objects (thanks to Rui Gu) @@ -552,6 +616,7 @@ Fixed - connection could be in closed state during reconnection process for bloc Feature - DNS monitoring support for Sentinel, Master/Slave and Replicated mode Feature - `org.redisson.codec.CompositeCodec` added Feature - added `readMode` property for Tomcat RedissonSessionManager + Fixed - `RMapCache.putAll` couldn't handle map with entries amount larger than 5000 Fixed - master entry should be shutdown in slaveConnectionPool during master change process Fixed - Redisson's Tomcat Session attributes should be read first to avoid invalidated session exception @@ -566,6 +631,7 @@ Feature - __`RLockReactive` object added__ Feature - __`RReadWriteLockReactive` object added__ Feature - __`RSemaphoreReactive` object added__ Feature - `unlink`, `flushdbParallel`, `flushallParallel` methods added + Fixed - ContextClassLoader should be used by Redisson Codec for Tomcat session's object serialization Fixed - Spring Cache `NullValue` does not implement Serializable Fixed - `RLocalCachedMap` doesn't work with non-json and non-binary codecs @@ -584,8 +650,10 @@ Feature - `RExecutorService` should return RExecutorFuture object with taskId Feature - added `RList.get` method to load elements in a batch Feature - ability to submit few tasks atomically (in batch) through `RExecutorService` interface Feature - [Config.keepPubSubOrder](https://github.com/redisson/redisson/wiki/2.-Configuration#keeppubsuborder) setting added + Improvement - make `RMapReactive` and `RMapCacheReactive` interfaces match with `RMap` and `RMapCache` Improvement - `RLexSortedSet` should extend `RSortedSet` + Fixed - connection listener is not invoked in some cases Fixed - `RMapCache` `remove`, `put`, `putIfAbsent` and `replace` methods aren't respect entry expiration Fixed - `SCAN` command should be used in `RKeys.deleteByPattern` method @@ -614,8 +682,10 @@ Feature - `RedissonCacheManager.setAllowNullValues` method added Feature - `RedissonSpringCacheManager.setCacheNames` method added Feature - Map Entry listeners support added for `RMapCache` object Feature - `Config.lockWatchdogTimeout` parameter added + Improvement - NPE checking for key and value added for RedissonMapCache Improvement - `RKeys.deleteByPatternAsync` uses scan command + Fixed - `RBoundedBlockingQueue.pollAsync` blocks if timeout is less than 1 second Fixed - unlocking of nested `RReadWriteLock.readLock` deletes current acquired `RReadWriteLock.writeLock` Fixed - wrong null values checking in RDelayedQueue methods @@ -628,6 +698,7 @@ Fixed - JSR107 cache implementation should throw `javax.cache.CacheException` in Feature - __Dropwizard metrics integration__ More details [here](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks#147-dropwizard-metrics) Feature - `RLocalCachedMap.preloadCache` method added (thanks to Steve Draper) Feature - `RGeo.radiusStoreTo` methods added (thanks to Cory Sherman) + Fixed - NoClassDefFoundError exception during using `redisson-all` module ### 27-Apr-2017 - versions 2.9.1 and 3.4.1 released @@ -647,7 +718,9 @@ Feature - `RMapCache.fastPutIfAbsent` with ttl added (thanks to Dobi) Feature - `EvictionPolicy.WEAK` added for `RLocalCachedMap` Feature - `LocalCachedMapOptions.invalidationPolicy` introduced for `RLocalCachedMap` Feature - `expire`, `expireAt`, `move`, `migrate`, `clearExpire`, `renamenx`, `rename`, `remainTimeToLive` methods added to RKey + Improvement - `EvictionPolicy.LRU` optimization for `RLocalCachedMap` + Fixed - `RTopic.onSubscribe` should be invoked after failover process Fixed - Spring boot with redisson 3.3.2 fails without optional actuator dependency (thanks to Rick Perkowski) Fixed - `RedissonCacheMap.putIfAbsentAsync` doesn't take in account ttl and minIdleTime params (thanks to Dobi) @@ -668,6 +741,7 @@ Feature - autoconfigured Spring Boot CacheStatisticsProvider implementation (tha Feature - `RKeys.touch` and `RObject.touch` methods added Feature - `RedissonCompletionService` implementation added Feature - `RMap.getReadWriteLock` method added + Fixed - NPE during `RLocalCachedMap.fastRemove` invocation Fixed - `redisson-tomcat-8` module is not compatible with Tomcat 8.5 Fixed - URLBuilder methods should be synchronized @@ -681,7 +755,9 @@ Fixed - `Config.fromJson(file)` method, throws StackOverflowError Feature - Cache with SoftReference support added for `RLocalCachedMap` Feature - `Config.subscriptionMode` setting added + Improvement - errors handling during RBatch execution + Fixed - StackOverflowException in URLBuilder Fixed - TomcatSessionManager can't be used in Tomcat if Redisson has been deployed in web application Fixed - skip cluster nodes with the "handshake" flag (thanks to @dcheckoway) @@ -695,7 +771,9 @@ Feature - __`RPriorityQueue` object added__ More details [here](https://github.c Feature - __`RPriorityDeque` object added__ More details [here](https://github.com/redisson/redisson/wiki/7.-distributed-collections/#716-priority-deque) Feature - `removeAllListeners` and `removeListener` by instance methods added for `RTopic` and `RPatternTopic` Feature - `RLockAsync` interface added + Improvement - `RRemoteService` is now able to support method overload + Fixed - `RLocalCachedMap` is not Redis cluster compatible Fixed - cascade slaves are not supported in cluster mode Fixed - shutdown checking during master change state check added @@ -704,6 +782,7 @@ Fixed - master isn't checked during new slave discovery in Sentinel mode ### 02-Feb-2017 - versions 2.7.4 and 3.2.4 released Feature - Allow to specify Redisson instance/config during JCache cache creation + Fixed - `ByteBuf.release` method invocation is missed in `LZ4Codec` and `SnappyCodec` Fixed - AssertionError during Redisson shutdown Fixed - `RReadWriteLock.readLock` couldn't be acquired by same thread which has already acquired `writeLock` @@ -719,8 +798,10 @@ Redisson Team is pleased to announce __ULTRA-FAST__ Redisson PRO edition. Performance measure results available in [Benchmark whitepaper](https://redisson.pro/Redisson%20PRO%20benchmark%20whitepaper.pdf) Feature - `RMap.getLock(key)` and `RMultimap.getLock(key)` methods added + Improvement - `RedissonSpringCacheManager` constructor with Redisson instance only added Improvement - `CronSchedule` moved to `org.redisson.api` package + Fixed - RedissonBaseIterator.hasNext() doesn't return false in some cases Fixed - NoSuchFieldError exception in `redisson-tomcat` modules Fixed - ConnectionPool size not respected during redirect of cluster request @@ -733,6 +814,7 @@ Fixed - CommandDecoder should print all replay body on error Feature - `RList`, `RSet` and `RScoredSortedSet` implements `RSortable` interface with SORT command support Feature - `NodeAsync` interface Feature - `Node.info`, `Node.getNode` methods added + Fixed - elements distribution of `RBlockingFairQueue` across consumers Fixed - `factory already defined` error during Redisson initialization under Apache Tomcat @@ -743,6 +825,7 @@ Url format used in config files __has changed__. For example: "//127.0.0.1:6739" now should be written as "redis://127.0.0.1:6739" Feature - `RSet.removeRandom` allows to remove several members at once + Fixed - exceptions during shutdown Fixed - redis url couldn't contain underscore in host name Fixed - IndexOutOfBoundsException during response decoding