Commit Graph

5103 Commits (0487fd9c40976194680a1208eaaae45ddc9d657e)
 

Author SHA1 Message Date
Nikita Koksharov ad03cba3fa refactoring 6 years ago
Nikita Koksharov 336e5f18e2 Merge branch 'master' of github.com:redisson/redisson 6 years ago
Nikita Koksharov 6189c1bf71 Fixed - RedissonObjectBuilder.REFERENCES map isn't filled once. #2147 6 years ago
Nikita Koksharov 059423d9c8
Merge pull request #2137 from fgiannetti/3.0.0
Add natMap for Sentinel configuration
6 years ago
Nikita Koksharov 25914b000c Fixed - RReadWriteLock.readLock doesn't take in account expiration date of the last acquired read lock. (thanks to Aimwhipy) #2144 6 years ago
Nikita Koksharov 9232aa6dba iterators' result object of RMapRx changed to Flowable 6 years ago
Nikita Koksharov c6ab7fd85a Merge branch 'master' of github.com:redisson/redisson 6 years ago
Nikita Koksharov 9f886d6e5e Fixed - Tomcat Session doesn't expire if broadcastSessionEvents = true #2104 6 years ago
Fernando Giannetti a9f7a99388
allow IPv6 format on natMap 6 years ago
Zhelyazko Chobantonov f62f028e08 resolves issue: ClassNotFoundException thrown during SeriazliationCodec.decode #2136 6 years ago
Nikita Koksharov 72ba19756d
Update README.md 6 years ago
Nikita Koksharov 6859087e6a
Update README.md 6 years ago
Nikita Koksharov 14360a866e
Update README.md 6 years ago
Nikita Koksharov bf2f194875
Update README.md 6 years ago
Nikita Koksharov 02f3396a48
Update README.md 6 years ago
Nikita Koksharov 71f245bae2
Update README.md 6 years ago
Nikita Koksharov d470e4ffe2
Update CHANGELOG.md 6 years ago
Nikita Koksharov ec4c7bfdf9
Update CHANGELOG.md 6 years ago
Nikita Koksharov 5df4b02639
Update CHANGELOG.md 6 years ago
Nikita Koksharov 0b9f660d06 [maven-release-plugin] prepare for next development iteration 6 years ago
Nikita Koksharov 597293fe40 [maven-release-plugin] prepare release redisson-3.11.0 6 years ago
Nikita Koksharov 24aa434610 netty updated 6 years ago
Nikita Koksharov e9043d9249
Update README.md 6 years ago
Nikita Koksharov d172c32600 test added 6 years ago
Nikita Koksharov 01b94a82c0 refactoring 6 years ago
Nikita Koksharov b10e8c559c Fixed - HttpSessionListener#sessionDestoyed isn't invoked if session wasn't loaded by Tomcat instance. #2104 6 years ago
Nikita Koksharov 68286c2683 Feature - radiusStoreSortedTo methods added to RGeo, RGeoAsync, RGeoRx, RGeoReactive interfaces. #2113 6 years ago
Nikita Koksharov e150e5dcbc refactoring 6 years ago
Nikita Koksharov 008756ec94 Fixed - redisson-spring-data ReactiveSubscription.receive() method throws NPE. #2126 6 years ago
Nikita Koksharov 5207d920d8 Feature - RRingBuffer object added. #249 6 years ago
Nikita Koksharov 75153ca798 libs updated 6 years ago
Nikita Koksharov b777fed79e Improvement - reduced memory consumption by ClusterConnectionManager. #2105 6 years ago
Nikita Koksharov 18a6cea368 Fixed - Redis response isn't fully consumed after decoding error. #2098 6 years ago
Nikita Koksharov 09c83745ad refactoring 6 years ago
Nikita Koksharov ed473d8db7 Merge branch 'master' of github.com:redisson/redisson 6 years ago
Nikita Koksharov 01db0c43df refactoring 6 years ago
Nikita Koksharov d516570c83
Update README.md 6 years ago
Nikita Koksharov e02a319466
Update README.md 6 years ago
Nikita Koksharov 3d2a098ad0
Update README.md 6 years ago
Nikita Koksharov 9b67dc6daa Merge branch 'master' of github.com:redisson/redisson 6 years ago
Nikita Koksharov cd595c130b Feature - Async, Reactive, RxJava2 interfaces added to JCache. #2059 6 years ago
Nikita Koksharov b1a863782c
Merge pull request #2091 from welkinbai/master
fix bug: in RedissonNodeConfig constructor with oldConf, miss mapRedu…
6 years ago
Nikita Koksharov 0cca617c78 Fixed - Spring Session PRINCIPAL_NAME_INDEX_NAME session attribute has incorrect name 6 years ago
Nikita Koksharov 9728f29ea9
Merge pull request #2085 from jchobantonov/master
UpdateValve needs to execute manager.store only once at the end of the request #2084
6 years ago
Justin Corpron 6dbc972b6c Fix timeout drift in RedissonFairLock
This change alters how timeouts are calculated for threads added into the queue
when the lock cannot be immediately acquired, and adds logic to reduce the
timeouts when a thread leaves the queue by either acquiring the lock or timing-
out while waiting. Tests have been added to ensure that the added and altered
lua code is necessary to provide the documented behavior of the fair lock, and
that the changes do not break existing desired behavior.

