You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ms...@apache.org on 2016/08/16 22:42:15 UTC
[14/50] [abbrv] cassandra git commit: Backport CASSANDRA-12002
Backport CASSANDRA-12002
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/de86ab1b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/de86ab1b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/de86ab1b
Branch: refs/heads/cassandra-3.8
Commit: de86ab1bb6e4b71451348397e0cbb2a577cd92d4
Parents: 05483a9
Author: Yuki Morishita <yu...@apache.org>
Authored: Thu Aug 11 10:06:05 2016 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Thu Aug 11 10:11:13 2016 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/tools/SSTableExport.java | 8 ++----
.../org/apache/cassandra/utils/FBUtilities.java | 28 ++++++++++++++++++++
3 files changed, 31 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/de86ab1b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index bd3bb75..3db2c77 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.9
+ * Backport CASSANDRA-12002 (CASSANDRA-12177)
* Make sure compaction stats are updated when compaction is interrupted (CASSANDRA-12100)
* Fix potential bad messaging service message for paged range reads
within mixed-version 3.x clusters (CASSANDRA-12249)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/de86ab1b/src/java/org/apache/cassandra/tools/SSTableExport.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/SSTableExport.java b/src/java/org/apache/cassandra/tools/SSTableExport.java
index 09dbbed..cc6b84b 100644
--- a/src/java/org/apache/cassandra/tools/SSTableExport.java
+++ b/src/java/org/apache/cassandra/tools/SSTableExport.java
@@ -98,14 +98,10 @@ public class SSTableExport
if (!desc.version.storeRows())
throw new IOException("pre-3.0 SSTable is not supported.");
- EnumSet<MetadataType> types = EnumSet.of(MetadataType.VALIDATION, MetadataType.STATS, MetadataType.HEADER);
+ EnumSet<MetadataType> types = EnumSet.of(MetadataType.STATS, MetadataType.HEADER);
Map<MetadataType, MetadataComponent> sstableMetadata = desc.getMetadataSerializer().deserialize(desc, types);
- ValidationMetadata validationMetadata = (ValidationMetadata) sstableMetadata.get(MetadataType.VALIDATION);
SerializationHeader.Component header = (SerializationHeader.Component) sstableMetadata.get(MetadataType.HEADER);
-
- IPartitioner partitioner = SecondaryIndexManager.isIndexColumnFamily(desc.cfname)
- ? new LocalPartitioner(header.getKeyType())
- : FBUtilities.newPartitioner(validationMetadata.partitioner);
+ IPartitioner partitioner = FBUtilities.newPartitioner(desc);
CFMetaData.Builder builder = CFMetaData.Builder.create("keyspace", "table").withPartitioner(partitioner);
header.getStaticColumns().entrySet().stream()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/de86ab1b/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 5f0e0a0..d996c91 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -42,11 +42,17 @@ import org.apache.cassandra.auth.IAuthorizer;
import org.apache.cassandra.auth.IRoleManager;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.db.SerializationHeader;
import org.apache.cassandra.dht.IPartitioner;
+import org.apache.cassandra.dht.LocalPartitioner;
import org.apache.cassandra.dht.Range;
import org.apache.cassandra.dht.Token;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.io.IVersionedSerializer;
+import org.apache.cassandra.io.sstable.Descriptor;
+import org.apache.cassandra.io.sstable.metadata.MetadataComponent;
+import org.apache.cassandra.io.sstable.metadata.MetadataType;
+import org.apache.cassandra.io.sstable.metadata.ValidationMetadata;
import org.apache.cassandra.schema.CompressionParams;
import org.apache.cassandra.io.util.DataOutputBuffer;
import org.apache.cassandra.io.util.DataOutputBufferFixed;
@@ -395,6 +401,28 @@ public class FBUtilities
result.get(ms, TimeUnit.MILLISECONDS);
}
+ /**
+ * Create a new instance of a partitioner defined in an SSTable Descriptor
+ * @param desc Descriptor of an sstable
+ * @return a new IPartitioner instance
+ * @throws IOException
+ */
+ public static IPartitioner newPartitioner(Descriptor desc) throws IOException
+ {
+ EnumSet<MetadataType> types = EnumSet.of(MetadataType.VALIDATION, MetadataType.HEADER);
+ Map<MetadataType, MetadataComponent> sstableMetadata = desc.getMetadataSerializer().deserialize(desc, types);
+ ValidationMetadata validationMetadata = (ValidationMetadata) sstableMetadata.get(MetadataType.VALIDATION);
+ SerializationHeader.Component header = (SerializationHeader.Component) sstableMetadata.get(MetadataType.HEADER);
+ if (validationMetadata.partitioner.endsWith("LocalPartitioner"))
+ {
+ return new LocalPartitioner(header.getKeyType());
+ }
+ else
+ {
+ return newPartitioner(validationMetadata.partitioner);
+ }
+ }
+
public static IPartitioner newPartitioner(String partitionerClassName) throws ConfigurationException
{
if (!partitionerClassName.contains("."))