You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2015/08/01 00:35:37 UTC
[2/4] cassandra git commit: Revert "Revert "Stop accessing the
partitioner directly via StorageService""
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 0451a98..1b3b407 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.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile));
+ DecoratedKey indexDecoratedKey = sstable.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.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile));
+ currentKey = sstable.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.partitioner.decorateKey(ByteBufferUtil.readWithShortLength(ifile));
+ nextKey = sstable.decorateKey(ByteBufferUtil.readWithShortLength(ifile));
nextEntry = rowIndexEntrySerializer.deserialize(ifile);
if (!currentRange.contains(nextKey))
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 ff279a8..5607a7e 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,7 +19,6 @@ 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;
@@ -32,7 +31,6 @@ 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;
@@ -62,12 +60,11 @@ public class BigTableWriter extends SSTableWriter
Long keyCount,
Long repairedAt,
CFMetaData metadata,
- IPartitioner partitioner,
MetadataCollector metadataCollector,
SerializationHeader header,
LifecycleTransaction txn)
{
- super(descriptor, keyCount, repairedAt, metadata, partitioner, metadataCollector, header);
+ super(descriptor, keyCount, repairedAt, metadata, metadataCollector, header);
txn.trackNew(this); // must track before any files are created
if (compression)
@@ -243,13 +240,12 @@ public class BigTableWriter extends SSTableWriter
StatsMetadata stats = statsMetadata();
assert boundary.indexLength > 0 && boundary.dataLength > 0;
// open the reader early
- IndexSummary indexSummary = iwriter.summary.build(partitioner, boundary);
+ IndexSummary indexSummary = iwriter.summary.build(metadata.partitioner, boundary);
SegmentedFile ifile = iwriter.builder.buildIndex(descriptor, indexSummary, boundary);
SegmentedFile dfile = dbuilder.buildData(descriptor, stats, boundary);
SSTableReader sstable = SSTableReader.internalOpen(descriptor,
components, metadata,
- partitioner, ifile,
- dfile, indexSummary,
+ 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)
@@ -275,13 +271,12 @@ public class BigTableWriter extends SSTableWriter
StatsMetadata stats = statsMetadata();
// finalize in-memory state for the reader
- IndexSummary indexSummary = iwriter.summary.build(partitioner);
+ IndexSummary indexSummary = iwriter.summary.build(this.metadata.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,
@@ -475,7 +470,7 @@ public class BigTableWriter extends SSTableWriter
// save summary
summary.prepareToCommit();
- try (IndexSummary summary = iwriter.summary.build(partitioner))
+ try (IndexSummary summary = iwriter.summary.build(getPartitioner()))
{
SSTableReader.saveSummary(descriptor, first, last, iwriter.builder, dbuilder, summary);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 1b3c560..c3ec353 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -26,12 +26,14 @@ 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;
@@ -92,6 +94,7 @@ 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>()
{
@@ -108,17 +111,28 @@ public class TokenMetadata
{
this(SortedBiMultiValMap.<Token, InetAddress>create(null, inetaddressCmp),
HashBiMap.<InetAddress, UUID>create(),
- new Topology());
+ new Topology(),
+ DatabaseDescriptor.getPartitioner());
}
- private TokenMetadata(BiMultiValMap<Token, InetAddress> tokenToEndpointMap, BiMap<InetAddress, UUID> endpointsMap, Topology topology)
+ private TokenMetadata(BiMultiValMap<Token, InetAddress> tokenToEndpointMap, BiMap<InetAddress, UUID> endpointsMap, Topology topology, IPartitioner partitioner)
{
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());
@@ -521,7 +535,8 @@ public class TokenMetadata
{
return new TokenMetadata(SortedBiMultiValMap.<Token, InetAddress>create(tokenToEndpointMap, null, inetaddressCmp),
HashBiMap.create(endpointToHostIdMap),
- new Topology(topology));
+ new Topology(topology),
+ partitioner);
}
finally
{
@@ -880,7 +895,7 @@ public class TokenMetadata
public static Iterator<Token> ringIterator(final ArrayList<Token> ring, Token start, boolean includeMin)
{
if (ring.isEmpty())
- return includeMin ? Iterators.singletonIterator(StorageService.getPartitioner().getMinimumToken())
+ return includeMin ? Iterators.singletonIterator(start.getPartitioner().getMinimumToken())
: Iterators.<Token>emptyIterator();
final boolean insertMin = includeMin && !ring.get(0).isMinimum();
@@ -896,7 +911,7 @@ public class TokenMetadata
{
// return minimum for index == -1
if (j == -1)
- return StorageService.getPartitioner().getMinimumToken();
+ return start.getPartitioner().getMinimumToken();
// return ring token for other indexes
return ring.get(j);
}
@@ -1093,6 +1108,11 @@ 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/0a08525a/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 4f15da2..422fdb3 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -1108,12 +1108,14 @@ public final class MessagingService implements MessagingServiceMBean
public static IPartitioner globalPartitioner()
{
- return DatabaseDescriptor.getPartitioner();
+ return StorageService.instance.getTokenMetadata().partitioner;
}
public static void validatePartitioner(AbstractBounds<?> bounds)
{
if (globalPartitioner() != bounds.left.getPartitioner())
- throw new AssertionError();
+ throw new AssertionError(String.format("Partitioner in bounds serialization. Expected %s, was %s.",
+ globalPartitioner().getClass().getName(),
+ bounds.left.getPartitioner().getClass().getName()));
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 c0855c4..d765ae6 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.partitioner instanceof LocalPartitioner) && // exclude SSTables from 2i
- new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
+ !sstable.metadata.isIndex() && // 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/0a08525a/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 1c21e41..41da481 100644
--- a/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
+++ b/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
@@ -38,7 +38,6 @@ 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;
@@ -307,9 +306,16 @@ public final class LegacySchemaMigrator
defaultValidator);
}
- // 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);
+ CFMetaData cfm = CFMetaData.create(ksName,
+ cfName,
+ cfId,
+ isDense,
+ isCompound,
+ isSuper,
+ isCounter,
+ false, // legacy schema did not contain views
+ columnDefs,
+ DatabaseDescriptor.getPartitioner());
cfm.readRepairChance(tableRow.getDouble("read_repair_chance"));
cfm.dcLocalReadRepairChance(tableRow.getDouble("local_read_repair_chance"));
@@ -579,7 +585,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 = StorageService.getPartitioner().decorateKey(AsciiType.instance.fromString(keyspaceName));
+ DecoratedKey key = store.metadata.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/0a08525a/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 1f1a3dd..b33ba76 100644
--- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
+++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
@@ -38,7 +38,6 @@ 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.*;
@@ -47,7 +46,6 @@ 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;
@@ -397,19 +395,24 @@ public final class SchemaKeyspace
return AsciiType.instance.fromString(ksName);
}
- private static DecoratedKey getSchemaKSDecoratedKey(String ksName)
+ private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, String keyspaceName, Function<RowIterator, T> fct)
{
- return StorageService.getPartitioner().decorateKey(getSchemaKSKey(ksName));
+ return readSchemaPartitionForKeyspaceAndApply(schemaTableName, getSchemaKSKey(keyspaceName), fct);
}
- private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, String keyspaceName, Function<RowIterator, T> fct)
+ private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, ByteBuffer keyspaceKey, Function<RowIterator, T> fct)
{
- return readSchemaPartitionForKeyspaceAndApply(schemaTableName, getSchemaKSDecoratedKey(keyspaceName), fct);
+ ColumnFamilyStore store = getSchemaCFS(schemaTableName);
+ return readSchemaPartitionForKeyspaceAndApply(store, store.decorateKey(keyspaceKey), fct);
}
private static <T> T readSchemaPartitionForKeyspaceAndApply(String schemaTableName, DecoratedKey keyspaceKey, Function<RowIterator, T> fct)
{
- ColumnFamilyStore store = getSchemaCFS(schemaTableName);
+ return readSchemaPartitionForKeyspaceAndApply(getSchemaCFS(schemaTableName), keyspaceKey, fct);
+ }
+
+ private static <T> T readSchemaPartitionForKeyspaceAndApply(ColumnFamilyStore store, DecoratedKey keyspaceKey, Function<RowIterator, T> fct)
+ {
int nowInSec = FBUtilities.nowInSeconds();
try (OpOrder.Group op = store.readOrdering.start();
RowIterator partition = UnfilteredRowIterators.filter(SinglePartitionReadCommand.fullPartitionRead(store.metadata, nowInSec, keyspaceKey)
@@ -427,7 +430,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, getSchemaKSDecoratedKey(keyspaceName), slices)
+ RowIterator partition = UnfilteredRowIterators.filter(SinglePartitionSliceCommand.create(store.metadata, nowInSec, getSchemaKSKey(keyspaceName), slices)
.queryMemtableAndDisk(store, op), nowInSec))
{
return fct.apply(partition);
@@ -698,7 +701,8 @@ public final class SchemaKeyspace
public static Mutation makeDropKeyspaceMutation(KeyspaceMetadata keyspace, long timestamp)
{
int nowInSec = FBUtilities.nowInSeconds();
- Mutation mutation = new Mutation(NAME, getSchemaKSDecoratedKey(keyspace.name));
+ Mutation mutation = new Mutation(NAME, Keyspaces.decorateKey(getSchemaKSKey(keyspace.name)));
+
for (CFMetaData schemaTable : All)
mutation.add(PartitionUpdate.fullPartitionDelete(schemaTable, mutation.key(), timestamp, nowInSec));
@@ -1085,7 +1089,16 @@ 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);
+ CFMetaData cfm = CFMetaData.create(keyspace,
+ table,
+ id,
+ isDense,
+ isCompound,
+ isSuper,
+ isCounter,
+ isMaterializedView,
+ columns,
+ DatabaseDescriptor.getPartitioner());
Map<String, String> compaction = new HashMap<>(row.getTextMap("compaction"));
Class<? extends AbstractCompactionStrategy> compactionStrategyClass =
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 b1554e3..253e9e4 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.partitioner.decorateKey(partitionKey);
+ DecoratedKey key = cfs.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.partitioner.decorateKey(buffer);
+ DecoratedKey key = cfs.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/0a08525a/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 be11c77..51aa48f 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.getPartitioner().getToken(dataKey);
+ Token baseToken = StorageService.instance.getTokenMetadata().partitioner.getToken(dataKey);
ConsistencyLevel consistencyLevel = ConsistencyLevel.ONE;
@@ -862,8 +862,11 @@ public class StorageProxy implements StorageProxyMBean
Keyspace.open(SystemKeyspace.NAME),
null,
WriteType.SIMPLE);
- 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()));
+ Mutation mutation = new Mutation(
+ PartitionUpdate.fullPartitionDelete(SystemKeyspace.Batchlog,
+ UUIDType.instance.decompose(uuid),
+ FBUtilities.timestampMicros(),
+ FBUtilities.nowInSeconds()));
MessageOut<Mutation> message = mutation.createMessage(MessagingService.Verb.BATCHLOG_MUTATION);
for (InetAddress target : endpoints)
{
@@ -1686,7 +1689,7 @@ public class StorageProxy implements StorageProxyMBean
public static List<InetAddress> getLiveSortedEndpoints(Keyspace keyspace, ByteBuffer key)
{
- return getLiveSortedEndpoints(keyspace, StorageService.getPartitioner().decorateKey(key));
+ return getLiveSortedEndpoints(keyspace, StorageService.instance.getTokenMetadata().decorateKey(key));
}
public static List<InetAddress> getLiveSortedEndpoints(Keyspace keyspace, RingPosition pos)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 5049337..b51dd3a 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -78,6 +78,7 @@ 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;
@@ -188,7 +189,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(getPartitioner());
+ public volatile VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(tokenMetadata.partitioner);
private Thread drainOnShutdown = null;
private boolean inShutdownHook = false;
@@ -200,11 +201,6 @@ 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());
@@ -510,7 +506,10 @@ 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(getPartitioner(), new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(DatabaseDescriptor.getReplaceAddress(), ApplicationState.TOKENS))));
+ Collection<Token> tokens = TokenSerializer.deserialize(
+ tokenMetadata.partitioner,
+ 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
@@ -947,7 +946,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
{
bootstrapTokens = new ArrayList<>(initialTokens.size());
for (String token : initialTokens)
- bootstrapTokens.add(getPartitioner().getTokenFactory().fromString(token));
+ bootstrapTokens.add(getTokenFactory().fromString(token));
logger.info("Saved tokens not found. Using configuration value: {}", bootstrapTokens);
}
}
@@ -1509,7 +1508,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 = getPartitioner().getTokenFactory();
+ Token.TokenFactory tf = getTokenFactory();
Map<Range<Token>, List<InetAddress>> rangeToAddressMap =
includeOnlyLocalDC
@@ -1818,7 +1817,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
{
try
{
- return TokenSerializer.deserialize(getPartitioner(), new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(endpoint, ApplicationState.TOKENS))));
+ return TokenSerializer.deserialize(
+ tokenMetadata.partitioner,
+ new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(endpoint, ApplicationState.TOKENS))));
}
catch (IOException e)
{
@@ -2049,7 +2050,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
private void handleStateMoving(InetAddress endpoint, String[] pieces)
{
assert pieces.length >= 2;
- Token token = getPartitioner().getTokenFactory().fromString(pieces[1]);
+ Token token = getTokenFactory().fromString(pieces[1]);
if (logger.isDebugEnabled())
logger.debug("Node {} state moving, new token {}", endpoint, token);
@@ -2790,7 +2791,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
public int repairAsync(String keyspace, Map<String, String> repairSpec)
{
- RepairOption option = RepairOption.parse(repairSpec, getPartitioner());
+ RepairOption option = RepairOption.parse(repairSpec, tokenMetadata.partitioner);
// if ranges are not specified
if (option.getRanges().isEmpty())
{
@@ -2974,8 +2975,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
@VisibleForTesting
Collection<Range<Token>> createRepairRangeFrom(String beginToken, String endToken)
{
- Token parsedBeginToken = getPartitioner().getTokenFactory().fromString(beginToken);
- Token parsedEndToken = getPartitioner().getTokenFactory().fromString(endToken);
+ Token parsedBeginToken = getTokenFactory().fromString(beginToken);
+ Token parsedEndToken = getTokenFactory().fromString(endToken);
// Break up given range to match ring layout in TokenMetadata
ArrayList<Range<Token>> repairingRange = new ArrayList<>();
@@ -3002,6 +3003,11 @@ 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)
@@ -3144,12 +3150,12 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
if (cfMetaData == null)
throw new IllegalArgumentException("Unknown table '" + cf + "' in keyspace '" + keyspaceName + "'");
- return getNaturalEndpoints(keyspaceName, getPartitioner().getToken(cfMetaData.getKeyValidator().fromString(key)));
+ return getNaturalEndpoints(keyspaceName, tokenMetadata.partitioner.getToken(cfMetaData.getKeyValidator().fromString(key)));
}
public List<InetAddress> getNaturalEndpoints(String keyspaceName, ByteBuffer key)
{
- return getNaturalEndpoints(keyspaceName, getPartitioner().getToken(key));
+ return getNaturalEndpoints(keyspaceName, tokenMetadata.partitioner.getToken(key));
}
/**
@@ -3175,7 +3181,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
*/
public List<InetAddress> getLiveNaturalEndpoints(Keyspace keyspace, ByteBuffer key)
{
- return getLiveNaturalEndpoints(keyspace, getPartitioner().decorateKey(key));
+ return getLiveNaturalEndpoints(keyspace, tokenMetadata.decorateKey(key));
}
public List<InetAddress> getLiveNaturalEndpoints(Keyspace keyspace, RingPosition pos)
@@ -3438,7 +3444,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 = StorageService.getPartitioner().getMinimumToken();
+ Token token = tokenMetadata.partitioner.getMinimumToken();
List<Range<Token>> ranges = Collections.singletonList(new Range<>(token, token));
return new StreamPlan("Hints").transferRanges(hintsDestinationHost,
@@ -3454,13 +3460,13 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
{
try
{
- getPartitioner().getTokenFactory().validate(newToken);
+ getTokenFactory().validate(newToken);
}
catch (ConfigurationException e)
{
throw new IOException(e.getMessage());
}
- move(getPartitioner().getTokenFactory().fromString(newToken));
+ move(getTokenFactory().fromString(newToken));
}
/**
@@ -3915,9 +3921,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
@VisibleForTesting
public IPartitioner setPartitionerUnsafe(IPartitioner newPartitioner)
{
- IPartitioner oldPartitioner = DatabaseDescriptor.getPartitioner();
- DatabaseDescriptor.setPartitioner(newPartitioner);
- valueFactory = new VersionedValue.VersionedValueFactory(getPartitioner());
+ IPartitioner oldPartitioner = DatabaseDescriptor.setPartitionerUnsafe(newPartitioner);
+ tokenMetadata = tokenMetadata.cloneWithNewPartitioner(newPartitioner);
+ valueFactory = new VersionedValue.VersionedValueFactory(newPartitioner);
return oldPartitioner;
}
@@ -3944,7 +3950,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>(getPartitioner().describeOwnership(sortedTokens));
+ Map<Token, Float> tokenMap = new TreeMap<Token, Float>(tokenMetadata.partitioner.describeOwnership(sortedTokens));
Map<InetAddress, Float> nodeMap = new LinkedHashMap<>();
for (Map.Entry<Token, Float> entry : tokenMap.entrySet())
{
@@ -4004,7 +4010,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
for (Collection<InetAddress> endpoints : sortedDcsToEndpoints.values())
endpointsGroupedByDc.add(endpoints);
- Map<Token, Float> tokenOwnership = getPartitioner().describeOwnership(tokenMetadata.sortedTokens());
+ Map<Token, Float> tokenOwnership = tokenMetadata.partitioner.describeOwnership(tokenMetadata.sortedTokens());
LinkedHashMap<InetAddress, Float> finalOwnership = Maps.newLinkedHashMap();
// calculate ownership per dc
@@ -4211,7 +4217,6 @@ 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/0a08525a/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 fffb4e1..4171694 100644
--- a/src/java/org/apache/cassandra/service/pager/RangeNamesQueryPager.java
+++ b/src/java/org/apache/cassandra/service/pager/RangeNamesQueryPager.java
@@ -19,10 +19,8 @@ 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.
@@ -44,7 +42,7 @@ public class RangeNamesQueryPager extends AbstractQueryPager
if (state != null)
{
- lastReturnedKey = StorageService.getPartitioner().decorateKey(state.partitionKey);
+ lastReturnedKey = command.metadata().decorateKey(state.partitionKey);
restoreState(lastReturnedKey, state.remaining, state.remainingInPartition);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 6c08be0..0139d9c 100644
--- a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
+++ b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
@@ -22,7 +22,6 @@ 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;
@@ -47,7 +46,7 @@ public class RangeSliceQueryPager extends AbstractQueryPager
if (state != null)
{
- lastReturnedKey = StorageService.getPartitioner().decorateKey(state.partitionKey);
+ lastReturnedKey = command.metadata().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/0a08525a/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 579c315..95bd464 100644
--- a/src/java/org/apache/cassandra/service/paxos/Commit.java
+++ b/src/java/org/apache/cassandra/service/paxos/Commit.java
@@ -22,6 +22,7 @@ package org.apache.cassandra.service.paxos;
import java.io.IOException;
+import java.nio.ByteBuffer;
import java.util.UUID;
import com.google.common.base.Objects;
@@ -122,9 +123,9 @@ public class Commit
public Commit deserialize(DataInputPlus in, int version) throws IOException
{
- DecoratedKey key = null;
+ ByteBuffer key = null;
if (version < MessagingService.VERSION_30)
- key = StorageService.getPartitioner().decorateKey(ByteBufferUtil.readWithShortLength(in));
+ key = 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/0a08525a/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 61656b3..a098786 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 = StorageService.getPartitioner().decorateKey(ByteBufferUtil.readWithShortLength(in));
+ key = metadata.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/0a08525a/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 0674c62..a7b8b07 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 = StorageService.getPartitioner().decorateKey(key);
+ DecoratedKey dk = metadata.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 = StorageService.getPartitioner().decorateKey(key);
+ DecoratedKey dk = metadata.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,22 +694,23 @@ public class CassandraServer implements Cassandra.Iface
ColumnFilter columnFilter;
ClusteringIndexFilter filter;
- if (cfs.metadata.isSuper() && !column_parent.isSetSuper_column())
+ CFMetaData metadata = cfs.metadata;
+ if (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(cfs.metadata);
- filter = new ClusteringIndexSliceFilter(makeSlices(cfs.metadata, sliceRange), sliceRange.reversed);
+ columnFilter = ColumnFilter.all(metadata);
+ filter = new ClusteringIndexSliceFilter(makeSlices(metadata, sliceRange), sliceRange.reversed);
}
else
{
- columnFilter = makeColumnFilter(cfs.metadata, column_parent, sliceRange);
- filter = toInternalFilter(cfs.metadata, column_parent, sliceRange);
+ columnFilter = makeColumnFilter(metadata, column_parent, sliceRange);
+ filter = toInternalFilter(metadata, column_parent, sliceRange);
}
- DataLimits limits = getLimits(1, cfs.metadata.isSuper() && !column_parent.isSetSuper_column(), predicate);
- DecoratedKey dk = StorageService.getPartitioner().decorateKey(key);
+ DataLimits limits = getLimits(1, metadata.isSuper() && !column_parent.isSetSuper_column(), predicate);
+ DecoratedKey dk = metadata.decorateKey(key);
- return QueryPagers.countPaged(cfs.metadata,
+ return QueryPagers.countPaged(metadata,
dk,
columnFilter,
filter,
@@ -821,11 +822,9 @@ 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, dk, BTreeBackedRow.singleCellRow(name.clustering, cell));
+ PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, key, BTreeBackedRow.singleCellRow(name.clustering, cell));
mutation = new org.apache.cassandra.db.Mutation(update);
}
@@ -913,7 +912,7 @@ public class CassandraServer implements Cassandra.Iface
for (Column column : updates)
ThriftValidation.validateColumnData(metadata, null, column);
- DecoratedKey dk = StorageService.getPartitioner().decorateKey(key);
+ DecoratedKey dk = metadata.decorateKey(key);
int nowInSec = FBUtilities.nowInSeconds();
PartitionUpdate partitionUpdates = PartitionUpdate.fromIterator(LegacyLayout.toRowIterator(metadata, dk, toLegacyCells(metadata, updates, nowInSec).iterator(), nowInSec));
@@ -1080,7 +1079,6 @@ 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
@@ -1120,6 +1118,7 @@ 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;
@@ -1320,7 +1319,7 @@ public class CassandraServer implements Cassandra.Iface
if (isCommutativeOp)
ThriftConversion.fromThrift(consistency_level).validateCounterForWrite(metadata);
- DecoratedKey dk = StorageService.getPartitioner().decorateKey(key);
+ DecoratedKey dk = metadata.decorateKey(key);
int nowInSec = FBUtilities.nowInSeconds();
PartitionUpdate update;
@@ -1473,7 +1472,7 @@ public class CassandraServer implements Cassandra.Iface
org.apache.cassandra.db.ConsistencyLevel consistencyLevel = ThriftConversion.fromThrift(consistency_level);
consistencyLevel.validateForRead(keyspace);
- IPartitioner p = StorageService.getPartitioner();
+ IPartitioner p = metadata.partitioner;
AbstractBounds<PartitionPosition> bounds;
if (range.start_key == null)
{
@@ -1558,7 +1557,7 @@ public class CassandraServer implements Cassandra.Iface
org.apache.cassandra.db.ConsistencyLevel consistencyLevel = ThriftConversion.fromThrift(consistency_level);
consistencyLevel.validateForRead(keyspace);
- IPartitioner p = StorageService.getPartitioner();
+ IPartitioner p = metadata.partitioner;
AbstractBounds<PartitionPosition> bounds;
if (range.start_key == null)
{
@@ -1670,7 +1669,7 @@ public class CassandraServer implements Cassandra.Iface
org.apache.cassandra.db.ConsistencyLevel consistencyLevel = ThriftConversion.fromThrift(consistency_level);
consistencyLevel.validateForRead(keyspace);
- IPartitioner p = StorageService.getPartitioner();
+ IPartitioner p = metadata.partitioner;
AbstractBounds<PartitionPosition> bounds = new Bounds<>(PartitionPosition.ForKey.get(index_clause.start_key, p),
p.getMinimumToken().minKeyBound());
@@ -1767,7 +1766,7 @@ public class CassandraServer implements Cassandra.Iface
public String describe_partitioner() throws TException
{
- return StorageService.getPartitioner().getClass().getName();
+ return StorageService.instance.getTokenMetadata().getClass().getName();
}
public String describe_snitch() throws TException
@@ -1796,8 +1795,8 @@ public class CassandraServer implements Cassandra.Iface
{
try
{
- Token.TokenFactory tf = StorageService.getPartitioner().getTokenFactory();
- Range<Token> tr = new Range<>(tf.fromString(start_token), tf.fromString(end_token));
+ Token.TokenFactory tf = StorageService.instance.getTokenFactory();
+ Range<Token> tr = new Range<Token>(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());
@@ -2134,14 +2133,13 @@ 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, dk, BTreeBackedRow.singleCellRow(name.clustering, cell));
+ PartitionUpdate update = PartitionUpdate.singleRowUpdate(metadata, key, 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))));
@@ -2412,7 +2410,7 @@ public class CassandraServer implements Cassandra.Iface
DataLimits limits = getLimits(1, false, request.count);
ThriftValidation.validateKey(metadata, request.key);
- DecoratedKey dk = StorageService.getPartitioner().decorateKey(request.key);
+ DecoratedKey dk = metadata.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/0a08525a/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 20d6eba..36383e0 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);
+ CFMetaData newCFMD = CFMetaData.create(cf_def.keyspace, cf_def.name, cfId, isDense, isCompound, isSuper, isCounter, isMaterializedView, defs, DatabaseDescriptor.getPartitioner());
if (cf_def.isSetGc_grace_seconds())
newCFMD.gcGraceSeconds(cf_def.gc_grace_seconds);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 13c55aa..054b466 100644
--- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java
@@ -31,7 +31,6 @@ 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;
@@ -510,7 +509,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 = StorageService.getPartitioner();
+ IPartitioner p = metadata.partitioner;
if (range.start_key != null && range.end_key != null)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 5354b43..435c505 100644
--- a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
+++ b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
@@ -24,10 +24,12 @@ 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;
@@ -64,11 +66,9 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client
Metadata metadata = cluster.getMetadata();
- setPartitioner(metadata.getPartitioner());
-
Set<TokenRange> tokenRanges = metadata.getTokenRanges();
- Token.TokenFactory tokenFactory = getPartitioner().getTokenFactory();
+ TokenFactory tokenFactory = FBUtilities.newPartitioner(metadata.getPartitioner()).getTokenFactory();
for (TokenRange tokenRange : tokenRanges)
{
@@ -128,7 +128,16 @@ 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));
+ tables.put(name, CFMetaData.create(keyspace,
+ name,
+ id,
+ isDense,
+ isCompound,
+ isSuper,
+ isCounter,
+ isMaterializedView,
+ defs,
+ DatabaseDescriptor.getPartitioner()));
}
return tables;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 b49055d..b48336f 100644
--- a/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java
+++ b/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java
@@ -83,7 +83,6 @@ 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/0a08525a/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 e052c0a..11892a8 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.EMPTY_LIST);
+ SerializationHeader header = SerializationHeader.make(cfs.metadata, Collections.emptyList());
StatsMetadata metadata = (StatsMetadata) new MetadataCollector(cfs.metadata.comparator)
- .finalizeMetadata(Murmur3Partitioner.instance.getClass().getCanonicalName(), 0.01f, -1, header)
+ .finalizeMetadata(cfs.metadata.partitioner.getClass().getCanonicalName(), 0.01f, -1, header)
.get(MetadataType.STATS);
- SSTableReader reader = SSTableReader.internalOpen(descriptor, components, cfs.metadata, Murmur3Partitioner.instance,
+ SSTableReader reader = SSTableReader.internalOpen(descriptor, components, cfs.metadata,
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, Murmur3Partitioner.instance, 0, metadata, new Directories(metadata), false, false);
+ return new ColumnFamilyStore(ks, cfname, 0, metadata, new Directories(metadata), false, false);
}
private static CFMetaData newCFMetaData(String ksname, String cfname)
@@ -148,6 +148,7 @@ 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/0a08525a/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 b2d1d7f..3a5fbe6 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 StorageService.getPartitioner().decorateKey(key);
+ return metadata.decorateKey(key);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 e97af68..254c21c 100644
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@ -32,24 +32,21 @@ 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;
@@ -68,24 +65,29 @@ 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 StorageService.getPartitioner().decorateKey(ByteBufferUtil.bytes(key));
+ return testPartitioner().decorateKey(ByteBufferUtil.bytes(key));
}
- public static DecoratedKey dk(String key, AbstractType type)
+ public static DecoratedKey dk(String key, AbstractType<?> type)
{
- return StorageService.getPartitioner().decorateKey(type.fromString(key));
+ return testPartitioner().decorateKey(type.fromString(key));
}
public static DecoratedKey dk(ByteBuffer key)
{
- return StorageService.getPartitioner().decorateKey(key);
+ return testPartitioner().decorateKey(key);
}
public static PartitionPosition rp(String key)
{
- return rp(key, StorageService.getPartitioner());
+ return rp(key, testPartitioner());
}
public static PartitionPosition rp(String key, IPartitioner partitioner)
@@ -107,7 +109,7 @@ public class Util
public static Token token(String key)
{
- return StorageService.getPartitioner().getToken(ByteBufferUtil.bytes(key));
+ return testPartitioner().getToken(ByteBufferUtil.bytes(key));
}
public static Range<PartitionPosition> range(String left, String right)
@@ -264,7 +266,7 @@ public class Util
return (DecoratedKey)partitionKey[0];
ByteBuffer key = CFMetaData.serializePartitionKey(metadata.getKeyValidatorAsClusteringComparator().make(partitionKey));
- return StorageService.getPartitioner().decorateKey(key);
+ return metadata.decorateKey(key);
}
public static void assertEmptyUnfiltered(ReadCommand command)
@@ -501,4 +503,27 @@ 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/0a08525a/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 cf05fe8..ced6343 100644
--- a/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
+++ b/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
@@ -133,7 +133,6 @@ 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/0a08525a/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 45994c7..35d57d9 100644
--- a/test/unit/org/apache/cassandra/cql3/IndexQueryPagingTest.java
+++ b/test/unit/org/apache/cassandra/cql3/IndexQueryPagingTest.java
@@ -8,9 +8,6 @@ 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/0a08525a/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 d0df5bc..5831e4a 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.setPartitioner(ByteOrderedPartitioner.instance);
+ DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance);
}
@Test
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 c76d618..e07e421 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,7 +40,8 @@ public class FrozenCollectionsTest extends CQLTester
@BeforeClass
public static void setUpClass()
{
- DatabaseDescriptor.setPartitioner(new ByteOrderedPartitioner());
+ // Selecting partitioner for a table is not exposed on CREATE TABLE.
+ StorageService.instance.setPartitionerUnsafe(ByteOrderedPartitioner.instance);
}
@Test
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 7f8fa0b..7a0e8c8 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.setPartitioner(ByteOrderedPartitioner.instance);
+ DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance);
}
@Test
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 fb0d027..b69948f 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.setPartitioner(ByteOrderedPartitioner.instance);
+ DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance);
}
@Test
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 7274cd4..9430f6c 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/UserTypesTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/UserTypesTest.java
@@ -22,16 +22,17 @@ 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()
{
- DatabaseDescriptor.setPartitioner(new ByteOrderedPartitioner());
+ // Selecting partitioner for a table is not exposed on CREATE TABLE.
+ StorageService.instance.setPartitionerUnsafe(ByteOrderedPartitioner.instance);
}
@Test
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 f1e2f55..cf028a1 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.setPartitioner(ByteOrderedPartitioner.instance);
+ DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance);
}
/**
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 5152ba9..8a2e1c9 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.setPartitioner(ByteOrderedPartitioner.instance);
+ DatabaseDescriptor.setPartitionerUnsafe(ByteOrderedPartitioner.instance);
}
@Test
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 c578c5e..5f1523e 100644
--- a/test/unit/org/apache/cassandra/db/BatchlogManagerTest.java
+++ b/test/unit/org/apache/cassandra/db/BatchlogManagerTest.java
@@ -89,14 +89,13 @@ public class BatchlogManagerTest
.build()
.applyUnsafe();
- DecoratedKey dk = StorageService.getPartitioner().decorateKey(ByteBufferUtil.bytes("1234"));
+ DecoratedKey dk = cfs.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(KEYSPACE1, dk);
- mutation.add(PartitionUpdate.fullPartitionDelete(cfm,
- mutation.key(),
+ Mutation mutation = new Mutation(PartitionUpdate.fullPartitionDelete(cfm,
+ dk,
FBUtilities.timestampMicros(),
FBUtilities.nowInSeconds()));
mutation.applyUnsafe();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0a08525a/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 b53f62c..b89b792 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.partitioner.decorateKey(key);
+ DecoratedKey dk = cachedStore.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.partitioner.decorateKey(key);
+ DecoratedKey dk = cachedStore.decorateKey(key);
RowCacheKey rck = new RowCacheKey(cachedStore.metadata.cfId, dk);
String values[] = new String[200];
for (int i = 0; i < 200; i++)