From d839350f42405ccd85ff478bd13bad9920522dee Mon Sep 17 00:00:00 2001 From: Dave Brosius Date: Wed, 7 May 2014 21:17:48 -0400 Subject: [PATCH] reduce garbage creation in calculatePendingRanges patch by dbrosius reviewed by bwilliams for cassandra-7191 --- CHANGES.txt | 1 + .../cassandra/service/PendingRangeCalculatorService.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 8533e648a2..312cf06b6a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -22,6 +22,7 @@ * fix time conversion to milliseconds in SimpleCondition.await (CASSANDRA-7149) * remove duplicate query for local tokens (CASSANDRA-7182) * raise streaming phi convict threshold level (CASSANDRA-7063) + * reduce garbage creation in calculatePendingRanges (CASSANDRA-7191) 1.2.16 * Add UNLOGGED, COUNTER options to BATCH documentation (CASSANDRA-6816) diff --git a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java index b408c7583c..6f77acee43 100644 --- a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java +++ b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java @@ -43,7 +43,6 @@ import java.util.Set; import java.util.Collection; import java.util.concurrent.*; - public class PendingRangeCalculatorService extends PendingRangeCalculatorServiceMBean { public static final PendingRangeCalculatorService instance = new PendingRangeCalculatorService(); @@ -157,9 +156,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. - for (InetAddress endpoint : bootstrapTokens.inverse().keySet()) + Multimap bootstrapAddresses = bootstrapTokens.inverse(); + for (InetAddress endpoint : bootstrapAddresses.keySet()) { - Collection tokens = bootstrapTokens.inverse().get(endpoint); + Collection tokens = bootstrapAddresses.get(endpoint); allLeftMetadata.updateNormalTokens(tokens, endpoint); for (Range range : strategy.getAddressRanges(allLeftMetadata).get(endpoint))