The timeout drift issue is resolved by decreasing the timeouts in the
redisson_lock_timeout sorted set when a thread is removed from the queue. This
logic was added to the tryLockInnerAsync lua code (both variations) in the
branch where the lock is successfully acquired, and in this case all timeouts
except the timeout being removed from the queue are decreased by threadWaitTime.
Additionally, the existing lua code in acquireFailedAsync was changed to always
decrease the timeouts regardless of where the removed thread is in the queue,
however this requires that the queue be traversed to determine the position of
the thread being removed is in the queue so that only those threads after it
have their timeouts decreased. The existing code also had the behavior where if
the 1st and 2nd threads in the queue were removed via acquireFailedAsync, the
TTL for the 3rd thread would equal the lock TTL and it would not be able to
acquire the lock fairly if the lock expired. This change requires the change to
the timeout calculation in order to fix both the timeout drift and the unfair
timeout decrease problems of the existing code.

The existing timeout calculation at the end of the lua code for
tryLockInnerAsync in the tryLock w/ waitTime call path used to be either the
lock timeout value + 5s for the first thread in the queue or for the other
threads in the queue the value was essentially the first thread's timeout + 5s.
This second rule for the 2nd thread is correct per the documentation, but for
the 3rd to the Nth thread, the timeout would not allow these threads to acquire
the lock fairly within 5s after the prior thread if the 1st and 2nd thread died
since their timeouts are the same as the 2nd thead, and this is contrary to the
documentation which provides 5s per thread in the queue. The new code sets the
timeout for a thread added to the queue to 5s plus the timeout of the thread at
the end of the queue; there is always a check now to see if the thread that has
failed to acquire the lock in the lua script is already in the queue, and if it
is already in the queue, then the lua code returns the approximate ttl based on
that thread's current timeout (timeout - 5s).

Note that the "remove stale threads" while loop was not altered even though it
also removes threads from the queue. This is the expected behavior and was
preserved, and some added tests now check the timeout expiration behavior.
6 years ago
Fernando Giannetti 3716299bea
Add natMap for Sentinel configuration 6 years ago
Nikita Koksharov aec2460b76 Fixed - AsyncSemaphore doesn't notify sleeping threads with permits more than one. #2095 6 years ago
Nikita Koksharov f2703e7526 Merge branch 'master' of github.com:redisson/redisson 6 years ago
Nikita Koksharov 355b25a4b4 Fixed - RedisTemplate.radius and RedisConnection.geoRadius throw IllegalArgumentException during response decoding. #2093 6 years ago
xiaoxuan.bai 7771c40434 fix bug: in RedissonNodeConfig constructor with oldConf, miss mapReduceWorkers value set 6 years ago