Fixed - RRateLimiter.tryAcquire with timeout blocks forever #1659

pull/1705/head
Nikita 7 years ago
parent c38fecd9a4
commit 7015d31aa8

@ -169,7 +169,7 @@ public class RedissonRateLimiter extends RedissonObject implements RRateLimiter
public void run() {
promise.trySuccess(false);
}
}, remains, TimeUnit.SECONDS);
}, remains, TimeUnit.MILLISECONDS);
} else {
final long start = System.currentTimeMillis();
commandExecutor.getConnectionManager().getGroup().schedule(new Runnable() {
@ -183,7 +183,7 @@ public class RedissonRateLimiter extends RedissonObject implements RRateLimiter
tryAcquireAsync(permits, promise, remains - elapsed);
}
}, delay, TimeUnit.SECONDS);
}, delay, TimeUnit.MILLISECONDS);
}
}
});

@ -17,6 +17,16 @@ import org.redisson.api.RateType;
public class RedissonRateLimiterTest extends BaseTest {
@Test(timeout = 1500)
public void testTryAcquire() {
RRateLimiter rr = redisson.getRateLimiter("acquire");
assertThat(rr.trySetRate(RateType.OVERALL, 1, 5, RateIntervalUnit.SECONDS)).isTrue();
assertThat(rr.tryAcquire(1, 1, TimeUnit.SECONDS)).isTrue();
assertThat(rr.tryAcquire(1, 1, TimeUnit.SECONDS)).isFalse();
assertThat(rr.tryAcquire()).isFalse();
}
@Test
public void testAcquire() {
RRateLimiter rr = redisson.getRateLimiter("acquire");

Loading…
Cancel
Save