Fixes waitTime loses unit when passed to tryLockInnerAsync

In the methods tryAcquireAsync and tryAcquireOnceAsync, when leaseTime<=0, waitTime should be transformed to the new time unit "TimeUnit.MILLISECONDS".

Signed-off-by: James Jin <james.king.zj+github@gmail.com>
pull/5315/head
reedycreek 1 year ago committed by James Jin
parent bbb825698d
commit 9298c1b76c

@ -152,7 +152,8 @@ public class RedissonLock extends RedissonBaseLock {
if (leaseTime > 0) {
acquiredFuture = tryLockInnerAsync(waitTime, leaseTime, unit, threadId, RedisCommands.EVAL_NULL_BOOLEAN);
} else {
acquiredFuture = tryLockInnerAsync(waitTime, internalLockLeaseTime,
long waitMillis = unit.toMillis(waitTime);
acquiredFuture = tryLockInnerAsync(waitMillis, internalLockLeaseTime,
TimeUnit.MILLISECONDS, threadId, RedisCommands.EVAL_NULL_BOOLEAN);
}
@ -177,7 +178,8 @@ public class RedissonLock extends RedissonBaseLock {
if (leaseTime > 0) {
ttlRemainingFuture = tryLockInnerAsync(waitTime, leaseTime, unit, threadId, RedisCommands.EVAL_LONG);
} else {
ttlRemainingFuture = tryLockInnerAsync(waitTime, internalLockLeaseTime,
long waitMillis = unit.toMillis(waitTime);
ttlRemainingFuture = tryLockInnerAsync(waitMillis, internalLockLeaseTime,
TimeUnit.MILLISECONDS, threadId, RedisCommands.EVAL_LONG);
}
CompletionStage<Long> s = handleNoSync(threadId, ttlRemainingFuture);

Loading…
Cancel
Save