Skip to content

Commit b677f40

Browse files
committed
FIX: Concurrency problem in locator allNodes.
1 parent 715f73a commit b677f40

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/main/java/net/spy/memcached/ArcusKetamaNodeLocator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.SortedSet;
3333
import java.util.TreeMap;
3434
import java.util.TreeSet;
35+
import java.util.concurrent.CopyOnWriteArrayList;
3536
import java.util.concurrent.locks.Lock;
3637
import java.util.concurrent.locks.ReentrantLock;
3738

@@ -66,7 +67,7 @@ public ArcusKetamaNodeLocator(List<MemcachedNode> nodes) {
6667
public ArcusKetamaNodeLocator(List<MemcachedNode> nodes,
6768
ArcusKetamaNodeLocatorConfiguration conf) {
6869
super();
69-
allNodes = nodes;
70+
allNodes = new CopyOnWriteArrayList<>(nodes);
7071
ketamaNodes = new TreeMap<>();
7172
config = conf;
7273

src/main/java/net/spy/memcached/ArcusReplKetamaNodeLocator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.SortedSet;
3333
import java.util.TreeMap;
3434
import java.util.TreeSet;
35+
import java.util.concurrent.CopyOnWriteArrayList;
3536
import java.util.concurrent.locks.Lock;
3637
import java.util.concurrent.locks.ReentrantLock;
3738

@@ -65,7 +66,7 @@ public class ArcusReplKetamaNodeLocator extends SpyObject implements NodeLocator
6566

6667
public ArcusReplKetamaNodeLocator(List<MemcachedNode> nodes) {
6768
super();
68-
allNodes = nodes;
69+
allNodes = new CopyOnWriteArrayList<>(nodes);
6970
ketamaGroups = new TreeMap<>();
7071
allGroups = new HashMap<>();
7172

0 commit comments

Comments
 (0)