From 2180623f370c09ffa5235dd30ce96614093727a1 Mon Sep 17 00:00:00 2001 From: Par Winzell Date: Sat, 11 Sep 2010 17:02:48 +0000 Subject: [PATCH] Don't modify the set we're iterating over. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6152 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/presents/peer/server/PeerManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/java/com/threerings/presents/peer/server/PeerManager.java b/src/java/com/threerings/presents/peer/server/PeerManager.java index 44f7c0434..7cfe888d1 100644 --- a/src/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/java/com/threerings/presents/peer/server/PeerManager.java @@ -503,6 +503,7 @@ public abstract class PeerManager final Map results = Maps.newHashMap(); final Map failures = Maps.newHashMap(); + final Set completedNodes = Sets.newHashSet(); for (final String node : nodes) { invokeNodeRequest(node, requestBytes, new InvocationService.ResultListener() { public void requestProcessed (Object result) { @@ -517,8 +518,8 @@ public abstract class PeerManager nodeDone(node); } protected void nodeDone (String node) { - nodes.remove(node); - if (nodes.isEmpty()) { + completedNodes.add(node); + if (nodes.size() == completedNodes.size()) // if all nodes have responded, let caller know listener.requestsProcessed(new NodeRequestsResultImpl(results, failures)); }