From 97ac6b4faae9554986a3974f4cc292f9d07a597e Mon Sep 17 00:00:00 2001 From: Nikita Date: Fri, 20 Nov 2015 13:55:19 +0300 Subject: [PATCH] RList.addAllAsync fixed --- src/main/java/org/redisson/RedissonList.java | 31 +++++++++++++------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/redisson/RedissonList.java b/src/main/java/org/redisson/RedissonList.java index 1b34b56dc..3a0fe6873 100644 --- a/src/main/java/org/redisson/RedissonList.java +++ b/src/main/java/org/redisson/RedissonList.java @@ -167,19 +167,30 @@ public class RedissonList extends RedissonExpirable implements RList { promise.setSuccess(false); return promise; } - final int listSize = size(); - List args = new ArrayList(c.size() + 1); - args.add(getName()); - args.addAll(c); - Future res = commandExecutor.writeAsync(getName(), codec, RPUSH, args.toArray()); - res.addListener(new FutureListener() { + Future sizeFuture = sizeAsync(); + sizeFuture.addListener(new FutureListener() { @Override - public void operationComplete(Future future) throws Exception { - if (future.isSuccess()) { - promise.setSuccess(listSize != future.getNow()); - } else { + public void operationComplete(Future future) throws Exception { + if (!future.isSuccess()) { promise.setFailure(future.cause()); + return; } + + final int listSize = future.getNow(); + List args = new ArrayList(c.size() + 1); + args.add(getName()); + args.addAll(c); + Future res = commandExecutor.writeAsync(getName(), codec, RPUSH, args.toArray()); + res.addListener(new FutureListener() { + @Override + public void operationComplete(Future future) throws Exception { + if (future.isSuccess()) { + promise.setSuccess(listSize != future.getNow()); + } else { + promise.setFailure(future.cause()); + } + } + }); } }); return promise;