From 89142b71bc1bef984b24b745736fd996821854ab Mon Sep 17 00:00:00 2001 From: Nikita Date: Fri, 3 Jan 2014 13:12:02 +0400 Subject: [PATCH] RedissonList.addAll connection should be closed --- src/main/java/org/redisson/RedissonList.java | 33 +++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/redisson/RedissonList.java b/src/main/java/org/redisson/RedissonList.java index c47f25e78..f3c90bcc3 100644 --- a/src/main/java/org/redisson/RedissonList.java +++ b/src/main/java/org/redisson/RedissonList.java @@ -85,23 +85,26 @@ public class RedissonList implements List { @Override public boolean addAll(int index, Collection coll) { checkPosition(index); - while (true) { - if (index < size()) { - RedisConnection c = redisson.connect(); - - c.watch(name); - List tail = c.lrange(name, index, size()); - - c.multi(); - c.ltrim(name, 0, index - 1); - c.rpush(name, coll.toArray()); - c.rpush(name, tail.toArray()); - if (c.exec().size() == 3) { - return true; + if (index < size()) { + RedisConnection c = redisson.connect(); + try { + while (true) { + c.watch(name); + List tail = c.lrange(name, index, size()); + + c.multi(); + c.ltrim(name, 0, index - 1); + c.rpush(name, coll.toArray()); + c.rpush(name, tail.toArray()); + if (c.exec().size() == 3) { + return true; + } } - } else { - return addAll(coll); + } finally { + c.close(); } + } else { + return addAll(coll); } }