Merge branch 'cassandra-2.1' into trunk Conflicts: src/java/org/apache/cassandra/service/StorageService.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c3732209 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c3732209 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c3732209 Branch: refs/heads/trunk Commit: c37322097c1a9c2534942ea0ef002e1ee24411b4 Parents: bdffd3c 4333976 Author: Brandon Williams <brandonwilli...@apache.org> Authored: Wed Jul 30 16:55:32 2014 -0500 Committer: Brandon Williams <brandonwilli...@apache.org> Committed: Wed Jul 30 16:55:32 2014 -0500 ---------------------------------------------------------------------- .../cassandra/service/StorageService.java | 45 +------------------- 1 file changed, 2 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c3732209/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/StorageService.java index 9a30305,18148b7..946204d --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@@ -833,51 -833,10 +833,10 @@@ public class StorageService extends Not } else { - // if we were already bootstrapped with 1 token but num_tokens is set higher in the config, - // then we need to migrate to multi-token - if (bootstrapTokens.size() == 1 && DatabaseDescriptor.getNumTokens() > 1) - { - // wait for ring info - logger.info("Sleeping for ring delay ({}ms)", delay); - Uninterruptibles.sleepUninterruptibly(delay, TimeUnit.MILLISECONDS); - logger.info("Calculating new tokens"); - // calculate num_tokens tokens evenly spaced in the range (left, right] - Token right = bootstrapTokens.iterator().next(); - TokenMetadata clone = tokenMetadata.cloneOnlyTokenMap(); - clone.updateNormalToken(right, FBUtilities.getBroadcastAddress()); - Token left = clone.getPredecessor(right); - - // get (num_tokens - 1) tokens spaced evenly, and the last token will be our current token (right) - for (int tok = 1; tok < DatabaseDescriptor.getNumTokens(); ++tok) - { - Token l = left; - Token r = right; - // iteratively calculate the location of the token using midpoint - // num iterations is number of bits in IEE754 mantissa (including implicit leading 1) - // we stop early for terminating fractions - // TODO: alternatively we could add an interpolate() method to IPartitioner - double frac = (double)tok / (double)DatabaseDescriptor.getNumTokens(); - Token midpoint = getPartitioner().midpoint(l, r); - for (int i = 0; i < 53; ++i) - { - frac *= 2; - if (frac == 1.0) /* not a bug */ - break; - else if (frac > 1.0) - { - l = midpoint; - frac -= 1.0; - } - else - r = midpoint; - midpoint = getPartitioner().midpoint(l, r); - } - bootstrapTokens.add(midpoint); - } - logger.info("Split previous range ({}, {}] into {}", left, right, bootstrapTokens); - } + if (bootstrapTokens.size() != DatabaseDescriptor.getNumTokens()) + throw new ConfigurationException("Cannot change the number of tokens from " + bootstrapTokens.size() + " to " + DatabaseDescriptor.getNumTokens()); else - logger.info("Using saved tokens " + bootstrapTokens); + logger.info("Using saved tokens {}", bootstrapTokens); } }