Updated Branches: refs/heads/cassandra-1.1 feae9efa4 -> d2eadba2a refs/heads/cassandra-1.2 0f1fb4340 -> ef5390b6d refs/heads/trunk 6b4f2ee59 -> 45400d700
Remove synchronization in long-running PCRS Patch by Oleg Kibirev, reviewed by brandonwilliams for CASSANDRA-5456 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d2eadba2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d2eadba2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d2eadba2 Branch: refs/heads/cassandra-1.1 Commit: d2eadba2a6fe174aa94309deb487ff6391674847 Parents: feae9ef Author: Brandon Williams <[email protected]> Authored: Fri Apr 12 12:11:30 2013 -0500 Committer: Brandon Williams <[email protected]> Committed: Fri Apr 12 12:11:30 2013 -0500 ---------------------------------------------------------------------- .../service/PendingRangeCalculatorService.java | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2eadba2/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java index d06f2d8..541888a 100644 --- a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java +++ b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java @@ -38,6 +38,7 @@ import java.net.InetAddress; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.LinkedHashMap; import java.util.concurrent.*; @@ -153,8 +154,10 @@ public class PendingRangeCalculatorService extends PendingRangeCalculatorService // For each of the bootstrapping nodes, simply add and remove them one by one to // allLeftMetadata and check in between what their ranges would be. - synchronized (bootstrapTokens) - { + synchronized(bootstrapTokens) { + bootstrapTokens = new LinkedHashMap<Token, InetAddress>(bootstrapTokens); + } + for (Map.Entry<Token, InetAddress> entry : bootstrapTokens.entrySet()) { InetAddress endpoint = entry.getValue(); @@ -164,7 +167,6 @@ public class PendingRangeCalculatorService extends PendingRangeCalculatorService pendingRanges.put(range, endpoint); allLeftMetadata.removeEndpoint(endpoint); } - } // At this stage pendingRanges has been updated according to leaving and bootstrapping nodes. // We can now finish the calculation by checking moving nodes.
