Fixed - RedissonPriorityBlockingQueue should return null if negative timeout defined. #4652

pull/4666/head
余儆敬 2 years ago
parent 2b24829b60
commit 4c5d1e5302

@ -72,6 +72,10 @@ public class RedissonPriorityBlockingQueue<V> extends RedissonPriorityQueue<V> i
}
protected <T> void takeAsync(CompletableFuture<V> result, long delay, long timeoutInMicro, RedisCommand<T> command, Object... params) {
if (timeoutInMicro < 0) {
result.complete(null);
return;
}
long start = System.currentTimeMillis();
commandExecutor.getConnectionManager().getGroup().schedule(() -> {
RFuture<V> future = wrapLockedAsync(command, params);
@ -115,9 +119,6 @@ public class RedissonPriorityBlockingQueue<V> extends RedissonPriorityQueue<V> i
}
public RFuture<V> pollAsync(long timeout, TimeUnit unit) {
if (timeout < 0) {
return new CompletableFutureWrapper<>((V) null);
}
CompletableFuture<V> result = new CompletableFuture<V>();
takeAsync(result, 0, unit.toMicros(timeout), RedisCommands.LPOP, getRawName());
return new CompletableFutureWrapper<>(result);
@ -155,9 +156,6 @@ public class RedissonPriorityBlockingQueue<V> extends RedissonPriorityQueue<V> i
@Override
public RFuture<V> pollLastAndOfferFirstToAsync(String queueName, long timeout, TimeUnit unit) {
if (timeout < 0) {
return new CompletableFutureWrapper<>((V) null);
}
CompletableFuture<V> result = new CompletableFuture<V>();
takeAsync(result, 0, unit.toMicros(timeout), RedisCommands.RPOPLPUSH, getRawName(), queueName);
return new CompletableFutureWrapper<>(result);

Loading…
Cancel
Save