http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/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 1b3b407..0451a98 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 @@ -172,7 +172,7 @@ public class BigTableScanner implements ISSTableScanner while (!ifile.isEOF()) { indexPosition = ifile.getFilePointer(); - DecoratedKey indexDecoratedKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); + DecoratedKey indexDecoratedKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); if (indexDecoratedKey.compareTo(currentRange.left) > 0 || currentRange.contains(indexDecoratedKey)) { // Found, just read the dataPosition and seek into index and data files @@ -282,7 +282,7 @@ public class BigTableScanner implements ISSTableScanner if (ifile.isEOF()) return endOfData(); - currentKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); + currentKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); currentEntry = rowIndexEntrySerializer.deserialize(ifile); } while (!currentRange.contains(currentKey)); } @@ -301,7 +301,7 @@ public class BigTableScanner implements ISSTableScanner else { // we need the position of the start of the next key, regardless of whether it falls in the current range - nextKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); + nextKey = sstable.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile)); nextEntry = rowIndexEntrySerializer.deserialize(ifile); if (!currentRange.contains(nextKey))
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java index 5607a7e..ff279a8 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigTableWriter.java @@ -19,6 +19,7 @@ package org.apache.cassandra.io.sstable.format.big; import java.io.*; import java.util.Map; +import java.util.Set; import org.apache.cassandra.db.*; import org.apache.cassandra.db.lifecycle.LifecycleTransaction; @@ -31,6 +32,7 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.rows.*; +import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.io.FSWriteError; import org.apache.cassandra.io.compress.CompressedSequentialWriter; import org.apache.cassandra.io.sstable.metadata.MetadataCollector; @@ -60,11 +62,12 @@ public class BigTableWriter extends SSTableWriter Long keyCount, Long repairedAt, CFMetaData metadata, + IPartitioner partitioner, MetadataCollector metadataCollector, SerializationHeader header, LifecycleTransaction txn) { - super(descriptor, keyCount, repairedAt, metadata, metadataCollector, header); + super(descriptor, keyCount, repairedAt, metadata, partitioner, metadataCollector, header); txn.trackNew(this); // must track before any files are created if (compression) @@ -240,12 +243,13 @@ public class BigTableWriter extends SSTableWriter StatsMetadata stats = statsMetadata(); assert boundary.indexLength > 0 && boundary.dataLength > 0; // open the reader early - IndexSummary indexSummary = iwriter.summary.build(metadata.partitioner, boundary); + IndexSummary indexSummary = iwriter.summary.build(partitioner, boundary); SegmentedFile ifile = iwriter.builder.buildIndex(descriptor, indexSummary, boundary); SegmentedFile dfile = dbuilder.buildData(descriptor, stats, boundary); SSTableReader sstable = SSTableReader.internalOpen(descriptor, components, metadata, - ifile, dfile, indexSummary, + partitioner, ifile, + dfile, indexSummary, iwriter.bf.sharedCopy(), maxDataAge, stats, SSTableReader.OpenReason.EARLY, header); // now it's open, find the ACTUAL last readable key (i.e. for which the data file has also been flushed) @@ -271,12 +275,13 @@ public class BigTableWriter extends SSTableWriter StatsMetadata stats = statsMetadata(); // finalize in-memory state for the reader - IndexSummary indexSummary = iwriter.summary.build(this.metadata.partitioner); + IndexSummary indexSummary = iwriter.summary.build(partitioner); SegmentedFile ifile = iwriter.builder.buildIndex(desc, indexSummary); SegmentedFile dfile = dbuilder.buildData(desc, stats); SSTableReader sstable = SSTableReader.internalOpen(desc, components, this.metadata, + partitioner, ifile, dfile, indexSummary, @@ -470,7 +475,7 @@ public class BigTableWriter extends SSTableWriter // save summary summary.prepareToCommit(); - try (IndexSummary summary = iwriter.summary.build(getPartitioner())) + try (IndexSummary summary = iwriter.summary.build(partitioner)) { SSTableReader.saveSummary(descriptor, first, last, iwriter.builder, dbuilder, summary); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/locator/TokenMetadata.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/locator/TokenMetadata.java b/src/java/org/apache/cassandra/locator/TokenMetadata.java index c3ec353..1b3c560 100644 --- a/src/java/org/apache/cassandra/locator/TokenMetadata.java +++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java @@ -26,14 +26,12 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; -import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.*; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.db.DecoratedKey; -import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; import org.apache.cassandra.gms.FailureDetector; @@ -94,7 +92,6 @@ public class TokenMetadata private volatile ArrayList<Token> sortedTokens; private final Topology topology; - public final IPartitioner partitioner; private static final Comparator<InetAddress> inetaddressCmp = new Comparator<InetAddress>() { @@ -111,28 +108,17 @@ public class TokenMetadata { this(SortedBiMultiValMap.<Token, InetAddress>create(null, inetaddressCmp), HashBiMap.<InetAddress, UUID>create(), - new Topology(), - DatabaseDescriptor.getPartitioner()); + new Topology()); } - private TokenMetadata(BiMultiValMap<Token, InetAddress> tokenToEndpointMap, BiMap<InetAddress, UUID> endpointsMap, Topology topology, IPartitioner partitioner) + private TokenMetadata(BiMultiValMap<Token, InetAddress> tokenToEndpointMap, BiMap<InetAddress, UUID> endpointsMap, Topology topology) { this.tokenToEndpointMap = tokenToEndpointMap; this.topology = topology; - this.partitioner = partitioner; endpointToHostIdMap = endpointsMap; sortedTokens = sortTokens(); } - /** - * To be used by tests only (via {@link StorageService.setPartitionerUnsafe}). - */ - @VisibleForTesting - public TokenMetadata cloneWithNewPartitioner(IPartitioner newPartitioner) - { - return new TokenMetadata(tokenToEndpointMap, endpointToHostIdMap, topology, newPartitioner); - } - private ArrayList<Token> sortTokens() { return new ArrayList<Token>(tokenToEndpointMap.keySet()); @@ -535,8 +521,7 @@ public class TokenMetadata { return new TokenMetadata(SortedBiMultiValMap.<Token, InetAddress>create(tokenToEndpointMap, null, inetaddressCmp), HashBiMap.create(endpointToHostIdMap), - new Topology(topology), - partitioner); + new Topology(topology)); } finally { @@ -895,7 +880,7 @@ public class TokenMetadata public static Iterator<Token> ringIterator(final ArrayList<Token> ring, Token start, boolean includeMin) { if (ring.isEmpty()) - return includeMin ? Iterators.singletonIterator(start.getPartitioner().getMinimumToken()) + return includeMin ? Iterators.singletonIterator(StorageService.getPartitioner().getMinimumToken()) : Iterators.<Token>emptyIterator(); final boolean insertMin = includeMin && !ring.get(0).isMinimum(); @@ -911,7 +896,7 @@ public class TokenMetadata { // return minimum for index == -1 if (j == -1) - return start.getPartitioner().getMinimumToken(); + return StorageService.getPartitioner().getMinimumToken(); // return ring token for other indexes return ring.get(j); } @@ -1108,11 +1093,6 @@ public class TokenMetadata cachedTokenMap.set(null); } - public DecoratedKey decorateKey(ByteBuffer key) - { - return partitioner.decorateKey(key); - } - /** * Tracks the assignment of racks and endpoints in each datacenter for all the "normal" endpoints * in this TokenMetadata. This allows faster calculation of endpoints in NetworkTopologyStrategy. http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/net/MessagingService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java index 422fdb3..4f15da2 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -1108,14 +1108,12 @@ public final class MessagingService implements MessagingServiceMBean public static IPartitioner globalPartitioner() { - return StorageService.instance.getTokenMetadata().partitioner; + return DatabaseDescriptor.getPartitioner(); } public static void validatePartitioner(AbstractBounds<?> bounds) { if (globalPartitioner() != bounds.left.getPartitioner()) - throw new AssertionError(String.format("Partitioner in bounds serialization. Expected %s, was %s.", - globalPartitioner().getClass().getName(), - bounds.left.getPartitioner().getClass().getName())); + throw new AssertionError(); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java index d765ae6..c0855c4 100644 --- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java +++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java @@ -85,8 +85,8 @@ public class RepairMessageVerbHandler implements IVerbHandler<RepairMessage> public boolean apply(SSTableReader sstable) { return sstable != null && - !sstable.metadata.isIndex() && // exclude SSTables from 2i - new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange)); + !(sstable.partitioner instanceof LocalPartitioner) && // exclude SSTables from 2i + new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange)); } }, true); //ephemeral snapshot, if repair fails, it will be cleaned next startup http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java b/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java index 41da481..1c21e41 100644 --- a/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java +++ b/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java @@ -38,6 +38,7 @@ import org.apache.cassandra.db.rows.RowIterator; import org.apache.cassandra.db.rows.UnfilteredRowIterators; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.io.compress.CompressionParameters; +import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.concurrent.OpOrder; @@ -306,16 +307,9 @@ public final class LegacySchemaMigrator defaultValidator); } - CFMetaData cfm = CFMetaData.create(ksName, - cfName, - cfId, - isDense, - isCompound, - isSuper, - isCounter, - false, // legacy schema did not contain views - columnDefs, - DatabaseDescriptor.getPartitioner()); + // The legacy schema did not have views, so we know that we are not loading a materialized view + boolean isMaterializedView = false; + CFMetaData cfm = CFMetaData.create(ksName, cfName, cfId, isDense, isCompound, isSuper, isCounter, isMaterializedView, columnDefs); cfm.readRepairChance(tableRow.getDouble("read_repair_chance")); cfm.dcLocalReadRepairChance(tableRow.getDouble("local_read_repair_chance")); @@ -585,7 +579,7 @@ public final class LegacySchemaMigrator ClusteringComparator comparator = store.metadata.comparator; Slices slices = Slices.with(comparator, Slice.make(comparator, typeName)); int nowInSec = FBUtilities.nowInSeconds(); - DecoratedKey key = store.metadata.decorateKey(AsciiType.instance.fromString(keyspaceName)); + DecoratedKey key = StorageService.getPartitioner().decorateKey(AsciiType.instance.fromString(keyspaceName)); SinglePartitionReadCommand command = SinglePartitionSliceCommand.create(store.metadata, nowInSec, key, slices); try (OpOrder.Group op = store.readOrdering.start(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/schema/SchemaKeyspace.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java index b33ba76..1f1a3dd 100644 --- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java +++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java @@ -38,6 +38,7 @@ import org.apache.cassandra.cql3.QueryProcessor; import org.apache.cassandra.cql3.UntypedResultSet; import org.apache.cassandra.cql3.functions.*; import org.apache.cassandra.cql3.statements.CFPropDefs; +import org.apache.cassandra.db.ClusteringComparator; import org.apache.cassandra.db.*; import org.apache.cassandra.db.compaction.AbstractCompactionStrategy; import org.apache.cassandra.db.marshal.*; @@ -46,6 +47,7 @@ import org.apache.cassandra.db.rows.*; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.io.compress.CompressionParameters; +import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.concurrent.OpOrder; @@ -395,24 +397,19 @@ public final class SchemaKeyspace return AsciiType.instance.fromString(ksName); } - private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, String keyspaceName, Function<RowIterator, T> fct) + private static DecoratedKey getSchemaKSDecoratedKey(String ksName) { - return readSchemaPartitionForKeyspaceAndApply(schemaTableName, getSchemaKSKey(keyspaceName), fct); + return StorageService.getPartitioner().decorateKey(getSchemaKSKey(ksName)); } - private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, ByteBuffer keyspaceKey, Function<RowIterator, T> fct) + private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, String keyspaceName, Function<RowIterator, T> fct) { - ColumnFamilyStore store = getSchemaCFS(schemaTableName); - return readSchemaPartitionForKeyspaceAndApply(store, store.decorateKey(keyspaceKey), fct); + return readSchemaPartitionForKeyspaceAndApply(schemaTableName, getSchemaKSDecoratedKey(keyspaceName), fct); } private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, DecoratedKey keyspaceKey, Function<RowIterator, T> fct) { - return readSchemaPartitionForKeyspaceAndApply(getSchemaCFS(schemaTableName), keyspaceKey, fct); - } - - private static <T> T readSchemaPartitionForKeyspaceAndApply(ColumnFamilyStore store, DecoratedKey keyspaceKey, Function<RowIterator, T> fct) - { + ColumnFamilyStore store = getSchemaCFS(schemaTableName); int nowInSec = FBUtilities.nowInSeconds(); try (OpOrder.Group op = store.readOrdering.start(); RowIterator partition = UnfilteredRowIterators.filter(SinglePartitionReadCommand.fullPartitionRead(store.metadata, nowInSec, keyspaceKey) @@ -430,7 +427,7 @@ public final class SchemaKeyspace Slices slices = Slices.with(comparator, Slice.make(comparator, tableName)); int nowInSec = FBUtilities.nowInSeconds(); try (OpOrder.Group op = store.readOrdering.start(); - RowIterator partition = UnfilteredRowIterators.filter(SinglePartitionSliceCommand.create(store.metadata, nowInSec, getSchemaKSKey(keyspaceName), slices) + RowIterator partition = UnfilteredRowIterators.filter(SinglePartitionSliceCommand.create(store.metadata, nowInSec, getSchemaKSDecoratedKey(keyspaceName), slices) .queryMemtableAndDisk(store, op), nowInSec)) { return fct.apply(partition); @@ -701,8 +698,7 @@ public final class SchemaKeyspace public static Mutation makeDropKeyspaceMutation(KeyspaceMetadata keyspace, long timestamp) { int nowInSec = FBUtilities.nowInSeconds(); - Mutation mutation = new Mutation(NAME, Keyspaces.decorateKey(getSchemaKSKey(keyspace.name))); - + Mutation mutation = new Mutation(NAME, getSchemaKSDecoratedKey(keyspace.name)); for (CFMetaData schemaTable : All) mutation.add(PartitionUpdate.fullPartitionDelete(schemaTable, mutation.key(), timestamp, nowInSec)); @@ -1089,16 +1085,7 @@ public final class SchemaKeyspace boolean isCompound = flags.contains(CFMetaData.Flag.COMPOUND); boolean isMaterializedView = flags.contains(CFMetaData.Flag.MATERIALIZEDVIEW); - CFMetaData cfm = CFMetaData.create(keyspace, - table, - id, - isDense, - isCompound, - isSuper, - isCounter, - isMaterializedView, - columns, - DatabaseDescriptor.getPartitioner()); + CFMetaData cfm = CFMetaData.create(keyspace, table, id, isDense, isCompound, isSuper, isCounter, isMaterializedView, columns); Map<String, String> compaction = new HashMap<>(row.getTextMap("compaction")); Class<? extends AbstractCompactionStrategy> compactionStrategyClass = http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/service/CacheService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java index 253e9e4..b1554e3 100644 --- a/src/java/org/apache/cassandra/service/CacheService.java +++ b/src/java/org/apache/cassandra/service/CacheService.java @@ -372,7 +372,7 @@ public class CacheService implements CacheServiceMBean { public Pair<CounterCacheKey, ClockAndCount> call() throws Exception { - DecoratedKey key = cfs.decorateKey(partitionKey); + DecoratedKey key = cfs.partitioner.decorateKey(partitionKey); LegacyLayout.LegacyCellName name = LegacyLayout.decodeCellName(cfs.metadata, cellName); ColumnDefinition column = name.column; CellPath path = name.collectionElement == null ? null : CellPath.create(name.collectionElement); @@ -427,7 +427,7 @@ public class CacheService implements CacheServiceMBean { public Pair<RowCacheKey, IRowCacheEntry> call() throws Exception { - DecoratedKey key = cfs.decorateKey(buffer); + DecoratedKey key = cfs.partitioner.decorateKey(buffer); int nowInSec = FBUtilities.nowInSeconds(); try (OpOrder.Group op = cfs.readOrdering.start(); UnfilteredRowIterator iter = SinglePartitionReadCommand.fullPartitionRead(cfs.metadata, nowInSec, key).queryMemtableAndDisk(cfs, op)) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/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 51aa48f..be11c77 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -643,7 +643,7 @@ public class StorageProxy implements StorageProxyMBean try { - Token baseToken = StorageService.instance.getTokenMetadata().partitioner.getToken(dataKey); + Token baseToken = StorageService.getPartitioner().getToken(dataKey); ConsistencyLevel consistencyLevel = ConsistencyLevel.ONE; @@ -862,11 +862,8 @@ public class StorageProxy implements StorageProxyMBean Keyspace.open(SystemKeyspace.NAME), null, WriteType.SIMPLE); - Mutation mutation = new Mutation( - PartitionUpdate.fullPartitionDelete(SystemKeyspace.Batchlog, - UUIDType.instance.decompose(uuid), - FBUtilities.timestampMicros(), - FBUtilities.nowInSeconds())); + Mutation mutation = new Mutation(SystemKeyspace.NAME, StorageService.getPartitioner().decorateKey(UUIDType.instance.decompose(uuid))); + mutation.add(PartitionUpdate.fullPartitionDelete(SystemKeyspace.Batchlog, mutation.key(), FBUtilities.timestampMicros(), FBUtilities.nowInSeconds())); MessageOut<Mutation> message = mutation.createMessage(MessagingService.Verb.BATCHLOG_MUTATION); for (InetAddress target : endpoints) { @@ -1689,7 +1686,7 @@ public class StorageProxy implements StorageProxyMBean public static List<InetAddress> getLiveSortedEndpoints(Keyspace keyspace, ByteBuffer key) { - return getLiveSortedEndpoints(keyspace, StorageService.instance.getTokenMetadata().decorateKey(key)); + return getLiveSortedEndpoints(keyspace, StorageService.getPartitioner().decorateKey(key)); } public static List<InetAddress> getLiveSortedEndpoints(Keyspace keyspace, RingPosition pos) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index b51dd3a..5049337 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -78,7 +78,6 @@ import org.apache.cassandra.dht.RangeStreamer; import org.apache.cassandra.dht.RingPosition; import org.apache.cassandra.dht.StreamStateStore; import org.apache.cassandra.dht.Token; -import org.apache.cassandra.dht.Token.TokenFactory; import org.apache.cassandra.exceptions.AlreadyExistsException; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.InvalidRequestException; @@ -189,7 +188,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE /* This abstraction maintains the token/endpoint metadata information */ private TokenMetadata tokenMetadata = new TokenMetadata(); - public volatile VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(tokenMetadata.partitioner); + public volatile VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(getPartitioner()); private Thread drainOnShutdown = null; private boolean inShutdownHook = false; @@ -201,6 +200,11 @@ public class StorageService extends NotificationBroadcasterSupport implements IE return inShutdownHook; } + public static IPartitioner getPartitioner() + { + return DatabaseDescriptor.getPartitioner(); + } + public Collection<Range<Token>> getLocalRanges(String keyspaceName) { return getRangesForEndpoint(keyspaceName, FBUtilities.getBroadcastAddress()); @@ -506,10 +510,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE { if (Gossiper.instance.getEndpointStateForEndpoint(DatabaseDescriptor.getReplaceAddress()).getApplicationState(ApplicationState.TOKENS) == null) throw new RuntimeException("Could not find tokens for " + DatabaseDescriptor.getReplaceAddress() + " to replace"); - Collection<Token> tokens = TokenSerializer.deserialize( - tokenMetadata.partitioner, - new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(DatabaseDescriptor.getReplaceAddress(), - ApplicationState.TOKENS)))); + Collection<Token> tokens = TokenSerializer.deserialize(getPartitioner(), new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(DatabaseDescriptor.getReplaceAddress(), ApplicationState.TOKENS)))); SystemKeyspace.setLocalHostId(hostId); // use the replacee's host Id as our own so we receive hints, etc Gossiper.instance.resetEndpointStateMap(); // clean up since we have what we need @@ -946,7 +947,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE { bootstrapTokens = new ArrayList<>(initialTokens.size()); for (String token : initialTokens) - bootstrapTokens.add(getTokenFactory().fromString(token)); + bootstrapTokens.add(getPartitioner().getTokenFactory().fromString(token)); logger.info("Saved tokens not found. Using configuration value: {}", bootstrapTokens); } } @@ -1508,7 +1509,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE throw new InvalidRequestException("There is no ring for the keyspace: " + keyspace); List<TokenRange> ranges = new ArrayList<>(); - Token.TokenFactory tf = getTokenFactory(); + Token.TokenFactory tf = getPartitioner().getTokenFactory(); Map<Range<Token>, List<InetAddress>> rangeToAddressMap = includeOnlyLocalDC @@ -1817,9 +1818,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE { try { - return TokenSerializer.deserialize( - tokenMetadata.partitioner, - new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(endpoint, ApplicationState.TOKENS)))); + return TokenSerializer.deserialize(getPartitioner(), new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(endpoint, ApplicationState.TOKENS)))); } catch (IOException e) { @@ -2050,7 +2049,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE private void handleStateMoving(InetAddress endpoint, String[] pieces) { assert pieces.length >= 2; - Token token = getTokenFactory().fromString(pieces[1]); + Token token = getPartitioner().getTokenFactory().fromString(pieces[1]); if (logger.isDebugEnabled()) logger.debug("Node {} state moving, new token {}", endpoint, token); @@ -2791,7 +2790,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE public int repairAsync(String keyspace, Map<String, String> repairSpec) { - RepairOption option = RepairOption.parse(repairSpec, tokenMetadata.partitioner); + RepairOption option = RepairOption.parse(repairSpec, getPartitioner()); // if ranges are not specified if (option.getRanges().isEmpty()) { @@ -2975,8 +2974,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE @VisibleForTesting Collection<Range<Token>> createRepairRangeFrom(String beginToken, String endToken) { - Token parsedBeginToken = getTokenFactory().fromString(beginToken); - Token parsedEndToken = getTokenFactory().fromString(endToken); + Token parsedBeginToken = getPartitioner().getTokenFactory().fromString(beginToken); + Token parsedEndToken = getPartitioner().getTokenFactory().fromString(endToken); // Break up given range to match ring layout in TokenMetadata ArrayList<Range<Token>> repairingRange = new ArrayList<>(); @@ -3003,11 +3002,6 @@ public class StorageService extends NotificationBroadcasterSupport implements IE return repairingRange; } - public TokenFactory getTokenFactory() - { - return tokenMetadata.partitioner.getTokenFactory(); - } - public int forceRepairAsync(String keyspace, RepairOption options) { if (options.getRanges().isEmpty() || Keyspace.open(keyspace).getReplicationStrategy().getReplicationFactor() < 2) @@ -3150,12 +3144,12 @@ public class StorageService extends NotificationBroadcasterSupport implements IE if (cfMetaData == null) throw new IllegalArgumentException("Unknown table '" + cf + "' in keyspace '" + keyspaceName + "'"); - return getNaturalEndpoints(keyspaceName, tokenMetadata.partitioner.getToken(cfMetaData.getKeyValidator().fromString(key))); + return getNaturalEndpoints(keyspaceName, getPartitioner().getToken(cfMetaData.getKeyValidator().fromString(key))); } public List<InetAddress> getNaturalEndpoints(String keyspaceName, ByteBuffer key) { - return getNaturalEndpoints(keyspaceName, tokenMetadata.partitioner.getToken(key)); + return getNaturalEndpoints(keyspaceName, getPartitioner().getToken(key)); } /** @@ -3181,7 +3175,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE */ public List<InetAddress> getLiveNaturalEndpoints(Keyspace keyspace, ByteBuffer key) { - return getLiveNaturalEndpoints(keyspace, tokenMetadata.decorateKey(key)); + return getLiveNaturalEndpoints(keyspace, getPartitioner().decorateKey(key)); } public List<InetAddress> getLiveNaturalEndpoints(Keyspace keyspace, RingPosition pos) @@ -3444,7 +3438,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE InetAddress preferred = SystemKeyspace.getPreferredIP(hintsDestinationHost); // stream all hints -- range list will be a singleton of "the entire ring" - Token token = tokenMetadata.partitioner.getMinimumToken(); + Token token = StorageService.getPartitioner().getMinimumToken(); List<Range<Token>> ranges = Collections.singletonList(new Range<>(token, token)); return new StreamPlan("Hints").transferRanges(hintsDestinationHost, @@ -3460,13 +3454,13 @@ public class StorageService extends NotificationBroadcasterSupport implements IE { try { - getTokenFactory().validate(newToken); + getPartitioner().getTokenFactory().validate(newToken); } catch (ConfigurationException e) { throw new IOException(e.getMessage()); } - move(getTokenFactory().fromString(newToken)); + move(getPartitioner().getTokenFactory().fromString(newToken)); } /** @@ -3921,9 +3915,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE @VisibleForTesting public IPartitioner setPartitionerUnsafe(IPartitioner newPartitioner) { - IPartitioner oldPartitioner = DatabaseDescriptor.setPartitionerUnsafe(newPartitioner); - tokenMetadata = tokenMetadata.cloneWithNewPartitioner(newPartitioner); - valueFactory = new VersionedValue.VersionedValueFactory(newPartitioner); + IPartitioner oldPartitioner = DatabaseDescriptor.getPartitioner(); + DatabaseDescriptor.setPartitioner(newPartitioner); + valueFactory = new VersionedValue.VersionedValueFactory(getPartitioner()); return oldPartitioner; } @@ -3950,7 +3944,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE { List<Token> sortedTokens = tokenMetadata.sortedTokens(); // describeOwnership returns tokens in an unspecified order, let's re-order them - Map<Token, Float> tokenMap = new TreeMap<Token, Float>(tokenMetadata.partitioner.describeOwnership(sortedTokens)); + Map<Token, Float> tokenMap = new TreeMap<Token, Float>(getPartitioner().describeOwnership(sortedTokens)); Map<InetAddress, Float> nodeMap = new LinkedHashMap<>(); for (Map.Entry<Token, Float> entry : tokenMap.entrySet()) { @@ -4010,7 +4004,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE for (Collection<InetAddress> endpoints : sortedDcsToEndpoints.values()) endpointsGroupedByDc.add(endpoints); - Map<Token, Float> tokenOwnership = tokenMetadata.partitioner.describeOwnership(tokenMetadata.sortedTokens()); + Map<Token, Float> tokenOwnership = getPartitioner().describeOwnership(tokenMetadata.sortedTokens()); LinkedHashMap<InetAddress, Float> finalOwnership = Maps.newLinkedHashMap(); // calculate ownership per dc @@ -4217,6 +4211,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE this.keyspace = keyspace; try { + setPartitioner(DatabaseDescriptor.getPartitioner()); for (Map.Entry<Range<Token>, List<InetAddress>> entry : StorageService.instance.getRangeToAddressMap(keyspace).entrySet()) { Range<Token> range = entry.getKey(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/service/pager/RangeNamesQueryPager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/pager/RangeNamesQueryPager.java b/src/java/org/apache/cassandra/service/pager/RangeNamesQueryPager.java index 4171694..fffb4e1 100644 --- a/src/java/org/apache/cassandra/service/pager/RangeNamesQueryPager.java +++ b/src/java/org/apache/cassandra/service/pager/RangeNamesQueryPager.java @@ -19,8 +19,10 @@ package org.apache.cassandra.service.pager; import org.apache.cassandra.db.*; import org.apache.cassandra.db.rows.*; +import org.apache.cassandra.db.partitions.*; import org.apache.cassandra.dht.*; import org.apache.cassandra.exceptions.RequestExecutionException; +import org.apache.cassandra.service.StorageService; /** * Pages a RangeSliceCommand whose predicate is a name query. @@ -42,7 +44,7 @@ public class RangeNamesQueryPager extends AbstractQueryPager if (state != null) { - lastReturnedKey = command.metadata().decorateKey(state.partitionKey); + lastReturnedKey = StorageService.getPartitioner().decorateKey(state.partitionKey); restoreState(lastReturnedKey, state.remaining, state.remainingInPartition); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java index 0139d9c..6c08be0 100644 --- a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java +++ b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java @@ -22,6 +22,7 @@ import org.apache.cassandra.db.rows.*; import org.apache.cassandra.db.filter.*; import org.apache.cassandra.dht.*; import org.apache.cassandra.exceptions.RequestExecutionException; +import org.apache.cassandra.service.StorageService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,7 +47,7 @@ public class RangeSliceQueryPager extends AbstractQueryPager if (state != null) { - lastReturnedKey = command.metadata().decorateKey(state.partitionKey); + lastReturnedKey = StorageService.getPartitioner().decorateKey(state.partitionKey); lastReturnedClustering = LegacyLayout.decodeClustering(command.metadata(), state.cellName); restoreState(lastReturnedKey, state.remaining, state.remainingInPartition); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/service/paxos/Commit.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/paxos/Commit.java b/src/java/org/apache/cassandra/service/paxos/Commit.java index 95bd464..579c315 100644 --- a/src/java/org/apache/cassandra/service/paxos/Commit.java +++ b/src/java/org/apache/cassandra/service/paxos/Commit.java @@ -22,7 +22,6 @@ package org.apache.cassandra.service.paxos; import java.io.IOException; -import java.nio.ByteBuffer; import java.util.UUID; import com.google.common.base.Objects; @@ -123,9 +122,9 @@ public class Commit public Commit deserialize(DataInputPlus in, int version) throws IOException { - ByteBuffer key = null; + DecoratedKey key = null; if (version < MessagingService.VERSION_30) - key = ByteBufferUtil.readWithShortLength(in); + key = StorageService.getPartitioner().decorateKey(ByteBufferUtil.readWithShortLength(in)); UUID ballot = UUIDSerializer.serializer.deserialize(in, version); PartitionUpdate update = PartitionUpdate.serializer.deserialize(in, version, SerializationHelper.Flag.LOCAL, key); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/streaming/StreamReader.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/streaming/StreamReader.java b/src/java/org/apache/cassandra/streaming/StreamReader.java index a098786..61656b3 100644 --- a/src/java/org/apache/cassandra/streaming/StreamReader.java +++ b/src/java/org/apache/cassandra/streaming/StreamReader.java @@ -193,7 +193,7 @@ public class StreamReader public DecoratedKey newPartition() throws IOException { - key = metadata.decorateKey(ByteBufferUtil.readWithShortLength(in)); + key = StorageService.getPartitioner().decorateKey(ByteBufferUtil.readWithShortLength(in)); partitionLevelDeletion = DeletionTime.serializer.deserialize(in); iterator = SSTableSimpleIterator.create(metadata, in, header, helper, partitionLevelDeletion); staticRow = iterator.readStaticRow(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/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 a7b8b07..0674c62 100644 --- a/src/java/org/apache/cassandra/thrift/CassandraServer.java +++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java @@ -549,7 +549,7 @@ public class CassandraServer implements Cassandra.Iface for (ByteBuffer key: keys) { ThriftValidation.validateKey(metadata, key); - DecoratedKey dk = metadata.decorateKey(key); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); commands.add(SinglePartitionReadCommand.create(true, metadata, nowInSec, columnFilter, RowFilter.NONE, limits, dk, filter)); } @@ -617,7 +617,7 @@ public class CassandraServer implements Cassandra.Iface filter = new ClusteringIndexNamesFilter(FBUtilities.singleton(cellname.clustering, metadata.comparator), false); } - DecoratedKey dk = metadata.decorateKey(key); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); SinglePartitionReadCommand<?> command = SinglePartitionReadCommand.create(true, metadata, FBUtilities.nowInSeconds(), columns, RowFilter.NONE, DataLimits.NONE, dk, filter); try (RowIterator result = PartitionIterators.getOnlyElement(read(Arrays.asList(command), consistencyLevel, cState), command)) @@ -694,23 +694,22 @@ public class CassandraServer implements Cassandra.Iface ColumnFilter columnFilter; ClusteringIndexFilter filter; - CFMetaData metadata = cfs.metadata; - if (metadata.isSuper() && !column_parent.isSetSuper_column()) + if (cfs.metadata.isSuper() && !column_parent.isSetSuper_column()) { // If we count on a super column table without having set the super column name, we're in fact interested by the count of super columns - columnFilter = ColumnFilter.all(metadata); - filter = new ClusteringIndexSliceFilter(makeSlices(metadata, sliceRange), sliceRange.reversed); + columnFilter = ColumnFilter.all(cfs.metadata); + filter = new ClusteringIndexSliceFilter(makeSlices(cfs.metadata, sliceRange), sliceRange.reversed); } else { - columnFilter = makeColumnFilter(metadata, column_parent, sliceRange); - filter = toInternalFilter(metadata, column_parent, sliceRange); + columnFilter = makeColumnFilter(cfs.metadata, column_parent, sliceRange); + filter = toInternalFilter(cfs.metadata, column_parent, sliceRange); } - DataLimits limits = getLimits(1, metadata.isSuper() && !column_parent.isSetSuper_column(), predicate); - DecoratedKey dk = metadata.decorateKey(key); + DataLimits limits = getLimits(1, cfs.metadata.isSuper() && !column_parent.isSetSuper_column(), predicate); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); - return QueryPagers.countPaged(metadata, + return QueryPagers.countPaged(cfs.metadata, dk, columnFilter, filter, @@ -822,9 +821,11 @@ public class CassandraServer implements Cassandra.Iface org.apache.cassandra.db.Mutation mutation; try { + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); + LegacyLayout.LegacyCellName name = LegacyLayout.decodeCellName(metadata, column_parent.super_column, column.name); Cell cell = cellFromColumn(metadata, name, column); - PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, key, BTreeBackedRow.singleCellRow(name.clustering, cell)); + PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, dk, BTreeBackedRow.singleCellRow(name.clustering, cell)); mutation = new org.apache.cassandra.db.Mutation(update); } @@ -912,7 +913,7 @@ public class CassandraServer implements Cassandra.Iface for (Column column : updates) ThriftValidation.validateColumnData(metadata, null, column); - DecoratedKey dk = metadata.decorateKey(key); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); int nowInSec = FBUtilities.nowInSeconds(); PartitionUpdate partitionUpdates = PartitionUpdate.fromIterator(LegacyLayout.toRowIterator(metadata, dk, toLegacyCells(metadata, updates, nowInSec).iterator(), nowInSec)); @@ -1079,6 +1080,7 @@ public class CassandraServer implements Cassandra.Iface for (Map.Entry<ByteBuffer, Map<String, List<Mutation>>> mutationEntry: mutation_map.entrySet()) { ByteBuffer key = mutationEntry.getKey(); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); // We need to separate mutation for standard cf and counter cf (that will be encapsulated in a // CounterMutation) because it doesn't follow the same code path @@ -1118,7 +1120,6 @@ public class CassandraServer implements Cassandra.Iface } sortAndMerge(metadata, cells, nowInSec); - DecoratedKey dk = metadata.decorateKey(key); PartitionUpdate update = PartitionUpdate.fromIterator(LegacyLayout.toUnfilteredRowIterator(metadata, dk, delInfo, cells.iterator())); org.apache.cassandra.db.Mutation mutation; @@ -1319,7 +1320,7 @@ public class CassandraServer implements Cassandra.Iface if (isCommutativeOp) ThriftConversion.fromThrift(consistency_level).validateCounterForWrite(metadata); - DecoratedKey dk = metadata.decorateKey(key); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); int nowInSec = FBUtilities.nowInSeconds(); PartitionUpdate update; @@ -1472,7 +1473,7 @@ public class CassandraServer implements Cassandra.Iface org.apache.cassandra.db.ConsistencyLevel consistencyLevel = ThriftConversion.fromThrift(consistency_level); consistencyLevel.validateForRead(keyspace); - IPartitioner p = metadata.partitioner; + IPartitioner p = StorageService.getPartitioner(); AbstractBounds<PartitionPosition> bounds; if (range.start_key == null) { @@ -1557,7 +1558,7 @@ public class CassandraServer implements Cassandra.Iface org.apache.cassandra.db.ConsistencyLevel consistencyLevel = ThriftConversion.fromThrift(consistency_level); consistencyLevel.validateForRead(keyspace); - IPartitioner p = metadata.partitioner; + IPartitioner p = StorageService.getPartitioner(); AbstractBounds<PartitionPosition> bounds; if (range.start_key == null) { @@ -1669,7 +1670,7 @@ public class CassandraServer implements Cassandra.Iface org.apache.cassandra.db.ConsistencyLevel consistencyLevel = ThriftConversion.fromThrift(consistency_level); consistencyLevel.validateForRead(keyspace); - IPartitioner p = metadata.partitioner; + IPartitioner p = StorageService.getPartitioner(); AbstractBounds<PartitionPosition> bounds = new Bounds<>(PartitionPosition.ForKey.get(index_clause.start_key, p), p.getMinimumToken().minKeyBound()); @@ -1766,7 +1767,7 @@ public class CassandraServer implements Cassandra.Iface public String describe_partitioner() throws TException { - return StorageService.instance.getTokenMetadata().getClass().getName(); + return StorageService.getPartitioner().getClass().getName(); } public String describe_snitch() throws TException @@ -1795,8 +1796,8 @@ public class CassandraServer implements Cassandra.Iface { try { - Token.TokenFactory tf = StorageService.instance.getTokenFactory(); - Range<Token> tr = new Range<Token>(tf.fromString(start_token), tf.fromString(end_token)); + Token.TokenFactory tf = StorageService.getPartitioner().getTokenFactory(); + Range<Token> tr = new Range<>(tf.fromString(start_token), tf.fromString(end_token)); List<Pair<Range<Token>, Long>> splits = StorageService.instance.getSplits(state().getKeyspace(), cfName, tr, keys_per_split); List<CfSplit> result = new ArrayList<>(splits.size()); @@ -2133,13 +2134,14 @@ public class CassandraServer implements Cassandra.Iface try { LegacyLayout.LegacyCellName name = LegacyLayout.decodeCellName(metadata, column_parent.super_column, column.name); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(key); // See UpdateParameters.addCounter() for more details on this ByteBuffer value = CounterContext.instance().createLocal(column.value); CellPath path = name.collectionElement == null ? null : CellPath.create(name.collectionElement); Cell cell = BufferCell.live(metadata, name.column, FBUtilities.timestampMicros(), value, path); - PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, key, BTreeBackedRow.singleCellRow(name.clustering, cell)); + PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, dk, BTreeBackedRow.singleCellRow(name.clustering, cell)); org.apache.cassandra.db.Mutation mutation = new org.apache.cassandra.db.Mutation(update); doInsert(consistency_level, Arrays.asList(new CounterMutation(mutation, ThriftConversion.fromThrift(consistency_level)))); @@ -2410,7 +2412,7 @@ public class CassandraServer implements Cassandra.Iface DataLimits limits = getLimits(1, false, request.count); ThriftValidation.validateKey(metadata, request.key); - DecoratedKey dk = metadata.decorateKey(request.key); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(request.key); SinglePartitionReadCommand<?> cmd = SinglePartitionReadCommand.create(true, metadata, FBUtilities.nowInSeconds(), columns, RowFilter.NONE, limits, dk, filter); return getSlice(Collections.<SinglePartitionReadCommand<?>>singletonList(cmd), false, http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/thrift/ThriftConversion.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/thrift/ThriftConversion.java b/src/java/org/apache/cassandra/thrift/ThriftConversion.java index 36383e0..20d6eba 100644 --- a/src/java/org/apache/cassandra/thrift/ThriftConversion.java +++ b/src/java/org/apache/cassandra/thrift/ThriftConversion.java @@ -24,10 +24,10 @@ import com.google.common.base.Strings; import com.google.common.collect.Maps; import org.apache.cassandra.io.compress.ICompressor; + import org.apache.cassandra.cache.CachingOptions; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ColumnDefinition; -import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.config.Schema; import org.apache.cassandra.cql3.ColumnIdentifier; import org.apache.cassandra.cql3.Operator; @@ -277,7 +277,7 @@ public class ThriftConversion // We do not allow Thrift materialized views, so we always set it to false boolean isMaterializedView = false; - CFMetaData newCFMD = CFMetaData.create(cf_def.keyspace, cf_def.name, cfId, isDense, isCompound, isSuper, isCounter, isMaterializedView, defs, DatabaseDescriptor.getPartitioner()); + CFMetaData newCFMD = CFMetaData.create(cf_def.keyspace, cf_def.name, cfId, isDense, isCompound, isSuper, isCounter, isMaterializedView, defs); if (cf_def.isSetGc_grace_seconds()) newCFMD.gcGraceSeconds(cf_def.gc_grace_seconds); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/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 054b466..13c55aa 100644 --- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java +++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java @@ -31,6 +31,7 @@ import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.dht.Token; import org.apache.cassandra.serializers.MarshalException; +import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; @@ -509,7 +510,7 @@ public class ThriftValidation if (range.start_token != null && range.end_key != null) throw new org.apache.cassandra.exceptions.InvalidRequestException("start token + end key is not a supported key range"); - IPartitioner p = metadata.partitioner; + IPartitioner p = StorageService.getPartitioner(); if (range.start_key != null && range.end_key != null) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java index 435c505..5354b43 100644 --- a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java +++ b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java @@ -24,12 +24,10 @@ import com.datastax.driver.core.*; import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.ColumnIdentifier; import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.dht.*; import org.apache.cassandra.dht.Token; -import org.apache.cassandra.dht.Token.TokenFactory; import org.apache.cassandra.io.sstable.SSTableLoader; import org.apache.cassandra.schema.SchemaKeyspace; @@ -66,9 +64,11 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client Metadata metadata = cluster.getMetadata(); + setPartitioner(metadata.getPartitioner()); + Set<TokenRange> tokenRanges = metadata.getTokenRanges(); - TokenFactory tokenFactory = FBUtilities.newPartitioner(metadata.getPartitioner()).getTokenFactory(); + Token.TokenFactory tokenFactory = getPartitioner().getTokenFactory(); for (TokenRange tokenRange : tokenRanges) { @@ -128,16 +128,7 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client for (Row colRow : session.execute(columnsQuery, keyspace, name)) defs.add(createDefinitionFromRow(colRow, keyspace, name)); - tables.put(name, CFMetaData.create(keyspace, - name, - id, - isDense, - isCompound, - isSuper, - isCounter, - isMaterializedView, - defs, - DatabaseDescriptor.getPartitioner())); + tables.put(name, CFMetaData.create(keyspace, name, id, isDense, isCompound, isSuper, isCounter, isMaterializedView, defs)); } return tables; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java ---------------------------------------------------------------------- diff --git a/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java b/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java index b48336f..b49055d 100644 --- a/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java +++ b/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java @@ -83,6 +83,7 @@ public class CQLSSTableWriterLongTest CQLSSTableWriter writer = CQLSSTableWriter.builder() .inDirectory(dataDir) .forTable(schema) + .withPartitioner(StorageService.instance.getPartitioner()) .using(insert) .withBufferSizeInMB(1) .build(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/MockSchema.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/MockSchema.java b/test/unit/org/apache/cassandra/MockSchema.java index 11892a8..e052c0a 100644 --- a/test/unit/org/apache/cassandra/MockSchema.java +++ b/test/unit/org/apache/cassandra/MockSchema.java @@ -117,11 +117,11 @@ public class MockSchema throw new RuntimeException(e); } } - SerializationHeader header = SerializationHeader.make(cfs.metadata, Collections.emptyList()); + SerializationHeader header = SerializationHeader.make(cfs.metadata, Collections.EMPTY_LIST); StatsMetadata metadata = (StatsMetadata) new MetadataCollector(cfs.metadata.comparator) - .finalizeMetadata(cfs.metadata.partitioner.getClass().getCanonicalName(), 0.01f, -1, header) + .finalizeMetadata(Murmur3Partitioner.instance.getClass().getCanonicalName(), 0.01f, -1, header) .get(MetadataType.STATS); - SSTableReader reader = SSTableReader.internalOpen(descriptor, components, cfs.metadata, + SSTableReader reader = SSTableReader.internalOpen(descriptor, components, cfs.metadata, Murmur3Partitioner.instance, segmentedFile.sharedCopy(), segmentedFile.sharedCopy(), indexSummary.sharedCopy(), new AlwaysPresentFilter(), 1L, metadata, SSTableReader.OpenReason.NORMAL, header); reader.first = reader.last = readerBounds(generation); @@ -139,7 +139,7 @@ public class MockSchema { String cfname = "mockcf" + (id.incrementAndGet()); CFMetaData metadata = newCFMetaData(ksname, cfname); - return new ColumnFamilyStore(ks, cfname, 0, metadata, new Directories(metadata), false, false); + return new ColumnFamilyStore(ks, cfname, Murmur3Partitioner.instance, 0, metadata, new Directories(metadata), false, false); } private static CFMetaData newCFMetaData(String ksname, String cfname) @@ -148,7 +148,6 @@ public class MockSchema .addPartitionKey("key", UTF8Type.instance) .addClusteringColumn("col", UTF8Type.instance) .addRegularColumn("value", UTF8Type.instance) - .withPartitioner(Murmur3Partitioner.instance) .build(); metadata.caching(CachingOptions.NONE); return metadata; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/UpdateBuilder.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/UpdateBuilder.java b/test/unit/org/apache/cassandra/UpdateBuilder.java index 3a5fbe6..b2d1d7f 100644 --- a/test/unit/org/apache/cassandra/UpdateBuilder.java +++ b/test/unit/org/apache/cassandra/UpdateBuilder.java @@ -114,6 +114,6 @@ public class UpdateBuilder return (DecoratedKey)partitionKey[0]; ByteBuffer key = CFMetaData.serializePartitionKey(metadata.getKeyValidatorAsClusteringComparator().make(partitionKey)); - return metadata.decorateKey(key); + return StorageService.getPartitioner().decorateKey(key); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/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 254c21c..e97af68 100644 --- a/test/unit/org/apache/cassandra/Util.java +++ b/test/unit/org/apache/cassandra/Util.java @@ -32,21 +32,24 @@ import java.util.function.Supplier; import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.Iterators; - import org.apache.commons.lang3.StringUtils; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ColumnDefinition; -import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.ColumnIdentifier; +import org.apache.cassandra.cql3.Operator; import org.apache.cassandra.db.*; +import org.apache.cassandra.db.Slice.Bound; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.db.compaction.AbstractCompactionTask; import org.apache.cassandra.db.compaction.CompactionManager; +import org.apache.cassandra.db.filter.*; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.db.partitions.*; import org.apache.cassandra.dht.*; import org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken; +import org.apache.cassandra.dht.Range; +import org.apache.cassandra.dht.Token; import org.apache.cassandra.gms.ApplicationState; import org.apache.cassandra.gms.Gossiper; import org.apache.cassandra.gms.VersionedValue; @@ -65,29 +68,24 @@ public class Util { private static List<UUID> hostIdPool = new ArrayList<UUID>(); - public static IPartitioner testPartitioner() - { - return DatabaseDescriptor.getPartitioner(); - } - public static DecoratedKey dk(String key) { - return testPartitioner().decorateKey(ByteBufferUtil.bytes(key)); + return StorageService.getPartitioner().decorateKey(ByteBufferUtil.bytes(key)); } - public static DecoratedKey dk(String key, AbstractType<?> type) + public static DecoratedKey dk(String key, AbstractType type) { - return testPartitioner().decorateKey(type.fromString(key)); + return StorageService.getPartitioner().decorateKey(type.fromString(key)); } public static DecoratedKey dk(ByteBuffer key) { - return testPartitioner().decorateKey(key); + return StorageService.getPartitioner().decorateKey(key); } public static PartitionPosition rp(String key) { - return rp(key, testPartitioner()); + return rp(key, StorageService.getPartitioner()); } public static PartitionPosition rp(String key, IPartitioner partitioner) @@ -109,7 +107,7 @@ public class Util public static Token token(String key) { - return testPartitioner().getToken(ByteBufferUtil.bytes(key)); + return StorageService.getPartitioner().getToken(ByteBufferUtil.bytes(key)); } public static Range<PartitionPosition> range(String left, String right) @@ -266,7 +264,7 @@ public class Util return (DecoratedKey)partitionKey[0]; ByteBuffer key = CFMetaData.serializePartitionKey(metadata.getKeyValidatorAsClusteringComparator().make(partitionKey)); - return metadata.decorateKey(key); + return StorageService.getPartitioner().decorateKey(key); } public static void assertEmptyUnfiltered(ReadCommand command) @@ -503,27 +501,4 @@ public class Util } assertEquals(expected, s.get()); } - - public static PartitionerSwitcher switchPartitioner(IPartitioner p) - { - return new PartitionerSwitcher(p); - } - - public static class PartitionerSwitcher implements AutoCloseable - { - final IPartitioner oldP; - final IPartitioner newP; - - public PartitionerSwitcher(IPartitioner partitioner) - { - newP = partitioner; - oldP = StorageService.instance.setPartitionerUnsafe(partitioner); - } - - public void close() - { - IPartitioner p = StorageService.instance.setPartitionerUnsafe(oldP); - assert p == newP; - } - } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/config/CFMetaDataTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/config/CFMetaDataTest.java b/test/unit/org/apache/cassandra/config/CFMetaDataTest.java index ced6343..cf05fe8 100644 --- a/test/unit/org/apache/cassandra/config/CFMetaDataTest.java +++ b/test/unit/org/apache/cassandra/config/CFMetaDataTest.java @@ -133,6 +133,7 @@ public class CFMetaDataTest private void checkInverses(CFMetaData cfm) throws Exception { + DecoratedKey k = StorageService.getPartitioner().decorateKey(ByteBufferUtil.bytes(cfm.ksName)); KeyspaceMetadata keyspace = Schema.instance.getKSMetaData(cfm.ksName); // Test thrift conversion http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/IndexQueryPagingTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/IndexQueryPagingTest.java b/test/unit/org/apache/cassandra/cql3/IndexQueryPagingTest.java index 35d57d9..45994c7 100644 --- a/test/unit/org/apache/cassandra/cql3/IndexQueryPagingTest.java +++ b/test/unit/org/apache/cassandra/cql3/IndexQueryPagingTest.java @@ -8,6 +8,9 @@ import com.datastax.driver.core.Statement; import static org.junit.Assert.assertEquals; +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.dht.Murmur3Partitioner; + public class IndexQueryPagingTest extends CQLTester { /* http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/selection/SelectionColumnMappingTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/selection/SelectionColumnMappingTest.java b/test/unit/org/apache/cassandra/cql3/selection/SelectionColumnMappingTest.java index 5831e4a..d0df5bc 100644 --- a/test/unit/org/apache/cassandra/cql3/selection/SelectionColumnMappingTest.java +++ b/test/unit/org/apache/cassandra/cql3/selection/SelectionColumnMappingTest.java @@ -33,7 +33,7 @@ public class SelectionColumnMappingTest extends CQLTester @BeforeClass public static void setUpClass() { - DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance); + DatabaseDescriptor.setPartitioner(ByteOrderedPartitioner.instance); } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/validation/entities/FrozenCollectionsTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/FrozenCollectionsTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/FrozenCollectionsTest.java index e07e421..c76d618 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/FrozenCollectionsTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/FrozenCollectionsTest.java @@ -17,13 +17,13 @@ */ package org.apache.cassandra.cql3.validation.entities; +import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.CQLTester; import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.dht.ByteOrderedPartitioner; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.exceptions.SyntaxException; -import org.apache.cassandra.service.StorageService; import org.apache.commons.lang3.StringUtils; import org.junit.Assert; import org.junit.BeforeClass; @@ -40,8 +40,7 @@ public class FrozenCollectionsTest extends CQLTester @BeforeClass public static void setUpClass() { - // Selecting partitioner for a table is not exposed on CREATE TABLE. - StorageService.instance.setPartitionerUnsafe(ByteOrderedPartitioner.instance); + DatabaseDescriptor.setPartitioner(new ByteOrderedPartitioner()); } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java index 7a0e8c8..7f8fa0b 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java @@ -44,7 +44,7 @@ public class JsonTest extends CQLTester @BeforeClass public static void setUp() { - DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance); + DatabaseDescriptor.setPartitioner(ByteOrderedPartitioner.instance); } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexOnMapEntriesTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexOnMapEntriesTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexOnMapEntriesTest.java index b69948f..fb0d027 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexOnMapEntriesTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexOnMapEntriesTest.java @@ -38,7 +38,7 @@ public class SecondaryIndexOnMapEntriesTest extends CQLTester @BeforeClass public static void setUp() { - DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance); + DatabaseDescriptor.setPartitioner(ByteOrderedPartitioner.instance); } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/validation/entities/UserTypesTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/UserTypesTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/UserTypesTest.java index 9430f6c..7274cd4 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/UserTypesTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/UserTypesTest.java @@ -22,17 +22,16 @@ import java.util.UUID; import org.junit.BeforeClass; import org.junit.Test; +import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.CQLTester; import org.apache.cassandra.dht.ByteOrderedPartitioner; -import org.apache.cassandra.service.StorageService; public class UserTypesTest extends CQLTester { @BeforeClass public static void setUpClass() { - // Selecting partitioner for a table is not exposed on CREATE TABLE. - StorageService.instance.setPartitionerUnsafe(ByteOrderedPartitioner.instance); + DatabaseDescriptor.setPartitioner(new ByteOrderedPartitioner()); } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java index cf028a1..f1e2f55 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java @@ -13,7 +13,7 @@ public class SelectLimitTest extends CQLTester @BeforeClass public static void setUp() { - DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance); + DatabaseDescriptor.setPartitioner(ByteOrderedPartitioner.instance); } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderedPartitionerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderedPartitionerTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderedPartitionerTest.java index 8a2e1c9..5152ba9 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderedPartitionerTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderedPartitionerTest.java @@ -19,7 +19,7 @@ public class SelectOrderedPartitionerTest extends CQLTester @BeforeClass public static void setUp() { - DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance); + DatabaseDescriptor.setPartitioner(ByteOrderedPartitioner.instance); } @Test http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/test/unit/org/apache/cassandra/db/BatchlogManagerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/BatchlogManagerTest.java b/test/unit/org/apache/cassandra/db/BatchlogManagerTest.java index 5f1523e..c578c5e 100644 --- a/test/unit/org/apache/cassandra/db/BatchlogManagerTest.java +++ b/test/unit/org/apache/cassandra/db/BatchlogManagerTest.java @@ -89,13 +89,14 @@ public class BatchlogManagerTest .build() .applyUnsafe(); - DecoratedKey dk = cfs.decorateKey(ByteBufferUtil.bytes("1234")); + DecoratedKey dk = StorageService.getPartitioner().decorateKey(ByteBufferUtil.bytes("1234")); ArrayBackedPartition results = Util.getOnlyPartitionUnfiltered(Util.cmd(cfs, dk).build()); Iterator<Row> iter = results.iterator(); assert iter.hasNext(); - Mutation mutation = new Mutation(PartitionUpdate.fullPartitionDelete(cfm, - dk, + Mutation mutation = new Mutation(KEYSPACE1, dk); + mutation.add(PartitionUpdate.fullPartitionDelete(cfm, + mutation.key(), FBUtilities.timestampMicros(), FBUtilities.nowInSeconds())); mutation.applyUnsafe(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a22ce89e/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 b89b792..b53f62c 100644 --- a/test/unit/org/apache/cassandra/db/RowCacheTest.java +++ b/test/unit/org/apache/cassandra/db/RowCacheTest.java @@ -88,7 +88,7 @@ public class RowCacheTest CacheService.instance.setRowCacheCapacityInMB(1); ByteBuffer key = ByteBufferUtil.bytes("rowcachekey"); - DecoratedKey dk = cachedStore.decorateKey(key); + DecoratedKey dk = cachedStore.partitioner.decorateKey(key); RowCacheKey rck = new RowCacheKey(cachedStore.metadata.cfId, dk); RowUpdateBuilder rub = new RowUpdateBuilder(cachedStore.metadata, System.currentTimeMillis(), key); @@ -255,7 +255,7 @@ public class RowCacheTest CacheService.instance.setRowCacheCapacityInMB(1); ByteBuffer key = ByteBufferUtil.bytes("rowcachekey"); - DecoratedKey dk = cachedStore.decorateKey(key); + DecoratedKey dk = cachedStore.partitioner.decorateKey(key); RowCacheKey rck = new RowCacheKey(cachedStore.metadata.cfId, dk); String values[] = new String[200]; for (int i = 0; i < 200; i++)