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 <[email protected]>
Authored: Wed Jul 30 16:55:32 2014 -0500
Committer: Brandon Williams <[email protected]>
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);
}
}