Repository: cassandra Updated Branches: refs/heads/trunk 68fdb2db2 -> 07893d704
http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/hadoop/AbstractColumnFamilyInputFormat.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/hadoop/AbstractColumnFamilyInputFormat.java b/src/java/org/apache/cassandra/hadoop/AbstractColumnFamilyInputFormat.java index 8368519..f4ad40f 100644 --- a/src/java/org/apache/cassandra/hadoop/AbstractColumnFamilyInputFormat.java +++ b/src/java/org/apache/cassandra/hadoop/AbstractColumnFamilyInputFormat.java @@ -150,14 +150,12 @@ public abstract class AbstractColumnFamilyInputFormat<K, Y> extends InputFormat< if (jobKeyRange.end_token != null) throw new IllegalArgumentException("only start_key supported"); jobRange = new Range<>(partitioner.getToken(jobKeyRange.start_key), - partitioner.getToken(jobKeyRange.end_key), - partitioner); + partitioner.getToken(jobKeyRange.end_key)); } else if (jobKeyRange.start_token != null) { jobRange = new Range<>(partitioner.getTokenFactory().fromString(jobKeyRange.start_token), - partitioner.getTokenFactory().fromString(jobKeyRange.end_token), - partitioner); + partitioner.getTokenFactory().fromString(jobKeyRange.end_token)); } else { @@ -175,8 +173,7 @@ public abstract class AbstractColumnFamilyInputFormat<K, Y> extends InputFormat< else { Range<Token> dhtRange = new Range<Token>(partitioner.getTokenFactory().fromString(range.start_token), - partitioner.getTokenFactory().fromString(range.end_token), - partitioner); + partitioner.getTokenFactory().fromString(range.end_token)); if (dhtRange.intersects(jobRange)) { @@ -252,7 +249,7 @@ public abstract class AbstractColumnFamilyInputFormat<K, Y> extends InputFormat< { Token left = factory.fromString(subSplit.getStart_token()); Token right = factory.fromString(subSplit.getEnd_token()); - Range<Token> range = new Range<Token>(left, right, partitioner); + Range<Token> range = new Range<Token>(left, right); List<Range<Token>> ranges = range.isWrapAround() ? range.unwrap() : ImmutableList.of(range); for (Range<Token> subrange : ranges) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java index d4b4eab..43cd2c0 100644 --- a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java @@ -272,7 +272,7 @@ public class CQLSSTableWriter implements Closeable public static class Builder { private File directory; - private IPartitioner partitioner = new Murmur3Partitioner(); + private IPartitioner partitioner = Murmur3Partitioner.instance; protected SSTableFormat.Type formatType = null; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java index db55353..7e3c877 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableScanner.java @@ -76,16 +76,16 @@ public class BigTableScanner implements ICompactionScanner this.rowIndexEntrySerializer = sstable.descriptor.version.getSSTableFormat().getIndexSerializer(sstable.metadata); List<AbstractBounds<RowPosition>> boundsList = new ArrayList<>(2); - if (dataRange.isWrapAround() && !dataRange.stopKey().isMinimum(sstable.partitioner)) + if (dataRange.isWrapAround() && !dataRange.stopKey().isMinimum()) { // split the wrapping range into two parts: 1) the part that starts at the beginning of the sstable, and // 2) the part that comes before the wrap-around - boundsList.add(new Bounds<>(sstable.partitioner.getMinimumToken().minKeyBound(), dataRange.stopKey(), sstable.partitioner)); - boundsList.add(new Bounds<>(dataRange.startKey(), sstable.partitioner.getMinimumToken().maxKeyBound(), sstable.partitioner)); + boundsList.add(new Bounds<>(sstable.partitioner.getMinimumToken().minKeyBound(), dataRange.stopKey())); + boundsList.add(new Bounds<>(dataRange.startKey(), sstable.partitioner.getMinimumToken().maxKeyBound())); } else { - boundsList.add(new Bounds<>(dataRange.startKey(), dataRange.stopKey(), sstable.partitioner)); + boundsList.add(new Bounds<>(dataRange.startKey(), dataRange.stopKey())); } this.rangeIterator = boundsList.iterator(); } @@ -109,16 +109,14 @@ public class BigTableScanner implements ICompactionScanner List<Range<Token>> normalized = Range.normalize(tokenRanges); List<AbstractBounds<RowPosition>> boundsList = new ArrayList<>(normalized.size()); for (Range<Token> range : normalized) - boundsList.add(new Range<RowPosition>(range.left.maxKeyBound(sstable.partitioner), - range.right.maxKeyBound(sstable.partitioner), - sstable.partitioner)); + boundsList.add(new Range<RowPosition>(range.left.maxKeyBound(), range.right.maxKeyBound())); this.rangeIterator = boundsList.iterator(); } private void seekToCurrentRangeStart() { - if (currentRange.left.isMinimum(sstable.partitioner)) + if (currentRange.left.isMinimum()) return; long indexPosition = sstable.getIndexScanPosition(currentRange.left); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/service/StorageProxy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index b577931..93bf571 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -1882,7 +1882,7 @@ public class StorageProxy implements StorageProxyMBean static <T extends RingPosition<T>> List<AbstractBounds<T>> getRestrictedRanges(final AbstractBounds<T> queryRange) { // special case for bounds containing exactly 1 (non-minimum) token - if (queryRange instanceof Bounds && queryRange.left.equals(queryRange.right) && !queryRange.left.isMinimum(StorageService.getPartitioner())) + if (queryRange instanceof Bounds && queryRange.left.equals(queryRange.right) && !queryRange.left.isMinimum()) { return Collections.singletonList(queryRange); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/thrift/CassandraServer.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/thrift/CassandraServer.java b/src/java/org/apache/cassandra/thrift/CassandraServer.java index b7a1f7f..dd461f3 100644 --- a/src/java/org/apache/cassandra/thrift/CassandraServer.java +++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java @@ -1167,12 +1167,12 @@ public class CassandraServer implements Cassandra.Iface Token.TokenFactory tokenFactory = p.getTokenFactory(); Token left = tokenFactory.fromString(range.start_token); Token right = tokenFactory.fromString(range.end_token); - bounds = Range.makeRowRange(left, right, p); + bounds = Range.makeRowRange(left, right); } else { RowPosition end = range.end_key == null - ? p.getTokenFactory().fromString(range.end_token).maxKeyBound(p) + ? p.getTokenFactory().fromString(range.end_token).maxKeyBound() : RowPosition.ForKey.get(range.end_key, p); bounds = new Bounds<RowPosition>(RowPosition.ForKey.get(range.start_key, p), end); } @@ -1255,12 +1255,12 @@ public class CassandraServer implements Cassandra.Iface Token.TokenFactory tokenFactory = p.getTokenFactory(); Token left = tokenFactory.fromString(range.start_token); Token right = tokenFactory.fromString(range.end_token); - bounds = Range.makeRowRange(left, right, p); + bounds = Range.makeRowRange(left, right); } else { RowPosition end = range.end_key == null - ? p.getTokenFactory().fromString(range.end_token).maxKeyBound(p) + ? p.getTokenFactory().fromString(range.end_token).maxKeyBound() : RowPosition.ForKey.get(range.end_key, p); bounds = new Bounds<RowPosition>(RowPosition.ForKey.get(range.start_key, p), end); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/thrift/ThriftValidation.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/thrift/ThriftValidation.java b/src/java/org/apache/cassandra/thrift/ThriftValidation.java index 32da1c8..242b5cb 100644 --- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java +++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java @@ -522,7 +522,7 @@ public class ThriftValidation { Token startToken = p.getToken(range.start_key); Token endToken = p.getToken(range.end_key); - if (startToken.compareTo(endToken) > 0 && !endToken.isMinimum(p)) + if (startToken.compareTo(endToken) > 0 && !endToken.isMinimum()) { if (p.preservesOrder()) throw new org.apache.cassandra.exceptions.InvalidRequestException("start key must sort before (or equal to) finish key in your partitioner!"); @@ -533,7 +533,7 @@ public class ThriftValidation else if (range.start_key != null && range.end_token != null) { // start_token/end_token can wrap, but key/token should not - RowPosition stop = p.getTokenFactory().fromString(range.end_token).maxKeyBound(p); + RowPosition stop = p.getTokenFactory().fromString(range.end_token).maxKeyBound(); if (RowPosition.ForKey.get(range.start_key, p).compareTo(stop) > 0 && !stop.isMinimum()) throw new org.apache.cassandra.exceptions.InvalidRequestException("Start key's token sorts after end token"); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/tools/BulkLoader.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tools/BulkLoader.java b/src/java/org/apache/cassandra/tools/BulkLoader.java index ea388a1..8e7e0e9 100644 --- a/src/java/org/apache/cassandra/tools/BulkLoader.java +++ b/src/java/org/apache/cassandra/tools/BulkLoader.java @@ -300,7 +300,7 @@ public class BulkLoader for (TokenRange tr : client.describe_ring(keyspace)) { - Range<Token> range = new Range<>(tkFactory.fromString(tr.start_token), tkFactory.fromString(tr.end_token), getPartitioner()); + Range<Token> range = new Range<>(tkFactory.fromString(tr.start_token), tkFactory.fromString(tr.end_token)); for (String ep : tr.endpoints) { addRangeForEndpoint(range, InetAddress.getByName(ep)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/utils/FBUtilities.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java index 470770a..acd19ad 100644 --- a/src/java/org/apache/cassandra/utils/FBUtilities.java +++ b/src/java/org/apache/cassandra/utils/FBUtilities.java @@ -37,7 +37,6 @@ import java.util.zip.Checksum; import com.google.common.base.Joiner; import com.google.common.collect.AbstractIterator; -import org.apache.cassandra.io.util.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,6 +51,7 @@ import org.apache.cassandra.dht.Token; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.IVersionedSerializer; import org.apache.cassandra.io.util.DataOutputBuffer; +import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.io.util.IAllocator; import org.apache.cassandra.net.AsyncOneResponse; import org.apache.thrift.TBase; @@ -413,7 +413,7 @@ public class FBUtilities { if (!partitionerClassName.contains(".")) partitionerClassName = "org.apache.cassandra.dht." + partitionerClassName; - return FBUtilities.construct(partitionerClassName, "partitioner"); + return FBUtilities.instanceOrConstruct(partitionerClassName, "partitioner"); } public static IAllocator newOffHeapAllocator(String offheap_allocator) throws ConfigurationException @@ -465,9 +465,35 @@ public class FBUtilities * @param readable Descriptive noun for the role the class plays. * @throws ConfigurationException If the class cannot be found. */ + public static <T> T instanceOrConstruct(String classname, String readable) throws ConfigurationException + { + Class<T> cls = FBUtilities.classForName(classname, readable); + try + { + Field instance = cls.getField("instance"); + return cls.cast(instance.get(null)); + } + catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) + { + // Could not get instance field. Try instantiating. + return construct(cls, classname, readable); + } + } + + /** + * Constructs an instance of the given class, which must have a no-arg or default constructor. + * @param classname Fully qualified classname. + * @param readable Descriptive noun for the role the class plays. + * @throws ConfigurationException If the class cannot be found. + */ public static <T> T construct(String classname, String readable) throws ConfigurationException { Class<T> cls = FBUtilities.classForName(classname, readable); + return construct(cls, classname, readable); + } + + private static <T> T construct(Class<T> cls, String classname, String readable) throws ConfigurationException + { try { return cls.newInstance(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/src/java/org/apache/cassandra/utils/MerkleTree.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/MerkleTree.java b/src/java/org/apache/cassandra/utils/MerkleTree.java index 8e6d5c0..394b12a 100644 --- a/src/java/org/apache/cassandra/utils/MerkleTree.java +++ b/src/java/org/apache/cassandra/utils/MerkleTree.java @@ -108,7 +108,7 @@ public class MerkleTree implements Serializable // full range Token left = Token.serializer.deserialize(in); Token right = Token.serializer.deserialize(in); - Range<Token> fullRange = new Range<>(left, right, partitioner); + Range<Token> fullRange = new Range<>(left, right); MerkleTree mt = new MerkleTree(partitioner, fullRange, hashdepth, maxsize); mt.size = size; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/Util.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/Util.java b/test/unit/org/apache/cassandra/Util.java index 2d5e6fc..cdb7ac6 100644 --- a/test/unit/org/apache/cassandra/Util.java +++ b/test/unit/org/apache/cassandra/Util.java @@ -45,6 +45,7 @@ import org.apache.cassandra.db.filter.SliceQueryFilter; import org.apache.cassandra.db.filter.NamesQueryFilter; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.dht.*; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; import org.apache.cassandra.gms.ApplicationState; import org.apache.cassandra.gms.Gossiper; import org.apache.cassandra.gms.VersionedValue; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/db/CleanupTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/CleanupTest.java b/test/unit/org/apache/cassandra/db/CleanupTest.java index 5d2217b..81f7d41 100644 --- a/test/unit/org/apache/cassandra/db/CleanupTest.java +++ b/test/unit/org/apache/cassandra/db/CleanupTest.java @@ -39,7 +39,7 @@ import org.apache.cassandra.db.filter.IDiskAtomFilter; import org.apache.cassandra.db.columniterator.IdentityQueryFilter; import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.index.SecondaryIndex; -import org.apache.cassandra.dht.BytesToken; +import org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken; import org.apache.cassandra.dht.Range; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.sstable.format.SSTableReader; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/db/RowCacheTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/RowCacheTest.java b/test/unit/org/apache/cassandra/db/RowCacheTest.java index 4bed2ad..7d5799a 100644 --- a/test/unit/org/apache/cassandra/db/RowCacheTest.java +++ b/test/unit/org/apache/cassandra/db/RowCacheTest.java @@ -36,7 +36,7 @@ import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.filter.QueryFilter; import org.apache.cassandra.db.marshal.IntegerType; import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.cassandra.dht.BytesToken; +import org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken; import org.apache.cassandra.locator.TokenMetadata; import org.apache.cassandra.locator.SimpleStrategy; import org.apache.cassandra.service.CacheService; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java b/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java index 3eebe98..b66a0bd 100644 --- a/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java +++ b/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java @@ -31,7 +31,7 @@ import java.util.UUID; import org.junit.Test; -import org.apache.cassandra.dht.BytesToken; +import org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken; import org.apache.cassandra.dht.Token; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java b/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java index fffc310..87e4315 100644 --- a/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java @@ -46,20 +46,14 @@ import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.DecoratedKey; import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.db.Mutation; -import org.apache.cassandra.dht.BytesToken; +import org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; -import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.sstable.SSTableIdentityIterator; import org.apache.cassandra.service.ActiveRepairService; -import org.apache.cassandra.io.sstable.metadata.MetadataCollector; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; -import org.junit.After; -import org.junit.BeforeClass; -import org.junit.Test; - import com.google.common.collect.Iterables; public class AntiCompactionTest http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java index cf3bb32..faf3808 100644 --- a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java @@ -35,7 +35,7 @@ import org.apache.cassandra.db.columniterator.OnDiskAtomIterator; import org.apache.cassandra.db.filter.QueryFilter; import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.db.marshal.LongType; -import org.apache.cassandra.dht.BytesToken; +import org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; import org.apache.cassandra.exceptions.ConfigurationException; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/dht/ByteOrderedPartitionerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/dht/ByteOrderedPartitionerTest.java b/test/unit/org/apache/cassandra/dht/ByteOrderedPartitionerTest.java index cfe5f52..e70e086 100644 --- a/test/unit/org/apache/cassandra/dht/ByteOrderedPartitionerTest.java +++ b/test/unit/org/apache/cassandra/dht/ByteOrderedPartitionerTest.java @@ -22,6 +22,6 @@ public class ByteOrderedPartitionerTest extends PartitionerTestCase { public void initPartitioner() { - partitioner = new ByteOrderedPartitioner(); + partitioner = ByteOrderedPartitioner.instance; } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/dht/KeyCollisionTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/dht/KeyCollisionTest.java b/test/unit/org/apache/cassandra/dht/KeyCollisionTest.java index aaa3bc9..e8a5ee2 100644 --- a/test/unit/org/apache/cassandra/dht/KeyCollisionTest.java +++ b/test/unit/org/apache/cassandra/dht/KeyCollisionTest.java @@ -22,6 +22,7 @@ import java.math.BigInteger; import java.nio.ByteBuffer; import java.util.*; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.apache.cassandra.SchemaLoader; @@ -48,13 +49,15 @@ import static org.apache.cassandra.Util.dk; */ public class KeyCollisionTest { - IPartitioner oldPartitioner; + static IPartitioner oldPartitioner; private static final String KEYSPACE1 = "KeyCollisionTest1"; private static final String CF = "Standard1"; @BeforeClass public static void defineSchema() throws ConfigurationException { + oldPartitioner = DatabaseDescriptor.getPartitioner(); + DatabaseDescriptor.setPartitioner(LengthPartitioner.instance); SchemaLoader.prepareServer(); SchemaLoader.createKeyspace(KEYSPACE1, SimpleStrategy.class, @@ -62,13 +65,8 @@ public class KeyCollisionTest SchemaLoader.standardCFMD(KEYSPACE1, CF)); } - protected void setUp() - { - oldPartitioner = DatabaseDescriptor.getPartitioner(); - DatabaseDescriptor.setPartitioner(new LengthPartitioner()); - } - - protected void tearDown() + @AfterClass + public static void tearDown() { DatabaseDescriptor.setPartitioner(oldPartitioner); } @@ -80,14 +78,14 @@ public class KeyCollisionTest ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(CF); cfs.clearUnsafe(); - insert("k1", "k2", "k3"); // token = 2 + insert("k1", "k2", "kq"); // token = 2, kq ordered after row below lexicographically insert("key1", "key2", "key3"); // token = 4 insert("longKey1", "longKey2"); // token = 8 List<Row> rows = cfs.getRangeSlice(new Bounds<RowPosition>(dk("k2"), dk("key2")), null, new IdentityQueryFilter(), 10000); assert rows.size() == 4 : "Expecting 4 keys, got " + rows.size(); assert rows.get(0).key.getKey().equals(ByteBufferUtil.bytes("k2")); - assert rows.get(1).key.getKey().equals(ByteBufferUtil.bytes("k3")); + assert rows.get(1).key.getKey().equals(ByteBufferUtil.bytes("kq")); assert rows.get(2).key.getKey().equals(ByteBufferUtil.bytes("key1")); assert rows.get(3).key.getKey().equals(ByteBufferUtil.bytes("key2")); } @@ -106,11 +104,40 @@ public class KeyCollisionTest rm.applyUnsafe(); } - public static class LengthPartitioner extends AbstractPartitioner + static class BigIntegerToken extends ComparableObjectToken<BigInteger> + { + private static final long serialVersionUID = 1L; + + public BigIntegerToken(BigInteger token) + { + super(token); + } + + // convenience method for testing + public BigIntegerToken(String token) { + this(new BigInteger(token)); + } + + @Override + public IPartitioner getPartitioner() + { + return LengthPartitioner.instance; + } + + @Override + public long getHeapSize() + { + return 0; + } + } + + public static class LengthPartitioner implements IPartitioner { public static final BigInteger ZERO = new BigInteger("0"); public static final BigIntegerToken MINIMUM = new BigIntegerToken("-1"); + public static LengthPartitioner instance = new LengthPartitioner(); + public DecoratedKey decorateKey(ByteBuffer key) { return new BufferDecoratedKey(getToken(key), key); @@ -179,12 +206,6 @@ public class KeyCollisionTest return new BigIntegerToken(BigInteger.valueOf(key.remaining())); } - @Override - public long getHeapSizeOf(Token token) - { - return 0; - } - public Map<Token, Float> describeOwnership(List<Token> sortedTokens) { // allTokens will contain the count and be returned, sorted_ranges is shorthand for token<->token math. http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/dht/Murmur3PartitionerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/dht/Murmur3PartitionerTest.java b/test/unit/org/apache/cassandra/dht/Murmur3PartitionerTest.java index 71c7e89..9f330d3 100644 --- a/test/unit/org/apache/cassandra/dht/Murmur3PartitionerTest.java +++ b/test/unit/org/apache/cassandra/dht/Murmur3PartitionerTest.java @@ -24,7 +24,7 @@ public class Murmur3PartitionerTest extends PartitionerTestCase { public void initPartitioner() { - partitioner = new Murmur3Partitioner(); + partitioner = Murmur3Partitioner.instance; } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/dht/OrderPreservingPartitionerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/dht/OrderPreservingPartitionerTest.java b/test/unit/org/apache/cassandra/dht/OrderPreservingPartitionerTest.java index aa43265..397d7cc 100644 --- a/test/unit/org/apache/cassandra/dht/OrderPreservingPartitionerTest.java +++ b/test/unit/org/apache/cassandra/dht/OrderPreservingPartitionerTest.java @@ -35,7 +35,7 @@ public class OrderPreservingPartitionerTest extends PartitionerTestCase public void initPartitioner() { - partitioner = new OrderPreservingPartitioner(); + partitioner = OrderPreservingPartitioner.instance; } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/dht/PartitionerTestCase.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/dht/PartitionerTestCase.java b/test/unit/org/apache/cassandra/dht/PartitionerTestCase.java index db0349d..8080a0c 100644 --- a/test/unit/org/apache/cassandra/dht/PartitionerTestCase.java +++ b/test/unit/org/apache/cassandra/dht/PartitionerTestCase.java @@ -21,6 +21,7 @@ package org.apache.cassandra.dht; import java.nio.ByteBuffer; import java.util.*; +import org.apache.cassandra.service.StorageService; import org.junit.Before; import org.junit.Test; @@ -122,6 +123,10 @@ public abstract class PartitionerTestCase @Test public void testDescribeOwnership() { + // This call initializes StorageService, needed to populate the keyspaces. + // TODO: This points to potential problems in the initialization sequence. Should be solved by CASSANDRA-7837. + StorageService.getPartitioner(); + try { testDescribeOwnershipWith(0); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/dht/RandomPartitionerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/dht/RandomPartitionerTest.java b/test/unit/org/apache/cassandra/dht/RandomPartitionerTest.java index 09a1d65..6b22617 100644 --- a/test/unit/org/apache/cassandra/dht/RandomPartitionerTest.java +++ b/test/unit/org/apache/cassandra/dht/RandomPartitionerTest.java @@ -24,6 +24,6 @@ public class RandomPartitionerTest extends PartitionerTestCase { public void initPartitioner() { - partitioner = new RandomPartitioner(); + partitioner = RandomPartitioner.instance; } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/dht/RangeTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/dht/RangeTest.java b/test/unit/org/apache/cassandra/dht/RangeTest.java index 906396c..d93356a 100644 --- a/test/unit/org/apache/cassandra/dht/RangeTest.java +++ b/test/unit/org/apache/cassandra/dht/RangeTest.java @@ -22,12 +22,15 @@ import java.nio.ByteBuffer; import java.util.HashSet; import java.util.List; import java.util.Set; + import static java.util.Arrays.asList; import org.apache.commons.lang3.StringUtils; import org.junit.Test; - import org.apache.cassandra.db.RowPosition; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; +import org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken; + import static org.apache.cassandra.Util.range; @@ -36,7 +39,7 @@ public class RangeTest @Test public void testContains() { - Range left = new Range(new BigIntegerToken("0"), new BigIntegerToken("100")); + Range<Token> left = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("100")); assert !left.contains(new BigIntegerToken("0")); assert left.contains(new BigIntegerToken("10")); assert left.contains(new BigIntegerToken("100")); @@ -46,13 +49,13 @@ public class RangeTest @Test public void testContainsWrapping() { - Range range = new Range(new BigIntegerToken("0"), new BigIntegerToken("0")); + Range<Token> range = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("0")); assert range.contains(new BigIntegerToken("0")); assert range.contains(new BigIntegerToken("10")); assert range.contains(new BigIntegerToken("100")); assert range.contains(new BigIntegerToken("101")); - range = new Range(new BigIntegerToken("100"), new BigIntegerToken("0")); + range = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("0")); assert range.contains(new BigIntegerToken("0")); assert !range.contains(new BigIntegerToken("1")); assert !range.contains(new BigIntegerToken("100")); @@ -62,10 +65,10 @@ public class RangeTest @Test public void testContainsRange() { - Range one = new Range(new BigIntegerToken("2"), new BigIntegerToken("10")); - Range two = new Range(new BigIntegerToken("2"), new BigIntegerToken("5")); - Range thr = new Range(new BigIntegerToken("5"), new BigIntegerToken("10")); - Range fou = new Range(new BigIntegerToken("10"), new BigIntegerToken("12")); + Range<Token> one = new Range<Token>(new BigIntegerToken("2"), new BigIntegerToken("10")); + Range<Token> two = new Range<Token>(new BigIntegerToken("2"), new BigIntegerToken("5")); + Range<Token> thr = new Range<Token>(new BigIntegerToken("5"), new BigIntegerToken("10")); + Range<Token> fou = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("12")); assert one.contains(two); assert one.contains(thr); @@ -87,11 +90,11 @@ public class RangeTest @Test public void testContainsRangeWrapping() { - Range one = new Range(new BigIntegerToken("10"), new BigIntegerToken("2")); - Range two = new Range(new BigIntegerToken("5"), new BigIntegerToken("3")); - Range thr = new Range(new BigIntegerToken("10"), new BigIntegerToken("12")); - Range fou = new Range(new BigIntegerToken("2"), new BigIntegerToken("6")); - Range fiv = new Range(new BigIntegerToken("0"), new BigIntegerToken("0")); + Range<Token> one = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("2")); + Range<Token> two = new Range<Token>(new BigIntegerToken("5"), new BigIntegerToken("3")); + Range<Token> thr = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("12")); + Range<Token> fou = new Range<Token>(new BigIntegerToken("2"), new BigIntegerToken("6")); + Range<Token> fiv = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("0")); assert !one.contains(two); assert one.contains(thr); @@ -118,12 +121,12 @@ public class RangeTest @Test public void testContainsRangeOneWrapping() { - Range wrap1 = new Range(new BigIntegerToken("0"), new BigIntegerToken("0")); - Range wrap2 = new Range(new BigIntegerToken("10"), new BigIntegerToken("2")); + Range<Token> wrap1 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("0")); + Range<Token> wrap2 = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("2")); - Range nowrap1 = new Range(new BigIntegerToken("0"), new BigIntegerToken("2")); - Range nowrap2 = new Range(new BigIntegerToken("2"), new BigIntegerToken("10")); - Range nowrap3 = new Range(new BigIntegerToken("10"), new BigIntegerToken("100")); + Range<Token> nowrap1 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("2")); + Range<Token> nowrap2 = new Range<Token>(new BigIntegerToken("2"), new BigIntegerToken("10")); + Range<Token> nowrap3 = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("100")); assert wrap1.contains(nowrap1); assert wrap1.contains(nowrap2); @@ -137,10 +140,10 @@ public class RangeTest @Test public void testIntersects() { - Range all = new Range(new BigIntegerToken("0"), new BigIntegerToken("0")); // technically, this is a wrapping range - Range one = new Range(new BigIntegerToken("2"), new BigIntegerToken("10")); - Range two = new Range(new BigIntegerToken("0"), new BigIntegerToken("8")); - Range not = new Range(new BigIntegerToken("10"), new BigIntegerToken("12")); + Range<Token> all = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("0")); // technically, this is a wrapping range + Range<Token> one = new Range<Token>(new BigIntegerToken("2"), new BigIntegerToken("10")); + Range<Token> two = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("8")); + Range<Token> not = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("12")); assert all.intersects(one); assert all.intersects(two); @@ -158,12 +161,12 @@ public class RangeTest @Test public void testIntersectsWrapping() { - Range onewrap = new Range(new BigIntegerToken("10"), new BigIntegerToken("2")); - Range onecomplement = new Range(onewrap.right, onewrap.left); - Range onestartswith = new Range(onewrap.left, new BigIntegerToken("12")); - Range oneendswith = new Range(new BigIntegerToken("1"), onewrap.right); - Range twowrap = new Range(new BigIntegerToken("5"), new BigIntegerToken("3")); - Range not = new Range(new BigIntegerToken("2"), new BigIntegerToken("6")); + Range<Token> onewrap = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("2")); + Range<Token> onecomplement = new Range<Token>(onewrap.right, onewrap.left); + Range<Token> onestartswith = new Range<Token>(onewrap.left, new BigIntegerToken("12")); + Range<Token> oneendswith = new Range<Token>(new BigIntegerToken("1"), onewrap.right); + Range<Token> twowrap = new Range<Token>(new BigIntegerToken("5"), new BigIntegerToken("3")); + Range<Token> not = new Range<Token>(new BigIntegerToken("2"), new BigIntegerToken("6")); assert !onewrap.intersects(onecomplement); assert onewrap.intersects(onestartswith); @@ -179,20 +182,21 @@ public class RangeTest assert not.intersects(twowrap); } - static <T extends RingPosition<T>> void assertIntersection(Range one, Range two, Range<T> ... ranges) + @SafeVarargs + static <T extends RingPosition<T>> void assertIntersection(Range<T> one, Range<T> two, Range<T> ... ranges) { Set<Range<T>> correct = Range.rangeSet(ranges); - Set<Range> result1 = one.intersectionWith(two); + Set<Range<T>> result1 = one.intersectionWith(two); assert result1.equals(correct) : String.format("%s != %s", StringUtils.join(result1, ","), StringUtils.join(correct, ",")); - Set<Range> result2 = two.intersectionWith(one); + Set<Range<T>> result2 = two.intersectionWith(one); assert result2.equals(correct) : String.format("%s != %s", StringUtils.join(result2, ","), StringUtils.join(correct, ",")); } - private void assertNoIntersection(Range wraps1, Range nowrap3) + private void assertNoIntersection(Range<Token> wraps1, Range<Token> nowrap3) { assertIntersection(wraps1, nowrap3); } @@ -200,11 +204,11 @@ public class RangeTest @Test public void testIntersectionWithAll() { - Range all0 = new Range(new BigIntegerToken("0"), new BigIntegerToken("0")); - Range all10 = new Range(new BigIntegerToken("10"), new BigIntegerToken("10")); - Range all100 = new Range(new BigIntegerToken("100"), new BigIntegerToken("100")); - Range all1000 = new Range(new BigIntegerToken("1000"), new BigIntegerToken("1000")); - Range wraps = new Range(new BigIntegerToken("100"), new BigIntegerToken("10")); + Range<Token> all0 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("0")); + Range<Token> all10 = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("10")); + Range<Token> all100 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("100")); + Range<Token> all1000 = new Range<Token>(new BigIntegerToken("1000"), new BigIntegerToken("1000")); + Range<Token> wraps = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("10")); assertIntersection(all0, wraps, wraps); assertIntersection(all10, wraps, wraps); @@ -215,12 +219,12 @@ public class RangeTest @Test public void testIntersectionContains() { - Range wraps1 = new Range(new BigIntegerToken("100"), new BigIntegerToken("10")); - Range wraps2 = new Range(new BigIntegerToken("90"), new BigIntegerToken("20")); - Range wraps3 = new Range(new BigIntegerToken("90"), new BigIntegerToken("0")); - Range nowrap1 = new Range(new BigIntegerToken("100"), new BigIntegerToken("110")); - Range nowrap2 = new Range(new BigIntegerToken("0"), new BigIntegerToken("10")); - Range nowrap3 = new Range(new BigIntegerToken("0"), new BigIntegerToken("9")); + Range<Token> wraps1 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("10")); + Range<Token> wraps2 = new Range<Token>(new BigIntegerToken("90"), new BigIntegerToken("20")); + Range<Token> wraps3 = new Range<Token>(new BigIntegerToken("90"), new BigIntegerToken("0")); + Range<Token> nowrap1 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("110")); + Range<Token> nowrap2 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("10")); + Range<Token> nowrap3 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("9")); assertIntersection(wraps1, wraps2, wraps1); assertIntersection(wraps3, wraps2, wraps3); @@ -238,11 +242,11 @@ public class RangeTest @Test public void testNoIntersection() { - Range wraps1 = new Range(new BigIntegerToken("100"), new BigIntegerToken("10")); - Range wraps2 = new Range(new BigIntegerToken("100"), new BigIntegerToken("0")); - Range nowrap1 = new Range(new BigIntegerToken("0"), new BigIntegerToken("100")); - Range nowrap2 = new Range(new BigIntegerToken("100"), new BigIntegerToken("200")); - Range nowrap3 = new Range(new BigIntegerToken("10"), new BigIntegerToken("100")); + Range<Token> wraps1 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("10")); + Range<Token> wraps2 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("0")); + Range<Token> nowrap1 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("100")); + Range<Token> nowrap2 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("200")); + Range<Token> nowrap3 = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("100")); assertNoIntersection(wraps1, nowrap3); assertNoIntersection(wraps2, nowrap1); @@ -252,51 +256,51 @@ public class RangeTest @Test public void testIntersectionOneWraps() { - Range wraps1 = new Range(new BigIntegerToken("100"), new BigIntegerToken("10")); - Range wraps2 = new Range(new BigIntegerToken("100"), new BigIntegerToken("0")); - Range nowrap1 = new Range(new BigIntegerToken("0"), new BigIntegerToken("200")); - Range nowrap2 = new Range(new BigIntegerToken("0"), new BigIntegerToken("100")); + Range<Token> wraps1 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("10")); + Range<Token> wraps2 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("0")); + Range<Token> nowrap1 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("200")); + Range<Token> nowrap2 = new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("100")); assertIntersection(wraps1, nowrap1, - new Range(new BigIntegerToken("0"), new BigIntegerToken("10")), - new Range(new BigIntegerToken("100"), new BigIntegerToken("200"))); + new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("10")), + new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("200"))); assertIntersection(wraps2, nowrap1, - new Range(new BigIntegerToken("100"), new BigIntegerToken("200"))); + new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("200"))); assertIntersection(wraps1, nowrap2, - new Range(new BigIntegerToken("0"), new BigIntegerToken("10"))); + new Range<Token>(new BigIntegerToken("0"), new BigIntegerToken("10"))); } @Test public void testIntersectionTwoWraps() { - Range wraps1 = new Range(new BigIntegerToken("100"), new BigIntegerToken("20")); - Range wraps2 = new Range(new BigIntegerToken("120"), new BigIntegerToken("90")); - Range wraps3 = new Range(new BigIntegerToken("120"), new BigIntegerToken("110")); - Range wraps4 = new Range(new BigIntegerToken("10"), new BigIntegerToken("0")); - Range wraps5 = new Range(new BigIntegerToken("10"), new BigIntegerToken("1")); - Range wraps6 = new Range(new BigIntegerToken("30"), new BigIntegerToken("10")); + Range<Token> wraps1 = new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("20")); + Range<Token> wraps2 = new Range<Token>(new BigIntegerToken("120"), new BigIntegerToken("90")); + Range<Token> wraps3 = new Range<Token>(new BigIntegerToken("120"), new BigIntegerToken("110")); + Range<Token> wraps4 = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("0")); + Range<Token> wraps5 = new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("1")); + Range<Token> wraps6 = new Range<Token>(new BigIntegerToken("30"), new BigIntegerToken("10")); assertIntersection(wraps1, wraps2, - new Range(new BigIntegerToken("120"), new BigIntegerToken("20"))); + new Range<Token>(new BigIntegerToken("120"), new BigIntegerToken("20"))); assertIntersection(wraps1, wraps3, - new Range(new BigIntegerToken("120"), new BigIntegerToken("20")), - new Range(new BigIntegerToken("100"), new BigIntegerToken("110"))); + new Range<Token>(new BigIntegerToken("120"), new BigIntegerToken("20")), + new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("110"))); assertIntersection(wraps1, wraps4, - new Range(new BigIntegerToken("10"), new BigIntegerToken("20")), - new Range(new BigIntegerToken("100"), new BigIntegerToken("0"))); + new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("20")), + new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("0"))); assertIntersection(wraps1, wraps5, - new Range(new BigIntegerToken("10"), new BigIntegerToken("20")), - new Range(new BigIntegerToken("100"), new BigIntegerToken("1"))); + new Range<Token>(new BigIntegerToken("10"), new BigIntegerToken("20")), + new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("1"))); assertIntersection(wraps1, wraps6, - new Range(new BigIntegerToken("100"), new BigIntegerToken("10"))); + new Range<Token>(new BigIntegerToken("100"), new BigIntegerToken("10"))); } @Test @@ -319,25 +323,25 @@ public class RangeTest assert t1.compareTo(t4) == 0; } - private Range makeRange(String token1, String token2) + private Range<Token> makeRange(String token1, String token2) { - return new Range(new BigIntegerToken(token1), new BigIntegerToken(token2)); + return new Range<Token>(new BigIntegerToken(token1), new BigIntegerToken(token2)); } - private Set<Range> makeRanges(String[][] tokenPairs) + private Set<Range<Token>> makeRanges(String[][] tokenPairs) { - Set<Range> ranges = new HashSet<Range>(); + Set<Range<Token>> ranges = new HashSet<Range<Token>>(); for (int i = 0; i < tokenPairs.length; ++i) ranges.add(makeRange(tokenPairs[i][0], tokenPairs[i][1])); return ranges; } - private void checkDifference(Range oldRange, String[][] newTokens, String[][] expected) + private void checkDifference(Range<Token> oldRange, String[][] newTokens, String[][] expected) { - Set<Range> ranges = makeRanges(newTokens); - for (Range newRange : ranges) + Set<Range<Token>> ranges = makeRanges(newTokens); + for (Range<Token> newRange : ranges) { - Set<Range> diff = oldRange.differenceToFetch(newRange); + Set<Range<Token>> diff = oldRange.differenceToFetch(newRange); assert diff.equals(makeRanges(expected)) : "\n" + "Old range: " + oldRange.toString() + "\n" + "New range: " + newRange.toString() + "\n" + @@ -348,7 +352,7 @@ public class RangeTest @Test public void testDifferenceToFetchNoWrap() { - Range oldRange = makeRange("10", "40"); + Range<Token> oldRange = makeRange("10", "40"); // New range is entirely contained String[][] newTokens1 = { { "20", "30" }, { "10", "20" }, { "10", "40" }, { "20", "40" } }; @@ -374,7 +378,7 @@ public class RangeTest @Test public void testDifferenceToFetchBothWrap() { - Range oldRange = makeRange("1010", "40"); + Range<Token> oldRange = makeRange("1010", "40"); // New range is entirely contained String[][] newTokens1 = { { "1020", "30" }, { "1010", "20" }, { "1010", "40" }, { "1020", "40" } }; @@ -400,7 +404,7 @@ public class RangeTest @Test public void testDifferenceToFetchOldWraps() { - Range oldRange = makeRange("1010", "40"); + Range<Token> oldRange = makeRange("1010", "40"); // New range is entirely contained String[][] newTokens1 = { { "0", "30" }, { "0", "40" }, { "10", "40" } }; @@ -431,7 +435,7 @@ public class RangeTest @Test public void testDifferenceToFetchNewWraps() { - Range oldRange = makeRange("0", "40"); + Range<Token> oldRange = makeRange("0", "40"); // Only the LHS of the new range is needed String[][] newTokens1 = { { "1010", "0" }, { "1010", "10" }, { "1010", "40" } }; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/io/sstable/IndexSummaryTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryTest.java b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryTest.java index 9aca66d..0fbec39 100644 --- a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryTest.java @@ -90,7 +90,7 @@ public class IndexSummaryTest @Test public void testAddEmptyKey() throws Exception { - IPartitioner p = new RandomPartitioner(); + IPartitioner p = RandomPartitioner.instance; IndexSummaryBuilder builder = new IndexSummaryBuilder(1, 1, BASE_SAMPLING_LEVEL); builder.maybeAddEntry(p.decorateKey(ByteBufferUtil.EMPTY_BYTE_BUFFER), 0); IndexSummary summary = builder.build(p); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java b/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java index cd85d78..2a0c3e6 100644 --- a/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java @@ -62,7 +62,7 @@ import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.compaction.ICompactionScanner; import org.apache.cassandra.db.composites.Composites; import org.apache.cassandra.dht.LocalPartitioner; -import org.apache.cassandra.dht.LocalToken; +import org.apache.cassandra.dht.LocalPartitioner.LocalToken; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; import org.apache.cassandra.io.util.FileDataInput; @@ -370,7 +370,7 @@ public class SSTableReaderTest boolean foundScanner = false; for (SSTableReader s : store.getSSTables()) { - ICompactionScanner scanner = s.getScanner(new Range<Token>(t(0), t(1), s.partitioner), null); + ICompactionScanner scanner = s.getScanner(new Range<Token>(t(0), t(1)), null); scanner.next(); // throws exception pre 5407 foundScanner = true; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/io/sstable/SSTableScannerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableScannerTest.java b/test/unit/org/apache/cassandra/io/sstable/SSTableScannerTest.java index 0d7d3c9..d4053eb 100644 --- a/test/unit/org/apache/cassandra/io/sstable/SSTableScannerTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/SSTableScannerTest.java @@ -32,7 +32,7 @@ import org.apache.cassandra.db.*; import org.apache.cassandra.db.columniterator.IdentityQueryFilter; import org.apache.cassandra.db.compaction.ICompactionScanner; import org.apache.cassandra.dht.Bounds; -import org.apache.cassandra.dht.BytesToken; +import org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; import org.apache.cassandra.locator.SimpleStrategy; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/locator/NetworkTopologyStrategyTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/locator/NetworkTopologyStrategyTest.java b/test/unit/org/apache/cassandra/locator/NetworkTopologyStrategyTest.java index be93faa..a3ac416 100644 --- a/test/unit/org/apache/cassandra/locator/NetworkTopologyStrategyTest.java +++ b/test/unit/org/apache/cassandra/locator/NetworkTopologyStrategyTest.java @@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.dht.StringToken; +import org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken; import org.apache.cassandra.dht.Token; import com.google.common.collect.HashMultimap; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/locator/OldNetworkTopologyStrategyTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/locator/OldNetworkTopologyStrategyTest.java b/test/unit/org/apache/cassandra/locator/OldNetworkTopologyStrategyTest.java index 517167f..b854e18 100644 --- a/test/unit/org/apache/cassandra/locator/OldNetworkTopologyStrategyTest.java +++ b/test/unit/org/apache/cassandra/locator/OldNetworkTopologyStrategyTest.java @@ -32,7 +32,7 @@ import java.util.Map; import java.util.Set; import org.apache.cassandra.config.KSMetaData; -import org.apache.cassandra.dht.BigIntegerToken; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; import org.apache.cassandra.service.StorageService; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/locator/ReplicationStrategyEndpointCacheTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/locator/ReplicationStrategyEndpointCacheTest.java b/test/unit/org/apache/cassandra/locator/ReplicationStrategyEndpointCacheTest.java index 2a41e50..093de9b 100644 --- a/test/unit/org/apache/cassandra/locator/ReplicationStrategyEndpointCacheTest.java +++ b/test/unit/org/apache/cassandra/locator/ReplicationStrategyEndpointCacheTest.java @@ -30,7 +30,7 @@ import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.config.KSMetaData; import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.cassandra.dht.BigIntegerToken; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; import org.apache.cassandra.dht.Token; public class ReplicationStrategyEndpointCacheTest http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java b/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java index 87c8613..61255f3 100644 --- a/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java +++ b/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java @@ -34,6 +34,8 @@ import org.apache.cassandra.config.KSMetaData; import org.apache.cassandra.config.Schema; import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.dht.*; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; +import org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken; import org.apache.cassandra.service.PendingRangeCalculatorService; import org.apache.cassandra.service.StorageServiceAccessor; import org.apache.cassandra.utils.ByteBufferUtil; @@ -74,7 +76,7 @@ public class SimpleStrategyTest @Test public void testStringEndpoints() throws UnknownHostException { - IPartitioner partitioner = new OrderPreservingPartitioner(); + IPartitioner partitioner = OrderPreservingPartitioner.instance; List<Token> endpointTokens = new ArrayList<Token>(); List<Token> keyTokens = new ArrayList<Token>(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/repair/LocalSyncTaskTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/repair/LocalSyncTaskTest.java b/test/unit/org/apache/cassandra/repair/LocalSyncTaskTest.java index 1d11334..3a16262 100644 --- a/test/unit/org/apache/cassandra/repair/LocalSyncTaskTest.java +++ b/test/unit/org/apache/cassandra/repair/LocalSyncTaskTest.java @@ -42,7 +42,7 @@ import static org.junit.Assert.assertEquals; public class LocalSyncTaskTest extends SchemaLoader { - private static final IPartitioner partirioner = new Murmur3Partitioner(); + private static final IPartitioner partirioner = Murmur3Partitioner.instance; public static final String KEYSPACE1 = "DifferencerTest"; public static final String CF_STANDARD = "Standard1"; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/repair/RepairSessionTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/repair/RepairSessionTest.java b/test/unit/org/apache/cassandra/repair/RepairSessionTest.java index 9811fcc..e21e5d4 100644 --- a/test/unit/org/apache/cassandra/repair/RepairSessionTest.java +++ b/test/unit/org/apache/cassandra/repair/RepairSessionTest.java @@ -49,8 +49,8 @@ public class RepairSessionTest // Set up RepairSession UUID parentSessionId = UUIDGen.getTimeUUID(); UUID sessionId = UUID.randomUUID(); - IPartitioner p = new Murmur3Partitioner(); - Range<Token> repairRange = new Range<>(p.getToken(ByteBufferUtil.bytes(0)), p.getToken(ByteBufferUtil.bytes(100)), p); + IPartitioner p = Murmur3Partitioner.instance; + Range<Token> repairRange = new Range<>(p.getToken(ByteBufferUtil.bytes(0)), p.getToken(ByteBufferUtil.bytes(100))); Set<InetAddress> endpoints = Sets.newHashSet(remote); RepairSession session = new RepairSession(parentSessionId, sessionId, repairRange, "Keyspace1", true, endpoints, ActiveRepairService.UNREPAIRED_SSTABLE, "Standard1"); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/repair/messages/RepairOptionTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/repair/messages/RepairOptionTest.java b/test/unit/org/apache/cassandra/repair/messages/RepairOptionTest.java index 59ad8a3..03e6fa2 100644 --- a/test/unit/org/apache/cassandra/repair/messages/RepairOptionTest.java +++ b/test/unit/org/apache/cassandra/repair/messages/RepairOptionTest.java @@ -37,7 +37,7 @@ public class RepairOptionTest @Test public void testParseOptions() { - IPartitioner partitioner = new Murmur3Partitioner(); + IPartitioner partitioner = Murmur3Partitioner.instance; Token.TokenFactory tokenFactory = partitioner.getTokenFactory(); // parse with empty options http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/service/LeaveAndBootstrapTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/service/LeaveAndBootstrapTest.java b/test/unit/org/apache/cassandra/service/LeaveAndBootstrapTest.java index bf34ba6..4a09b7a 100644 --- a/test/unit/org/apache/cassandra/service/LeaveAndBootstrapTest.java +++ b/test/unit/org/apache/cassandra/service/LeaveAndBootstrapTest.java @@ -36,6 +36,7 @@ import org.apache.cassandra.config.KSMetaData; import org.apache.cassandra.config.Schema; import org.apache.cassandra.db.SystemKeyspace; import org.apache.cassandra.dht.*; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; import org.apache.cassandra.gms.ApplicationState; import org.apache.cassandra.gms.Gossiper; import org.apache.cassandra.gms.VersionedValue; @@ -45,7 +46,7 @@ import org.apache.cassandra.locator.TokenMetadata; public class LeaveAndBootstrapTest { - private static final IPartitioner partitioner = new RandomPartitioner(); + private static final IPartitioner partitioner = RandomPartitioner.instance; private static IPartitioner oldPartitioner; private static final String KEYSPACE1 = "LeaveAndBootstrapTestKeyspace1"; private static final String KEYSPACE2 = "LeaveAndBootstrapTestKeyspace2"; @@ -79,7 +80,7 @@ public class LeaveAndBootstrapTest TokenMetadata tmd = ss.getTokenMetadata(); tmd.clearUnsafe(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); @@ -150,7 +151,7 @@ public class LeaveAndBootstrapTest final int RING_SIZE = 10; TokenMetadata tmd = ss.getTokenMetadata(); tmd.clearUnsafe(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); @@ -450,7 +451,7 @@ public class LeaveAndBootstrapTest StorageService ss = StorageService.instance; TokenMetadata tmd = ss.getTokenMetadata(); tmd.clearUnsafe(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); @@ -527,7 +528,7 @@ public class LeaveAndBootstrapTest StorageService ss = StorageService.instance; TokenMetadata tmd = ss.getTokenMetadata(); tmd.clearUnsafe(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); @@ -569,7 +570,7 @@ public class LeaveAndBootstrapTest StorageService ss = StorageService.instance; TokenMetadata tmd = ss.getTokenMetadata(); tmd.clearUnsafe(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); @@ -619,7 +620,7 @@ public class LeaveAndBootstrapTest StorageService ss = StorageService.instance; TokenMetadata tmd = ss.getTokenMetadata(); tmd.clearUnsafe(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/service/MoveTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/service/MoveTest.java b/test/unit/org/apache/cassandra/service/MoveTest.java index 1ee71dd..6c9e589 100644 --- a/test/unit/org/apache/cassandra/service/MoveTest.java +++ b/test/unit/org/apache/cassandra/service/MoveTest.java @@ -39,6 +39,7 @@ import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.Util; import org.apache.cassandra.config.KSMetaData; import org.apache.cassandra.dht.*; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; import org.apache.cassandra.gms.ApplicationState; import org.apache.cassandra.gms.VersionedValue; import org.apache.cassandra.locator.AbstractReplicationStrategy; @@ -47,7 +48,7 @@ import org.apache.cassandra.locator.TokenMetadata; public class MoveTest { - private static final IPartitioner partitioner = new RandomPartitioner(); + private static final IPartitioner partitioner = RandomPartitioner.instance; private static IPartitioner oldPartitioner; private static final String KEYSPACE1 = "MoveTestKeyspace1"; private static final String KEYSPACE2 = "MoveTestKeyspace2"; @@ -164,7 +165,7 @@ public class MoveTest StorageService ss = StorageService.instance; final int RING_SIZE = 10; TokenMetadata tmd = ss.getTokenMetadata(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); @@ -506,7 +507,7 @@ public class MoveTest { StorageService ss = StorageService.instance; TokenMetadata tmd = ss.getTokenMetadata(); - IPartitioner partitioner = new RandomPartitioner(); + IPartitioner partitioner = RandomPartitioner.instance; VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner); ArrayList<Token> endpointTokens = new ArrayList<Token>(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/service/RemoveTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/service/RemoveTest.java b/test/unit/org/apache/cassandra/service/RemoveTest.java index 2574dcf..e5e4620 100644 --- a/test/unit/org/apache/cassandra/service/RemoveTest.java +++ b/test/unit/org/apache/cassandra/service/RemoveTest.java @@ -47,7 +47,7 @@ import static org.junit.Assert.assertTrue; public class RemoveTest { - static final IPartitioner partitioner = new RandomPartitioner(); + static final IPartitioner partitioner = RandomPartitioner.instance; StorageService ss = StorageService.instance; TokenMetadata tmd = ss.getTokenMetadata(); static IPartitioner oldPartitioner; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/service/SerializationsTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/service/SerializationsTest.java b/test/unit/org/apache/cassandra/service/SerializationsTest.java index 49632f9..35e598a 100644 --- a/test/unit/org/apache/cassandra/service/SerializationsTest.java +++ b/test/unit/org/apache/cassandra/service/SerializationsTest.java @@ -93,7 +93,7 @@ public class SerializationsTest extends AbstractSerializationsTester private void testValidationCompleteWrite() throws IOException { - IPartitioner p = new RandomPartitioner(); + IPartitioner p = RandomPartitioner.instance; // empty validation MerkleTree mt = new MerkleTree(p, FULL_RANGE, MerkleTree.RECOMMENDED_DEPTH, (int) Math.pow(2, 15)); Validator v0 = new Validator(DESC, FBUtilities.getBroadcastAddress(), -1); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java b/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java index aea978a..f98751a 100644 --- a/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java +++ b/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java @@ -27,8 +27,6 @@ import java.util.*; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import org.apache.cassandra.dht.LongToken; -import org.apache.cassandra.dht.Murmur3Partitioner; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -41,8 +39,10 @@ import org.apache.cassandra.config.Schema; import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.db.SystemKeyspace; import org.apache.cassandra.dht.Range; -import org.apache.cassandra.dht.StringToken; import org.apache.cassandra.dht.Token; +import org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken; +import org.apache.cassandra.dht.Murmur3Partitioner; +import org.apache.cassandra.dht.Murmur3Partitioner.LongToken; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.locator.IEndpointSnitch; import org.apache.cassandra.locator.PropertyFileSnitch; @@ -465,7 +465,7 @@ public class StorageServiceServerTest @Test public void testCreateRepairRangeFrom() throws Exception { - StorageService.instance.setPartitionerUnsafe(new Murmur3Partitioner()); + StorageService.instance.setPartitionerUnsafe(Murmur3Partitioner.instance); TokenMetadata metadata = StorageService.instance.getTokenMetadata(); metadata.clearUnsafe(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/07893d70/test/unit/org/apache/cassandra/utils/MerkleTreeTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/utils/MerkleTreeTest.java b/test/unit/org/apache/cassandra/utils/MerkleTreeTest.java index 116e194..a9e051e 100644 --- a/test/unit/org/apache/cassandra/utils/MerkleTreeTest.java +++ b/test/unit/org/apache/cassandra/utils/MerkleTreeTest.java @@ -30,6 +30,7 @@ import org.junit.Before; import org.junit.Test; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.dht.*; +import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; import org.apache.cassandra.io.util.DataOutputBuffer; import org.apache.cassandra.net.MessagingService; import org.apache.cassandra.utils.MerkleTree.Hashable; @@ -62,7 +63,7 @@ public class MerkleTreeTest public void clear() { TOKEN_SCALE = new BigInteger("8"); - partitioner = new RandomPartitioner(); + partitioner = RandomPartitioner.instance; // TODO need to trickle TokenSerializer DatabaseDescriptor.setPartitioner(partitioner); mt = new MerkleTree(partitioner, fullRange(), RECOMMENDED_DEPTH, Integer.MAX_VALUE);