diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 979e8ba66a..c7d8926c2e 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -64,6 +64,7 @@ import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.SSTableMultiWriter; import org.apache.cassandra.io.sstable.format.*; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.sstable.metadata.MetadataCollector; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.metrics.TableMetrics; @@ -724,7 +725,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean descriptor.ksname, descriptor.cfname, fileIndexGenerator.incrementAndGet(), - descriptor.formatType); + descriptor.formatType, + descriptor.digestComponent); } while (new File(newDescriptor.filenameFor(Component.DATA)).exists()); @@ -808,7 +810,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean keyspace.getName(), name, fileIndexGenerator.incrementAndGet(), - format); + format, + Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType())); return desc.filenameFor(Component.DATA); } diff --git a/src/java/org/apache/cassandra/db/Directories.java b/src/java/org/apache/cassandra/db/Directories.java index c801952ae5..8aa94943f8 100644 --- a/src/java/org/apache/cassandra/db/Directories.java +++ b/src/java/org/apache/cassandra/db/Directories.java @@ -695,6 +695,24 @@ public class Directories previous = new HashSet<>(); components.put(pair.left, previous); } + else if (pair.right.type == Component.Type.DIGEST) + { + if (pair.right != pair.left.digestComponent) + { + // Need to update the DIGEST component as it might be set to another + // digest type as a guess. This may happen if the first component is + // not the DIGEST (but the Data component for example), so the digest + // type is _guessed_ from the Version. + // Although the Version explicitly defines the digest type, it doesn't + // seem to be true under all circumstances. Generated sstables from a + // post 2.1.8 snapshot produced Digest.sha1 files although Version + // defines Adler32. + // TL;DR this piece of code updates the digest component to be "correct". + components.remove(pair.left); + Descriptor updated = pair.left.withDigestComponent(pair.right); + components.put(updated, previous); + } + } previous.add(pair.right); nbFiles++; return false; diff --git a/src/java/org/apache/cassandra/db/SerializationHeader.java b/src/java/org/apache/cassandra/db/SerializationHeader.java index 582a6af4f2..70c5401b8a 100644 --- a/src/java/org/apache/cassandra/db/SerializationHeader.java +++ b/src/java/org/apache/cassandra/db/SerializationHeader.java @@ -413,7 +413,7 @@ public class SerializationHeader } // For SSTables - public void serialize(Component header, DataOutputPlus out) throws IOException + public void serialize(Version version, Component header, DataOutputPlus out) throws IOException { EncodingStats.serializer.serialize(header.stats, out); @@ -447,7 +447,7 @@ public class SerializationHeader } // For SSTables - public int serializedSize(Component header) + public int serializedSize(Version version, Component header) { int size = EncodingStats.serializer.serializedSize(header.stats); diff --git a/src/java/org/apache/cassandra/db/compaction/Verifier.java b/src/java/org/apache/cassandra/db/compaction/Verifier.java index ae4e96678f..ce04ad3f23 100644 --- a/src/java/org/apache/cassandra/db/compaction/Verifier.java +++ b/src/java/org/apache/cassandra/db/compaction/Verifier.java @@ -91,12 +91,13 @@ public class Verifier implements Closeable outputHandler.output(String.format("Checking computed hash of %s ", sstable)); - // Verify will use the adler32 Digest files, which works for both compressed and uncompressed sstables + // Verify will use the Digest files, which works for both compressed and uncompressed sstables try { validator = null; - if (new File(sstable.descriptor.filenameFor(Component.DIGEST)).exists()) + if (sstable.descriptor.digestComponent != null && + new File(sstable.descriptor.filenameFor(sstable.descriptor.digestComponent)).exists()) { validator = DataIntegrityMetadata.fileDigestValidator(sstable.descriptor); validator.validate(); diff --git a/src/java/org/apache/cassandra/io/sstable/Component.java b/src/java/org/apache/cassandra/io/sstable/Component.java index 54dd35b799..9454882aaf 100644 --- a/src/java/org/apache/cassandra/io/sstable/Component.java +++ b/src/java/org/apache/cassandra/io/sstable/Component.java @@ -22,6 +22,7 @@ import java.util.EnumSet; import com.google.common.base.Objects; +import org.apache.cassandra.utils.ChecksumType; import org.apache.cassandra.utils.Pair; /** @@ -34,6 +35,7 @@ public class Component public static final char separator = '-'; final static EnumSet TYPES = EnumSet.allOf(Type.class); + public enum Type { // the base data for an sstable: the remaining components can be regenerated @@ -48,7 +50,7 @@ public class Component // statistical metadata about the content of the sstable STATS("Statistics.db"), // holds adler32 checksum of the data file - DIGEST(new String[] { "Digest.crc32", "Digest.adler32" }), + DIGEST("Digest.crc32", "Digest.adler32", "Digest.sha1"), // holds the CRC32 for chunks in an a uncompressed file. CRC("CRC.db"), // holds SSTable Index Summary (sampling of Index component) @@ -57,14 +59,14 @@ public class Component TOC("TOC.txt"), // custom component, used by e.g. custom compaction strategy CUSTOM(new String[] { null }); - + final String[] repr; Type(String repr) { this(new String[] { repr }); } - Type(String[] repr) + Type(String... repr) { this.repr = repr; } @@ -85,11 +87,28 @@ public class Component public final static Component FILTER = new Component(Type.FILTER); public final static Component COMPRESSION_INFO = new Component(Type.COMPRESSION_INFO); public final static Component STATS = new Component(Type.STATS); - public final static Component DIGEST = new Component(Type.DIGEST); + private static final String digestCrc32 = "Digest.crc32"; + private static final String digestAdler32 = "Digest.adler32"; + private static final String digestSha1 = "Digest.sha1"; + public final static Component DIGEST_CRC32 = new Component(Type.DIGEST, digestCrc32); + public final static Component DIGEST_ADLER32 = new Component(Type.DIGEST, digestAdler32); + public final static Component DIGEST_SHA1 = new Component(Type.DIGEST, digestSha1); public final static Component CRC = new Component(Type.CRC); public final static Component SUMMARY = new Component(Type.SUMMARY); public final static Component TOC = new Component(Type.TOC); + public static Component digestFor(ChecksumType checksumType) + { + switch (checksumType) + { + case Adler32: + return DIGEST_ADLER32; + case CRC32: + return DIGEST_CRC32; + } + throw new AssertionError(); + } + public final Type type; public final String name; public final int hashCode; @@ -97,6 +116,7 @@ public class Component public Component(Type type) { this(type, type.repr[0]); + assert type.repr.length == 1; assert type != Type.CUSTOM; } @@ -138,7 +158,14 @@ public class Component case FILTER: component = Component.FILTER; break; case COMPRESSION_INFO: component = Component.COMPRESSION_INFO; break; case STATS: component = Component.STATS; break; - case DIGEST: component = Component.DIGEST; break; + case DIGEST: switch (path.right) + { + case digestCrc32: component = Component.DIGEST_CRC32; break; + case digestAdler32: component = Component.DIGEST_ADLER32; break; + case digestSha1: component = Component.DIGEST_SHA1; break; + default: throw new IllegalArgumentException("Invalid digest component " + path.right); + } + break; case CRC: component = Component.CRC; break; case SUMMARY: component = Component.SUMMARY; break; case TOC: component = Component.TOC; break; diff --git a/src/java/org/apache/cassandra/io/sstable/Descriptor.java b/src/java/org/apache/cassandra/io/sstable/Descriptor.java index 38829df7da..dbce56cbbc 100644 --- a/src/java/org/apache/cassandra/io/sstable/Descriptor.java +++ b/src/java/org/apache/cassandra/io/sstable/Descriptor.java @@ -21,6 +21,7 @@ import java.io.File; import java.util.*; import java.util.regex.Pattern; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.CharMatcher; import com.google.common.base.Objects; @@ -28,6 +29,7 @@ import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.Directories; import org.apache.cassandra.io.sstable.format.SSTableFormat; import org.apache.cassandra.io.sstable.format.Version; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.sstable.metadata.IMetadataSerializer; import org.apache.cassandra.io.sstable.metadata.LegacyMetadataSerializer; import org.apache.cassandra.io.sstable.metadata.MetadataSerializer; @@ -52,27 +54,34 @@ public class Descriptor public final String cfname; public final int generation; public final SSTableFormat.Type formatType; + /** digest component - might be {@code null} for old, legacy sstables */ + public final Component digestComponent; private final int hashCode; /** * A descriptor that assumes CURRENT_VERSION. */ + @VisibleForTesting public Descriptor(File directory, String ksname, String cfname, int generation) { - this(DatabaseDescriptor.getSSTableFormat().info.getLatestVersion(), directory, ksname, cfname, generation, DatabaseDescriptor.getSSTableFormat()); + this(DatabaseDescriptor.getSSTableFormat().info.getLatestVersion(), directory, ksname, cfname, generation, DatabaseDescriptor.getSSTableFormat(), null); } + /** + * Constructor for sstable writers only. + */ public Descriptor(File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType) { - this(formatType.info.getLatestVersion(), directory, ksname, cfname, generation, formatType); + this(formatType.info.getLatestVersion(), directory, ksname, cfname, generation, formatType, Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType())); } + @VisibleForTesting public Descriptor(String version, File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType) { - this(formatType.info.getVersion(version), directory, ksname, cfname, generation, formatType); + this(formatType.info.getVersion(version), directory, ksname, cfname, generation, formatType, Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType())); } - public Descriptor(Version version, File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType) + public Descriptor(Version version, File directory, String ksname, String cfname, int generation, SSTableFormat.Type formatType, Component digestComponent) { assert version != null && directory != null && ksname != null && cfname != null && formatType.info.getLatestVersion().getClass().equals(version.getClass()); this.version = version; @@ -81,18 +90,24 @@ public class Descriptor this.cfname = cfname; this.generation = generation; this.formatType = formatType; + this.digestComponent = digestComponent; hashCode = Objects.hashCode(version, directory, generation, ksname, cfname, formatType); } public Descriptor withGeneration(int newGeneration) { - return new Descriptor(version, directory, ksname, cfname, newGeneration, formatType); + return new Descriptor(version, directory, ksname, cfname, newGeneration, formatType, digestComponent); } public Descriptor withFormatType(SSTableFormat.Type newType) { - return new Descriptor(newType.info.getLatestVersion(), directory, ksname, cfname, generation, newType); + return new Descriptor(newType.info.getLatestVersion(), directory, ksname, cfname, generation, newType, digestComponent); + } + + public Descriptor withDigestComponent(Component newDigestComponent) + { + return new Descriptor(version, directory, ksname, cfname, generation, formatType, newDigestComponent); } public String tmpFilenameFor(Component component) @@ -102,7 +117,7 @@ public class Descriptor public String filenameFor(Component component) { - return filenameFor(component.name()); + return baseFilename() + separator + component.name(); } public String baseFilename() @@ -139,16 +154,6 @@ public class Descriptor return formatType.info; } - /** - * @param suffix A component suffix, such as 'Data.db'/'Index.db'/etc - * @return A filename for this descriptor with the given suffix. - */ - public String filenameFor(String suffix) - { - return baseFilename() + separator + suffix; - } - - /** Return any temporary files found in the directory */ public List getTemporaryFiles() { @@ -299,7 +304,10 @@ public class Descriptor } assert tokenStack.isEmpty() : "Invalid file name " + name + " in " + directory; - return Pair.create(new Descriptor(version, parentDirectory, ksname, cfname, generation, fmt), component); + return Pair.create(new Descriptor(version, parentDirectory, ksname, cfname, generation, fmt, + // _assume_ version from version + Component.digestFor(version.uncompressedChecksumType())), + component); } public IMetadataSerializer getMetadataSerializer() diff --git a/src/java/org/apache/cassandra/io/sstable/SSTable.java b/src/java/org/apache/cassandra/io/sstable/SSTable.java index 811f4ef370..d66638e372 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTable.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTable.java @@ -23,7 +23,6 @@ import java.nio.charset.Charset; import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Predicates; import com.google.common.collect.Collections2; import com.google.common.collect.Sets; @@ -220,9 +219,17 @@ public abstract class SSTable Set components = Sets.newHashSetWithExpectedSize(knownTypes.size()); for (Component.Type componentType : knownTypes) { - Component component = new Component(componentType); - if (new File(desc.filenameFor(component)).exists()) - components.add(component); + if (componentType == Component.Type.DIGEST) + { + if (desc.digestComponent != null && new File(desc.filenameFor(desc.digestComponent)).exists()) + components.add(desc.digestComponent); + } + else + { + Component component = new Component(componentType); + if (new File(desc.filenameFor(component)).exists()) + components.add(component); + } } return components; } diff --git a/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java index 1a3f796976..4cbbd70a30 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java +++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java @@ -35,6 +35,7 @@ import org.apache.cassandra.db.rows.UnfilteredRowIterator; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.SSTable; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.sstable.metadata.MetadataCollector; import org.apache.cassandra.io.sstable.metadata.MetadataComponent; import org.apache.cassandra.io.sstable.metadata.MetadataType; @@ -131,7 +132,7 @@ public abstract class SSTableWriter extends SSTable implements Transactional Component.STATS, Component.SUMMARY, Component.TOC, - Component.DIGEST)); + Component.digestFor(BigFormat.latestVersion.uncompressedChecksumType()))); if (metadata.params.bloomFilterFpChance < 1.0) components.add(Component.FILTER); diff --git a/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java b/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java index cbc2c39d7d..1f2a98f2e5 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java +++ b/src/java/org/apache/cassandra/io/sstable/format/big/BigFormat.java @@ -40,7 +40,7 @@ import org.apache.cassandra.utils.ChecksumType; public class BigFormat implements SSTableFormat { public static final BigFormat instance = new BigFormat(); - public static final BigVersion latestVersion = new BigVersion(BigVersion.current_version); + public static final Version latestVersion = new BigVersion(BigVersion.current_version); private static final SSTableReader.Factory readerFactory = new ReaderFactory(); private static final SSTableWriter.Factory writerFactory = new WriterFactory(); @@ -123,6 +123,8 @@ public class BigFormat implements SSTableFormat // la (2.2.0): new file name format // ma (3.0.0): swap bf hash order // store rows natively + // + // NOTE: when adding a new version, please add that to LegacySSTableTest, too. private final boolean isLatestVersion; private final boolean hasSamplingLevel; 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 38dab9a63b..089ae6fcf6 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 @@ -341,7 +341,7 @@ public class BigTableWriter extends SSTableWriter File file = new File(desc.filenameFor(Component.STATS)); try (SequentialWriter out = SequentialWriter.open(file)) { - desc.getMetadataSerializer().serialize(components, out); + desc.getMetadataSerializer().serialize(components, out, desc.version); out.setDescriptor(desc).finish(); } catch (IOException e) diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java b/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java index fa94eadb13..4f4c04b0a1 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/CompactionMetadata.java @@ -72,13 +72,13 @@ public class CompactionMetadata extends MetadataComponent public static class CompactionMetadataSerializer implements IMetadataComponentSerializer { - public int serializedSize(CompactionMetadata component) throws IOException + public int serializedSize(Version version, CompactionMetadata component) throws IOException { byte[] serializedCardinality = component.cardinalityEstimator.getBytes(); return TypeSizes.sizeof(serializedCardinality.length) + serializedCardinality.length; } - public void serialize(CompactionMetadata component, DataOutputPlus out) throws IOException + public void serialize(Version version, CompactionMetadata component, DataOutputPlus out) throws IOException { ByteBufferUtil.writeWithLength(component.cardinalityEstimator.getBytes(), out); } diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java index 046e290a16..7c03f54edd 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataComponentSerializer.java @@ -31,21 +31,26 @@ public interface IMetadataComponentSerializer /** * Calculate and return serialized size. * + * + * + * @param version * @param component MetadataComponent to calculate serialized size * @return serialized size of this component * @throws IOException */ - int serializedSize(T component) throws IOException; + int serializedSize(Version version, T component) throws IOException; /** * Serialize metadata component to given output. * * + * + * @param version * @param component MetadataComponent to serialize * @param out serialize destination * @throws IOException */ - void serialize(T component, DataOutputPlus out) throws IOException; + void serialize(Version version, T component, DataOutputPlus out) throws IOException; /** * Deserialize metadata component from given input. diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java index df577df1bb..100cfdb7a2 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/IMetadataSerializer.java @@ -22,6 +22,7 @@ import java.util.EnumSet; import java.util.Map; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.Version; import org.apache.cassandra.io.util.DataOutputPlus; /** @@ -35,9 +36,10 @@ public interface IMetadataSerializer * * @param components Metadata components to serialize * @param out + * @param version * @throws IOException */ - void serialize(Map components, DataOutputPlus out) throws IOException; + void serialize(Map components, DataOutputPlus out, Version version) throws IOException; /** * Deserialize specified metadata components from given descriptor. diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java index 53ba922862..2ed845cdf6 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/LegacyMetadataSerializer.java @@ -27,6 +27,7 @@ import org.apache.cassandra.db.TypeSizes; import org.apache.cassandra.db.commitlog.ReplayPosition; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.Version; import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus; import org.apache.cassandra.io.util.DataOutputPlus; import org.apache.cassandra.service.ActiveRepairService; @@ -44,7 +45,7 @@ public class LegacyMetadataSerializer extends MetadataSerializer * Legacy serialization is only used for SSTable level reset. */ @Override - public void serialize(Map components, DataOutputPlus out) throws IOException + public void serialize(Map components, DataOutputPlus out, Version version) throws IOException { ValidationMetadata validation = (ValidationMetadata) components.get(MetadataType.VALIDATION); StatsMetadata stats = (StatsMetadata) components.get(MetadataType.STATS); diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java index 9a5eae833e..9197b7a03f 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java @@ -27,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.Version; import org.apache.cassandra.io.util.DataOutputPlus; import org.apache.cassandra.io.util.DataOutputStreamPlus; import org.apache.cassandra.io.util.FileDataInput; @@ -49,7 +50,7 @@ public class MetadataSerializer implements IMetadataSerializer { private static final Logger logger = LoggerFactory.getLogger(MetadataSerializer.class); - public void serialize(Map components, DataOutputPlus out) throws IOException + public void serialize(Map components, DataOutputPlus out, Version version) throws IOException { // sort components by type List sortedComponents = Lists.newArrayList(components.values()); @@ -66,12 +67,12 @@ public class MetadataSerializer implements IMetadataSerializer out.writeInt(type.ordinal()); // serialize position out.writeInt(lastPosition); - lastPosition += type.serializer.serializedSize(component); + lastPosition += type.serializer.serializedSize(version, component); } // serialize components for (MetadataComponent component : sortedComponents) { - component.getType().serializer.serialize(component, out); + component.getType().serializer.serialize(version, component, out); } } @@ -115,14 +116,13 @@ public class MetadataSerializer implements IMetadataSerializer } for (MetadataType type : types) { - MetadataComponent component = null; Integer offset = toc.get(type); if (offset != null) { in.seek(offset); - component = type.serializer.deserialize(descriptor.version, in); + MetadataComponent component = type.serializer.deserialize(descriptor.version, in); + components.put(type, component); } - components.put(type, component); } return components; } @@ -152,7 +152,7 @@ public class MetadataSerializer implements IMetadataSerializer String filePath = descriptor.tmpFilenameFor(Component.STATS); try (DataOutputStreamPlus out = new BufferedDataOutputStreamPlus(new FileOutputStream(filePath))) { - serialize(currentComponents, out); + serialize(currentComponents, out, descriptor.version); out.flush(); } // we cant move a file on top of another file in windows: diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java b/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java index 8153533453..824bf8b5bf 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java @@ -227,13 +227,16 @@ public class StatsMetadata extends MetadataComponent public static class StatsMetadataSerializer implements IMetadataComponentSerializer { - public int serializedSize(StatsMetadata component) throws IOException + public int serializedSize(Version version, StatsMetadata component) throws IOException { int size = 0; size += EstimatedHistogram.serializer.serializedSize(component.estimatedPartitionSize); size += EstimatedHistogram.serializer.serializedSize(component.estimatedColumnCount); size += ReplayPosition.serializer.serializedSize(component.replayPosition); - size += 8 + 8 + 4 + 4 + 4 + 4 + 8 + 8; // mix/max timestamp(long), min/maxLocalDeletionTime(int), min/max TTL, compressionRatio(double), repairedAt (long) + if (version.storeRows()) + size += 8 + 8 + 4 + 4 + 4 + 4 + 8 + 8; // mix/max timestamp(long), min/maxLocalDeletionTime(int), min/max TTL, compressionRatio(double), repairedAt (long) + else + size += 8 + 8 + 4 + 8 + 8; // mix/max timestamp(long), maxLocalDeletionTime(int), compressionRatio(double), repairedAt (long) size += StreamingHistogram.serializer.serializedSize(component.estimatedTombstoneDropTime); size += TypeSizes.sizeof(component.sstableLevel); // min column names @@ -245,21 +248,26 @@ public class StatsMetadata extends MetadataComponent for (ByteBuffer value : component.maxClusteringValues) size += 2 + value.remaining(); // with short length size += TypeSizes.sizeof(component.hasLegacyCounterShards); - size += 8 + 8; // totalColumnsSet, totalRows + if (version.storeRows()) + size += 8 + 8; // totalColumnsSet, totalRows return size; } - public void serialize(StatsMetadata component, DataOutputPlus out) throws IOException + public void serialize(Version version, StatsMetadata component, DataOutputPlus out) throws IOException { EstimatedHistogram.serializer.serialize(component.estimatedPartitionSize, out); EstimatedHistogram.serializer.serialize(component.estimatedColumnCount, out); ReplayPosition.serializer.serialize(component.replayPosition, out); out.writeLong(component.minTimestamp); out.writeLong(component.maxTimestamp); - out.writeInt(component.minLocalDeletionTime); + if (version.storeRows()) + out.writeInt(component.minLocalDeletionTime); out.writeInt(component.maxLocalDeletionTime); - out.writeInt(component.minTTL); - out.writeInt(component.maxTTL); + if (version.storeRows()) + { + out.writeInt(component.minTTL); + out.writeInt(component.maxTTL); + } out.writeDouble(component.compressionRatio); StreamingHistogram.serializer.serialize(component.estimatedTombstoneDropTime, out); out.writeInt(component.sstableLevel); @@ -272,8 +280,11 @@ public class StatsMetadata extends MetadataComponent ByteBufferUtil.writeWithShortLength(value, out); out.writeBoolean(component.hasLegacyCounterShards); - out.writeLong(component.totalColumnsSet); - out.writeLong(component.totalRows); + if (version.storeRows()) + { + out.writeLong(component.totalColumnsSet); + out.writeLong(component.totalRows); + } } public StatsMetadata deserialize(Version version, DataInputPlus in) throws IOException diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java b/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java index 72bfdcb9a5..0eda8eb775 100644 --- a/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/metadata/ValidationMetadata.java @@ -71,12 +71,12 @@ public class ValidationMetadata extends MetadataComponent public static class ValidationMetadataSerializer implements IMetadataComponentSerializer { - public int serializedSize(ValidationMetadata component) throws IOException + public int serializedSize(Version version, ValidationMetadata component) throws IOException { return TypeSizes.sizeof(component.partitioner) + 8; } - public void serialize(ValidationMetadata component, DataOutputPlus out) throws IOException + public void serialize(Version version, ValidationMetadata component, DataOutputPlus out) throws IOException { out.writeUTF(component.partitioner); out.writeDouble(component.bloomFilterFPChance); diff --git a/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java b/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java index 01c004911b..0a89d74b6f 100644 --- a/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java +++ b/src/java/org/apache/cassandra/io/util/DataIntegrityMetadata.java @@ -110,7 +110,7 @@ public class DataIntegrityMetadata { this.descriptor = descriptor; checksum = descriptor.version.uncompressedChecksumType().newInstance(); - digestReader = RandomAccessReader.open(new File(descriptor.filenameFor(Component.DIGEST))); + digestReader = RandomAccessReader.open(new File(descriptor.filenameFor(Component.digestFor(descriptor.version.uncompressedChecksumType())))); dataReader = RandomAccessReader.open(new File(descriptor.filenameFor(Component.DATA))); try { @@ -206,7 +206,9 @@ public class DataIntegrityMetadata public void writeFullChecksum(Descriptor descriptor) { - File outFile = new File(descriptor.filenameFor(Component.DIGEST)); + if (descriptor.digestComponent == null) + throw new NullPointerException("Null digest component for " + descriptor.ksname + '.' + descriptor.cfname + " file " + descriptor.baseFilename()); + File outFile = new File(descriptor.filenameFor(descriptor.digestComponent)); try (BufferedWriter out =Files.newBufferedWriter(outFile.toPath(), Charsets.UTF_8)) { out.write(String.valueOf(fullChecksum.getValue())); diff --git a/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java b/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java index 04d65d7207..123b983c9d 100644 --- a/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java +++ b/src/java/org/apache/cassandra/streaming/messages/FileMessageHeader.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.UUID; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; import org.apache.cassandra.db.SerializationHeader; import org.apache.cassandra.db.TypeSizes; import org.apache.cassandra.io.IVersionedSerializer; @@ -162,7 +161,7 @@ public class FileMessageHeader out.writeInt(header.sstableLevel); if (version >= StreamMessage.VERSION_30) - SerializationHeader.serializer.serialize(header.header, out); + SerializationHeader.serializer.serialize(header.version, header.header, out); } public FileMessageHeader deserialize(DataInputPlus in, int version) throws IOException @@ -211,7 +210,7 @@ public class FileMessageHeader size += TypeSizes.sizeof(header.sstableLevel); if (version >= StreamMessage.VERSION_30) - size += SerializationHeader.serializer.serializedSize(header.header); + size += SerializationHeader.serializer.serializedSize(header.version, header.header); return size; } diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-CompressionInfo.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-CompressionInfo.db new file mode 100644 index 0000000000..6d49922f92 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Data.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Data.db new file mode 100644 index 0000000000..326498b814 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Data.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Filter.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Filter.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Index.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Index.db new file mode 100644 index 0000000000..44b89c4a08 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Index.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Statistics.db new file mode 100644 index 0000000000..a9a404adef Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Statistics.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Summary.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Summary.db new file mode 100644 index 0000000000..266c494a0b Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-Summary.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-TOC.txt b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-TOC.txt new file mode 100644 index 0000000000..abc3147559 --- /dev/null +++ b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust/legacy_tables-legacy_jb_clust-jb-1-TOC.txt @@ -0,0 +1,7 @@ +CompressionInfo.db +Statistics.db +Filter.db +Data.db +TOC.txt +Index.db +Summary.db diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-CompressionInfo.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-CompressionInfo.db new file mode 100644 index 0000000000..fe2e2572dc Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Data.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Data.db new file mode 100644 index 0000000000..12c8fdc573 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Data.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Filter.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Filter.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Index.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Index.db new file mode 100644 index 0000000000..51ddf91fab Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Index.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Statistics.db new file mode 100644 index 0000000000..a5eff40419 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Statistics.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Summary.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Summary.db new file mode 100644 index 0000000000..750a780e7e Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-Summary.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-TOC.txt b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-TOC.txt new file mode 100644 index 0000000000..abc3147559 --- /dev/null +++ b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_clust_counter/legacy_tables-legacy_jb_clust_counter-jb-1-TOC.txt @@ -0,0 +1,7 @@ +CompressionInfo.db +Statistics.db +Filter.db +Data.db +TOC.txt +Index.db +Summary.db diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-CompressionInfo.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-CompressionInfo.db new file mode 100644 index 0000000000..c80e64c1b9 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Data.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Data.db new file mode 100644 index 0000000000..401fe938ac Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Data.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Filter.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Filter.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Index.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Index.db new file mode 100644 index 0000000000..f0717e01d5 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Index.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Statistics.db new file mode 100644 index 0000000000..a2bcfaf94c Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Statistics.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Summary.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Summary.db new file mode 100644 index 0000000000..af5e7816e2 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-Summary.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-TOC.txt b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-TOC.txt new file mode 100644 index 0000000000..abc3147559 --- /dev/null +++ b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple/legacy_tables-legacy_jb_simple-jb-1-TOC.txt @@ -0,0 +1,7 @@ +CompressionInfo.db +Statistics.db +Filter.db +Data.db +TOC.txt +Index.db +Summary.db diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-CompressionInfo.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-CompressionInfo.db new file mode 100644 index 0000000000..9c3416e2ee Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Data.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Data.db new file mode 100644 index 0000000000..b72f7901d9 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Data.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Filter.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Filter.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Index.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Index.db new file mode 100644 index 0000000000..932936cb51 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Index.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Statistics.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Statistics.db new file mode 100644 index 0000000000..6baf1de8c5 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Statistics.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Summary.db b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Summary.db new file mode 100644 index 0000000000..af5e7816e2 Binary files /dev/null and b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-Summary.db differ diff --git a/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-TOC.txt b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-TOC.txt new file mode 100644 index 0000000000..abc3147559 --- /dev/null +++ b/test/data/legacy-sstables/jb/legacy_tables/legacy_jb_simple_counter/legacy_tables-legacy_jb_simple_counter-jb-1-TOC.txt @@ -0,0 +1,7 @@ +CompressionInfo.db +Statistics.db +Filter.db +Data.db +TOC.txt +Index.db +Summary.db diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-CompressionInfo.db new file mode 100644 index 0000000000..69a8355e9f Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Data.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Data.db new file mode 100644 index 0000000000..7acbf92702 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Data.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Digest.sha1 new file mode 100644 index 0000000000..fef7106b82 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Digest.sha1 @@ -0,0 +1 @@ +4293822635 \ No newline at end of file diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Filter.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Index.db new file mode 100644 index 0000000000..44b89c4a08 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Index.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Statistics.db new file mode 100644 index 0000000000..5f07da5525 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Statistics.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-Summary.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-TOC.txt b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-TOC.txt new file mode 100644 index 0000000000..7be41d8896 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust/legacy_tables-legacy_ka_clust-ka-1-TOC.txt @@ -0,0 +1,8 @@ +Index.db +Digest.sha1 +CompressionInfo.db +Data.db +Statistics.db +Summary.db +TOC.txt +Filter.db diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-CompressionInfo.db new file mode 100644 index 0000000000..3c7291c44f Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Data.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Data.db new file mode 100644 index 0000000000..3566e5aabc Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Data.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Digest.sha1 new file mode 100644 index 0000000000..a679541d70 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Digest.sha1 @@ -0,0 +1 @@ +2539906592 \ No newline at end of file diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Filter.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Index.db new file mode 100644 index 0000000000..51ddf91fab Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Index.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Statistics.db new file mode 100644 index 0000000000..36e9dc299c Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Statistics.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-Summary.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-TOC.txt b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-TOC.txt new file mode 100644 index 0000000000..7be41d8896 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_clust_counter/legacy_tables-legacy_ka_clust_counter-ka-1-TOC.txt @@ -0,0 +1,8 @@ +Index.db +Digest.sha1 +CompressionInfo.db +Data.db +Statistics.db +Summary.db +TOC.txt +Filter.db diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-CompressionInfo.db new file mode 100644 index 0000000000..c80e64c1b9 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Data.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Data.db new file mode 100644 index 0000000000..b29a26a7a2 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Data.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Digest.sha1 new file mode 100644 index 0000000000..c889c8d70f --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Digest.sha1 @@ -0,0 +1 @@ +2802392853 \ No newline at end of file diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Filter.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Index.db new file mode 100644 index 0000000000..f0717e01d5 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Index.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Statistics.db new file mode 100644 index 0000000000..2af546706c Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Statistics.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-Summary.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-TOC.txt b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-TOC.txt new file mode 100644 index 0000000000..7be41d8896 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple/legacy_tables-legacy_ka_simple-ka-1-TOC.txt @@ -0,0 +1,8 @@ +Index.db +Digest.sha1 +CompressionInfo.db +Data.db +Statistics.db +Summary.db +TOC.txt +Filter.db diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-CompressionInfo.db new file mode 100644 index 0000000000..9c3416e2ee Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Data.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Data.db new file mode 100644 index 0000000000..1aee64c720 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Data.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Digest.sha1 new file mode 100644 index 0000000000..3da96e6353 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Digest.sha1 @@ -0,0 +1 @@ +3671794375 \ No newline at end of file diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Filter.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Index.db new file mode 100644 index 0000000000..932936cb51 Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Index.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Statistics.db new file mode 100644 index 0000000000..fa74e4b5ef Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Statistics.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-Summary.db differ diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-TOC.txt b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-TOC.txt new file mode 100644 index 0000000000..7be41d8896 --- /dev/null +++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_simple_counter/legacy_tables-legacy_ka_simple_counter-ka-1-TOC.txt @@ -0,0 +1,8 @@ +Index.db +Digest.sha1 +CompressionInfo.db +Data.db +Statistics.db +Summary.db +TOC.txt +Filter.db diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-CompressionInfo.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-CompressionInfo.db new file mode 100644 index 0000000000..13701c41e3 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Data.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Data.db new file mode 100644 index 0000000000..f04344a762 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Data.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Digest.adler32 b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Digest.adler32 new file mode 100644 index 0000000000..d6157b2411 --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Digest.adler32 @@ -0,0 +1 @@ +1633775217 \ No newline at end of file diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Filter.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Index.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Index.db new file mode 100644 index 0000000000..44b89c4a08 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Index.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Statistics.db new file mode 100644 index 0000000000..a54d94d206 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Summary.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-TOC.txt b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-TOC.txt new file mode 100644 index 0000000000..dec3a3f5cb --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust/la-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.adler32 +Filter.db +Summary.db +Data.db +Statistics.db +TOC.txt +Index.db diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-CompressionInfo.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-CompressionInfo.db new file mode 100644 index 0000000000..0bdb82a97e Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Data.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Data.db new file mode 100644 index 0000000000..76d4cbc266 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Data.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Digest.adler32 b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Digest.adler32 new file mode 100644 index 0000000000..e704111890 --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Digest.adler32 @@ -0,0 +1 @@ +287946299 \ No newline at end of file diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Filter.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Index.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Index.db new file mode 100644 index 0000000000..51ddf91fab Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Index.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Statistics.db new file mode 100644 index 0000000000..b6ad155175 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Summary.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-TOC.txt b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-TOC.txt new file mode 100644 index 0000000000..dec3a3f5cb --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_clust_counter/la-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.adler32 +Filter.db +Summary.db +Data.db +Statistics.db +TOC.txt +Index.db diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-CompressionInfo.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-CompressionInfo.db new file mode 100644 index 0000000000..c80e64c1b9 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Data.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Data.db new file mode 100644 index 0000000000..ae136f5806 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Data.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Digest.adler32 b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Digest.adler32 new file mode 100644 index 0000000000..dacf8ac27c --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Digest.adler32 @@ -0,0 +1 @@ +4239203875 \ No newline at end of file diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Filter.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Index.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Index.db new file mode 100644 index 0000000000..f0717e01d5 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Index.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Statistics.db new file mode 100644 index 0000000000..49b92757f5 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Summary.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-TOC.txt b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-TOC.txt new file mode 100644 index 0000000000..dec3a3f5cb --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple/la-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.adler32 +Filter.db +Summary.db +Data.db +Statistics.db +TOC.txt +Index.db diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-CompressionInfo.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-CompressionInfo.db new file mode 100644 index 0000000000..9c3416e2ee Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Data.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Data.db new file mode 100644 index 0000000000..010bd1aa0b Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Data.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Digest.adler32 b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Digest.adler32 new file mode 100644 index 0000000000..562547ae0c --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Digest.adler32 @@ -0,0 +1 @@ +590029692 \ No newline at end of file diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Filter.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Filter.db new file mode 100644 index 0000000000..c3cb27ca20 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Index.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Index.db new file mode 100644 index 0000000000..932936cb51 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Index.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Statistics.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Statistics.db new file mode 100644 index 0000000000..525a4b1c88 Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Summary.db b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Summary.db new file mode 100644 index 0000000000..35b5e2216a Binary files /dev/null and b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-TOC.txt b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-TOC.txt new file mode 100644 index 0000000000..dec3a3f5cb --- /dev/null +++ b/test/data/legacy-sstables/la/legacy_tables/legacy_la_simple_counter/la-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.adler32 +Filter.db +Summary.db +Data.db +Statistics.db +TOC.txt +Index.db diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-CompressionInfo.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-CompressionInfo.db new file mode 100644 index 0000000000..ba05e4bee8 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Data.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Data.db new file mode 100644 index 0000000000..633d0ff420 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Data.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Digest.crc32 b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Digest.crc32 new file mode 100644 index 0000000000..6900022c5c --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Digest.crc32 @@ -0,0 +1 @@ +1839244592 \ No newline at end of file diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Filter.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Filter.db new file mode 100644 index 0000000000..2e1d5d29ca Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Index.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Index.db new file mode 100644 index 0000000000..cffcec78a4 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Index.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Statistics.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Statistics.db new file mode 100644 index 0000000000..96f0d3a7c0 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Summary.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Summary.db new file mode 100644 index 0000000000..9b24e0450c Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-TOC.txt b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-TOC.txt new file mode 100644 index 0000000000..00915e9842 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust/ma-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.crc32 +Statistics.db +Summary.db +TOC.txt +Data.db +Filter.db +Index.db diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-CompressionInfo.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-CompressionInfo.db new file mode 100644 index 0000000000..8e679e9240 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Data.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Data.db new file mode 100644 index 0000000000..da15165987 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Data.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Digest.crc32 b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Digest.crc32 new file mode 100644 index 0000000000..f348e92a64 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Digest.crc32 @@ -0,0 +1 @@ +248029051 \ No newline at end of file diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Filter.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Filter.db new file mode 100644 index 0000000000..2e1d5d29ca Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Index.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Index.db new file mode 100644 index 0000000000..d703649d67 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Index.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Statistics.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Statistics.db new file mode 100644 index 0000000000..14736e2da3 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Summary.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Summary.db new file mode 100644 index 0000000000..9b24e0450c Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-TOC.txt b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-TOC.txt new file mode 100644 index 0000000000..00915e9842 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_clust_counter/ma-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.crc32 +Statistics.db +Summary.db +TOC.txt +Data.db +Filter.db +Index.db diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-CompressionInfo.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-CompressionInfo.db new file mode 100644 index 0000000000..fc4d5352e6 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Data.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Data.db new file mode 100644 index 0000000000..6412d9a546 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Data.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Digest.crc32 b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Digest.crc32 new file mode 100644 index 0000000000..af439295a1 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Digest.crc32 @@ -0,0 +1 @@ +844143857 \ No newline at end of file diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Filter.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Filter.db new file mode 100644 index 0000000000..2e1d5d29ca Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Index.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Index.db new file mode 100644 index 0000000000..9e15d2d741 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Index.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Statistics.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Statistics.db new file mode 100644 index 0000000000..b9fae83f65 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Summary.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Summary.db new file mode 100644 index 0000000000..9b24e0450c Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-TOC.txt b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-TOC.txt new file mode 100644 index 0000000000..00915e9842 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple/ma-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.crc32 +Statistics.db +Summary.db +TOC.txt +Data.db +Filter.db +Index.db diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-CompressionInfo.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-CompressionInfo.db new file mode 100644 index 0000000000..720386d495 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-CompressionInfo.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Data.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Data.db new file mode 100644 index 0000000000..8a519301d1 Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Data.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Digest.crc32 b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Digest.crc32 new file mode 100644 index 0000000000..74b2a1eab0 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Digest.crc32 @@ -0,0 +1 @@ +305582155 \ No newline at end of file diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Filter.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Filter.db new file mode 100644 index 0000000000..2e1d5d29ca Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Filter.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Index.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Index.db new file mode 100644 index 0000000000..50de06cc7d Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Index.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Statistics.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Statistics.db new file mode 100644 index 0000000000..c4fa2cf39f Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Statistics.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Summary.db b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Summary.db new file mode 100644 index 0000000000..9b24e0450c Binary files /dev/null and b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-Summary.db differ diff --git a/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-TOC.txt b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-TOC.txt new file mode 100644 index 0000000000..00915e9842 --- /dev/null +++ b/test/data/legacy-sstables/ma/legacy_tables/legacy_ma_simple_counter/ma-1-big-TOC.txt @@ -0,0 +1,8 @@ +CompressionInfo.db +Digest.crc32 +Statistics.db +Summary.db +TOC.txt +Data.db +Filter.db +Index.db diff --git a/test/unit/org/apache/cassandra/db/VerifyTest.java b/test/unit/org/apache/cassandra/db/VerifyTest.java index 13ce0c1b49..9de01c1391 100644 --- a/test/unit/org/apache/cassandra/db/VerifyTest.java +++ b/test/unit/org/apache/cassandra/db/VerifyTest.java @@ -275,11 +275,11 @@ public class VerifyTest SSTableReader sstable = cfs.getLiveSSTables().iterator().next(); - RandomAccessFile file = new RandomAccessFile(sstable.descriptor.filenameFor(Component.DIGEST), "rw"); + RandomAccessFile file = new RandomAccessFile(sstable.descriptor.filenameFor(sstable.descriptor.digestComponent), "rw"); Long correctChecksum = Long.parseLong(file.readLine()); file.close(); - writeChecksum(++correctChecksum, sstable.descriptor.filenameFor(Component.DIGEST)); + writeChecksum(++correctChecksum, sstable.descriptor.filenameFor(sstable.descriptor.digestComponent)); try (Verifier verifier = new Verifier(cfs, sstable, false)) { @@ -315,7 +315,7 @@ public class VerifyTest file.close(); // Update the Digest to have the right Checksum - writeChecksum(simpleFullChecksum(sstable.getFilename()), sstable.descriptor.filenameFor(Component.DIGEST)); + writeChecksum(simpleFullChecksum(sstable.getFilename()), sstable.descriptor.filenameFor(sstable.descriptor.digestComponent)); try (Verifier verifier = new Verifier(cfs, sstable, false)) { diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java index d2922ccbbd..0578d447e1 100644 --- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java @@ -18,18 +18,29 @@ package org.apache.cassandra.io.sstable; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Random; import java.util.Set; +import org.junit.Assert; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.Util; import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.cql3.QueryProcessor; +import org.apache.cassandra.cql3.UntypedResultSet; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.DeletionTime; import org.apache.cassandra.db.Keyspace; @@ -43,6 +54,7 @@ import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.sstable.format.SSTableFormat; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.io.sstable.format.Version; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.schema.KeyspaceParams; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.streaming.StreamPlan; @@ -57,6 +69,8 @@ import static org.apache.cassandra.utils.ByteBufferUtil.bytes; */ public class LegacySSTableTest { + private static final Logger logger = LoggerFactory.getLogger(LegacySSTableTest.class); + public static final String LEGACY_SSTABLE_PROP = "legacy-sstable-root"; public static final String KSNAME = "Keyspace1"; public static final String CFNAME = "Standard1"; @@ -64,6 +78,27 @@ public class LegacySSTableTest public static Set TEST_DATA; public static File LEGACY_SSTABLE_ROOT; + /** + * When adding a new sstable version, add that one here. + * See {@link #testGenerateSstables()} to generate sstables. + * Take care on commit as you need to add the sstable files using {@code git add -f} + */ + public static final String[] legacyVersions = {"ma", "la", "ka", "jb"}; + + // 1200 chars + static final String longString = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"; + @BeforeClass public static void defineSchema() throws ConfigurationException { @@ -103,24 +138,6 @@ public class LegacySSTableTest return new Descriptor(ver, directory, KSNAME, CFNAME, 0, SSTableFormat.Type.LEGACY); } - /** - * Generates a test SSTable for use in this classes' tests. Uncomment and run against an older build - * and the output will be copied to a version subdirectory in 'LEGACY_SSTABLE_ROOT' - * - @Test - public void buildTestSSTable() throws IOException - { - // write the output in a version specific directory - Descriptor dest = getDescriptor(Descriptor.Version.current_version); - assert dest.directory.mkdirs() : "Could not create " + dest.directory + ". Might it already exist?"; - - SSTableReader ssTable = SSTableUtils.prepare().ks(KSNAME).cf(CFNAME).dest(dest).write(TEST_DATA); - assert ssTable.descriptor.generation == 0 : - "In order to create a generation 0 sstable, please run this test alone."; - System.out.println(">>> Wrote " + dest); - } - */ - @Test public void testStreaming() throws Throwable { @@ -128,6 +145,8 @@ public class LegacySSTableTest for (File version : LEGACY_SSTABLE_ROOT.listFiles()) { + if (!new File(LEGACY_SSTABLE_ROOT + File.separator + version.getName() + File.separator + KSNAME).isDirectory()) + continue; if (Version.validate(version.getName()) && SSTableFormat.Type.LEGACY.info.getVersion(version.getName()).isCompatibleForStreaming()) testStreaming(version.getName()); } @@ -170,6 +189,8 @@ public class LegacySSTableTest for (File version : LEGACY_SSTABLE_ROOT.listFiles()) { + if (!new File(LEGACY_SSTABLE_ROOT + File.separator + version.getName() + File.separator + KSNAME).isDirectory()) + continue; if (Version.validate(version.getName()) && SSTableFormat.Type.LEGACY.info.getVersion(version.getName()).isCompatible()) { notSkipped = true; @@ -208,4 +229,197 @@ public class LegacySSTableTest throw e; } } + + @Test + public void testLegacyCqlTables() throws Exception + { + createKeyspace(); + + loadLegacyTables(); + } + + private static void loadLegacyTables() throws IOException + { + for (String legacyVersion : legacyVersions) + { + logger.info("Preparing legacy version {}", legacyVersion); + + createTables(legacyVersion); + + loadLegacyTable("legacy_%s_simple", legacyVersion); + loadLegacyTable("legacy_%s_simple_counter", legacyVersion); + loadLegacyTable("legacy_%s_clust", legacyVersion); + loadLegacyTable("legacy_%s_clust_counter", legacyVersion); + + for (int ck = 0; ck < 50; ck++) + { + String ckValue = Integer.toString(ck) + longString; + for (int pk = 0; pk < 5; pk++) + { + logger.debug("for pk={} ck={}", pk, ck); + + String pkValue = Integer.toString(pk); + UntypedResultSet rs; + if (ck == 0) + { + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_simple WHERE pk=?", legacyVersion), pkValue); + Assert.assertNotNull(rs); + Assert.assertEquals(1, rs.size()); + Assert.assertEquals("foo bar baz", rs.one().getString("val")); + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_simple_counter WHERE pk=?", legacyVersion), pkValue); + Assert.assertNotNull(rs); + Assert.assertEquals(1, rs.size()); + Assert.assertEquals(1L, rs.one().getLong("val")); + } + + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_clust WHERE pk=? AND ck=?", legacyVersion), pkValue, ckValue); + assertLegacyClustRows(1, rs); + + String ckValue2 = Integer.toString(ck < 10 ? 40 : ck - 1) + longString; + String ckValue3 = Integer.toString(ck > 39 ? 10 : ck + 1) + longString; + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_clust WHERE pk=? AND ck IN (?, ?, ?)", legacyVersion), pkValue, ckValue, ckValue2, ckValue3); + assertLegacyClustRows(3, rs); + + rs = QueryProcessor.executeInternal(String.format("SELECT val FROM legacy_tables.legacy_%s_clust_counter WHERE pk=? AND ck=?", legacyVersion), pkValue, ckValue); + Assert.assertNotNull(rs); + Assert.assertEquals(1, rs.size()); + Assert.assertEquals(1L, rs.one().getLong("val")); + } + } + } + } + + private void createKeyspace() + { + QueryProcessor.executeInternal("CREATE KEYSPACE legacy_tables WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}"); + } + + private static void createTables(String legacyVersion) + { + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_simple (pk text PRIMARY KEY, val text)", legacyVersion)); + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_simple_counter (pk text PRIMARY KEY, val counter)", legacyVersion)); + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_clust (pk text, ck text, val text, PRIMARY KEY (pk, ck))", legacyVersion)); + QueryProcessor.executeInternal(String.format("CREATE TABLE legacy_tables.legacy_%s_clust_counter (pk text, ck text, val counter, PRIMARY KEY (pk, ck))", legacyVersion)); + } + + private static void assertLegacyClustRows(int count, UntypedResultSet rs) + { + Assert.assertNotNull(rs); + Assert.assertEquals(count, rs.size()); + for (int i = 0; i < count; i++) + { + for (UntypedResultSet.Row r : rs) + { + Assert.assertEquals(128, r.getString("val").length()); + } + } + } + + private static void loadLegacyTable(String tablePattern, String legacyVersion) throws IOException + { + String table = String.format(tablePattern, legacyVersion); + + logger.info("Loading legacy table {}", table); + + ColumnFamilyStore cfs = Keyspace.open("legacy_tables").getColumnFamilyStore(table); + + for (File cfDir : cfs.getDirectories().getCFDirectories()) + { + copySstablesToTestData(legacyVersion, table, cfDir); + } + + cfs.loadNewSSTables(); + } + + /** + * Generates sstables for 4 CQL tables (see {@link #createTables(String)}) in current + * sstable format (version) into {@code test/data/legacy-sstables/VERSION}, where + * {@code VERSION} matches {@link Version#getVersion() BigFormat.latestVersion.getVersion()}. + *

+ * Run this test alone (e.g. from your IDE) when a new version is introduced or format changed + * during development. I.e. remove the {@code @Ignore} annotation temporarily. + *

+ */ + @Test + @Ignore + public void testGenerateSstables() throws Throwable + { + createKeyspace(); + createTables(BigFormat.latestVersion.getVersion()); + + Random rand = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 128; i++) + { + sb.append((char)('a' + rand.nextInt(26))); + } + String randomString = sb.toString(); + + for (int pk = 0; pk < 5; pk++) + { + String valPk = Integer.toString(pk); + QueryProcessor.executeInternal(String.format("INSERT INTO legacy_tables.legacy_%s_simple (pk, val) VALUES ('%s', '%s')", + BigFormat.latestVersion, valPk, "foo bar baz")); + + QueryProcessor.executeInternal(String.format("UPDATE legacy_tables.legacy_%s_simple_counter SET val = val + 1 WHERE pk = '%s'", + BigFormat.latestVersion, valPk)); + + for (int ck = 0; ck < 50; ck++) + { + String valCk = Integer.toString(ck); + + QueryProcessor.executeInternal(String.format("INSERT INTO legacy_tables.legacy_%s_clust (pk, ck, val) VALUES ('%s', '%s', '%s')", + BigFormat.latestVersion, valPk, valCk + longString, randomString)); + + QueryProcessor.executeInternal(String.format("UPDATE legacy_tables.legacy_%s_clust_counter SET val = val + 1 WHERE pk = '%s' AND ck='%s'", + BigFormat.latestVersion, valPk, valCk + longString)); + + } + } + + StorageService.instance.forceKeyspaceFlush("legacy_tables"); + + File ksDir = new File(LEGACY_SSTABLE_ROOT, String.format("%s/legacy_tables", BigFormat.latestVersion)); + ksDir.mkdirs(); + copySstablesFromTestData(String.format("legacy_%s_simple", BigFormat.latestVersion), ksDir); + copySstablesFromTestData(String.format("legacy_%s_simple_counter", BigFormat.latestVersion), ksDir); + copySstablesFromTestData(String.format("legacy_%s_clust", BigFormat.latestVersion), ksDir); + copySstablesFromTestData(String.format("legacy_%s_clust_counter", BigFormat.latestVersion), ksDir); + } + + private void copySstablesFromTestData(String table, File ksDir) throws IOException + { + File cfDir = new File(ksDir, table); + cfDir.mkdir(); + + for (File srcDir : Keyspace.open("legacy_tables").getColumnFamilyStore(table).getDirectories().getCFDirectories()) + { + for (File file : srcDir.listFiles()) + { + copyFile(cfDir, file); + } + } + } + + private static void copySstablesToTestData(String legacyVersion, String table, File cfDir) throws IOException + { + for (File file : new File(LEGACY_SSTABLE_ROOT, String.format("%s/legacy_tables/%s", legacyVersion, table)).listFiles()) + { + copyFile(cfDir, file); + } + } + + private static void copyFile(File cfDir, File file) throws IOException + { + byte[] buf = new byte[65536]; + if (file.isFile()) + { + File target = new File(cfDir, file.getName()); + int rd; + FileInputStream is = new FileInputStream(file); + FileOutputStream os = new FileOutputStream(target); + while ((rd = is.read(buf)) >= 0) + os.write(buf, 0, rd); + } + } } diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java b/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java index 7826317cca..fcd2d71916 100644 --- a/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java +++ b/test/unit/org/apache/cassandra/io/sstable/SSTableUtils.java @@ -76,7 +76,7 @@ public class SSTableUtils File cfDir = new File(tempdir, keyspaceName + File.separator + cfname); cfDir.mkdirs(); cfDir.deleteOnExit(); - File datafile = new File(new Descriptor(cfDir, keyspaceName, cfname, generation).filenameFor("Data.db")); + File datafile = new File(new Descriptor(cfDir, keyspaceName, cfname, generation).filenameFor(Component.DATA)); if (!datafile.createNewFile()) throw new IOException("unable to create file " + datafile); datafile.deleteOnExit(); diff --git a/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java b/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java index 0898515cde..4c108824ce 100644 --- a/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java @@ -24,9 +24,7 @@ import java.io.IOException; import java.util.Collections; import java.util.EnumSet; import java.util.Map; -import java.util.Set; -import com.google.common.collect.Sets; import org.junit.Test; import org.apache.cassandra.SchemaLoader; @@ -36,10 +34,10 @@ import org.apache.cassandra.db.commitlog.ReplayPosition; import org.apache.cassandra.dht.RandomPartitioner; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.io.util.BufferedDataOutputStreamPlus; import org.apache.cassandra.io.util.DataOutputStreamPlus; import org.apache.cassandra.io.util.RandomAccessReader; -import org.apache.cassandra.utils.EstimatedHistogram; import static org.junit.Assert.assertEquals; @@ -64,7 +62,7 @@ public class MetadataSerializerTest File statsFile = File.createTempFile(Component.STATS.name, null); try (DataOutputStreamPlus out = new BufferedDataOutputStreamPlus(new FileOutputStream(statsFile))) { - serializer.serialize(originalMetadata, out); + serializer.serialize(originalMetadata, out, BigFormat.latestVersion); } Descriptor desc = new Descriptor( statsFile.getParentFile(), "", "", 0);