diff --git a/CHANGES.txt b/CHANGES.txt
index 269338886a..8c2ac9cde5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,6 +6,7 @@ Merged from 3.11:
* Nodetool garbagecollect should retain SSTableLevel for LCS (CASSANDRA-16634)
* Ignore stale acks received in the shadow round (CASSANDRA-16588)
Merged from 3.0:
+ * Prevent loss of commit log data when moving sstables between nodes (CASSANDRA-16619)
* Fix materialized view builders inserting truncated data (CASSANDRA-16567)
4.0-rc1
diff --git a/src/java/org/apache/cassandra/db/SystemKeyspace.java b/src/java/org/apache/cassandra/db/SystemKeyspace.java
index 25078b87a5..cbb708465c 100644
--- a/src/java/org/apache/cassandra/db/SystemKeyspace.java
+++ b/src/java/org/apache/cassandra/db/SystemKeyspace.java
@@ -1101,8 +1101,7 @@ public final class SystemKeyspace
}
/**
- * Read the host ID from the system keyspace, creating (and storing) one if
- * none exists.
+ * Read the host ID from the system keyspace.
*/
public static UUID getLocalHostId()
{
@@ -1110,11 +1109,24 @@ public final class SystemKeyspace
UntypedResultSet result = executeInternal(format(req, LOCAL, LOCAL));
// Look up the Host UUID (return it if found)
- if (!result.isEmpty() && result.one().has("host_id"))
+ if (result != null && !result.isEmpty() && result.one().has("host_id"))
return result.one().getUUID("host_id");
+ return null;
+ }
+
+ /**
+ * Read the host ID from the system keyspace, creating (and storing) one if
+ * none exists.
+ */
+ public static synchronized UUID getOrInitializeLocalHostId()
+ {
+ UUID hostId = getLocalHostId();
+ if (hostId != null)
+ return hostId;
+
// ID not found, generate a new one, persist, and then return it.
- UUID hostId = UUID.randomUUID();
+ hostId = UUID.randomUUID();
logger.warn("No host ID found, created {} (Note: This should happen exactly once per node).", hostId);
return setLocalHostId(hostId);
}
@@ -1122,7 +1134,7 @@ public final class SystemKeyspace
/**
* Sets the local host ID explicitly. Should only be called outside of SystemTable when replacing a node.
*/
- public static UUID setLocalHostId(UUID hostId)
+ public static synchronized UUID setLocalHostId(UUID hostId)
{
String req = "INSERT INTO system.%s (key, host_id) VALUES ('%s', ?)";
executeInternal(format(req, LOCAL, LOCAL), hostId);
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLog.java b/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
index 1492ccf187..7670c5e1a1 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
@@ -44,7 +44,6 @@ import org.apache.cassandra.schema.CompressionParams;
import org.apache.cassandra.schema.TableId;
import org.apache.cassandra.security.EncryptionContext;
import org.apache.cassandra.service.StorageService;
-import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.MBeanWrapper;
@@ -190,18 +189,23 @@ public class CommitLog implements CommitLogMBean
*/
public int recoverFiles(File... clogs) throws IOException
{
- CommitLogReplayer replayer = CommitLogReplayer.construct(this);
+ CommitLogReplayer replayer = CommitLogReplayer.construct(this, getLocalHostId());
replayer.replayFiles(clogs);
return replayer.blockForWrites();
}
public void recoverPath(String path) throws IOException
{
- CommitLogReplayer replayer = CommitLogReplayer.construct(this);
+ CommitLogReplayer replayer = CommitLogReplayer.construct(this, getLocalHostId());
replayer.replayPath(new File(path), false);
replayer.blockForWrites();
}
+ private static UUID getLocalHostId()
+ {
+ return Optional.ofNullable(StorageService.instance.getLocalHostUUID()).orElseGet(SystemKeyspace::getLocalHostId);
+ }
+
/**
* Perform recovery on a single commit log. Kept w/sub-optimal name due to coupling w/MBean / JMX
*/
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index aabdb9a135..39777ec46c 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -51,6 +51,7 @@ import org.apache.cassandra.schema.Schema;
import org.apache.cassandra.schema.SchemaConstants;
import org.apache.cassandra.schema.TableId;
import org.apache.cassandra.schema.TableMetadataRef;
+import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.WrappedRunnable;
@@ -99,7 +100,7 @@ public class CommitLogReplayer implements CommitLogReadHandler
this.commitLogReader = new CommitLogReader();
}
- public static CommitLogReplayer construct(CommitLog commitLog)
+ public static CommitLogReplayer construct(CommitLog commitLog, UUID localHostId)
{
// compute per-CF and global replay intervals
Map> cfPersisted = new HashMap<>();
@@ -129,7 +130,7 @@ public class CommitLogReplayer implements CommitLogReadHandler
}
}
- IntervalSet filter = persistedIntervals(cfs.getLiveSSTables(), truncatedAt);
+ IntervalSet filter = persistedIntervals(cfs.getLiveSSTables(), truncatedAt, localHostId);
cfPersisted.put(cfs.metadata.id, filter);
}
CommitLogPosition globalPosition = firstNotCovered(cfPersisted.values());
@@ -285,11 +286,25 @@ public class CommitLogReplayer implements CommitLogReadHandler
* A set of known safe-to-discard commit log replay positions, based on
* the range covered by on disk sstables and those prior to the most recent truncation record
*/
- public static IntervalSet persistedIntervals(Iterable onDisk, CommitLogPosition truncatedAt)
+ public static IntervalSet persistedIntervals(Iterable onDisk,
+ CommitLogPosition truncatedAt,
+ UUID localhostId)
{
IntervalSet.Builder builder = new IntervalSet.Builder<>();
+ List skippedSSTables = new ArrayList<>();
for (SSTableReader reader : onDisk)
- builder.addAll(reader.getSSTableMetadata().commitLogIntervals);
+ {
+ UUID originatingHostId = reader.getSSTableMetadata().originatingHostId;
+ if (originatingHostId != null && originatingHostId.equals(localhostId))
+ builder.addAll(reader.getSSTableMetadata().commitLogIntervals);
+ else
+ skippedSSTables.add(reader.getFilename());
+ }
+
+ if (!skippedSSTables.isEmpty()) {
+ logger.warn("Origin of {} sstables is unknown or doesn't match the local node; commitLogIntervals for them were ignored", skippedSSTables.size());
+ logger.debug("Ignored commitLogIntervals from the following sstables: {}", skippedSSTables);
+ }
if (truncatedAt != null)
builder.add(CommitLogPosition.NONE, truncatedAt);
diff --git a/src/java/org/apache/cassandra/db/view/ViewBuilder.java b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
index 67172973ee..a88ffbecc3 100644
--- a/src/java/org/apache/cassandra/db/view/ViewBuilder.java
+++ b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
@@ -67,7 +67,7 @@ class ViewBuilder
private final ColumnFamilyStore baseCfs;
private final View view;
private final String ksName;
- private final UUID localHostId = SystemKeyspace.getLocalHostId();
+ private final UUID localHostId = SystemKeyspace.getOrInitializeLocalHostId();
private final Set> builtRanges = Sets.newConcurrentHashSet();
private final Map, Pair> pendingRanges = Maps.newConcurrentMap();
private final Set tasks = Sets.newConcurrentHashSet();
diff --git a/src/java/org/apache/cassandra/io/sstable/format/Version.java b/src/java/org/apache/cassandra/io/sstable/format/Version.java
index 501ae85149..aa41b149c2 100644
--- a/src/java/org/apache/cassandra/io/sstable/format/Version.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/Version.java
@@ -115,4 +115,6 @@ public abstract class Version
{
return version != null ? version.hashCode() : 0;
}
+
+ public abstract boolean hasOriginatingHostId();
}
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 6f3ba39392..ff0d791667 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
@@ -112,7 +112,7 @@ public class BigFormat implements SSTableFormat
// we always incremented the major version.
static class BigVersion extends Version
{
- public static final String current_version = "na";
+ public static final String current_version = "nb";
public static final String earliest_supported_version = "ma";
// ma (3.0.0): swap bf hash order
@@ -120,8 +120,10 @@ public class BigFormat implements SSTableFormat
// mb (3.0.7, 3.7): commit log lower bound included
// mc (3.0.8, 3.9): commit log intervals included
// md (3.0.18, 3.11.4): corrected sstable min/max clustering
+ // me (3.0.25, 3.11.11): added hostId of the node from which the sstable originated
- // na (4.0.0): uncompressed chunks, pending repair session, isTransient, checksummed sstable metadata file, new Bloomfilter format
+ // na (4.0-rc1): uncompressed chunks, pending repair session, isTransient, checksummed sstable metadata file, new Bloomfilter format
+ // nb (4.0.0): originating host id
//
// NOTE: when adding a new version, please add that to LegacySSTableTest, too.
@@ -130,6 +132,7 @@ public class BigFormat implements SSTableFormat
private final boolean hasCommitLogLowerBound;
private final boolean hasCommitLogIntervals;
private final boolean hasAccurateMinMax;
+ private final boolean hasOriginatingHostId;
public final boolean hasMaxCompressedLength;
private final boolean hasPendingRepair;
private final boolean hasMetadataChecksum;
@@ -151,6 +154,7 @@ public class BigFormat implements SSTableFormat
hasCommitLogLowerBound = version.compareTo("mb") >= 0;
hasCommitLogIntervals = version.compareTo("mc") >= 0;
hasAccurateMinMax = version.compareTo("md") >= 0;
+ hasOriginatingHostId = version.matches("(m[e-z])|(n[b-z])");
hasMaxCompressedLength = version.compareTo("na") >= 0;
hasPendingRepair = version.compareTo("na") >= 0;
hasIsTransient = version.compareTo("na") >= 0;
@@ -216,6 +220,11 @@ public class BigFormat implements SSTableFormat
return isCompatible() && version.charAt(0) == current_version.charAt(0);
}
+ public boolean hasOriginatingHostId()
+ {
+ return hasOriginatingHostId;
+ }
+
@Override
public boolean hasMaxCompressedLength()
{
diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataCollector.java b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataCollector.java
index 0d49ea1ad8..be824efa45 100755
--- a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataCollector.java
+++ b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataCollector.java
@@ -19,7 +19,6 @@ package org.apache.cassandra.io.sstable.metadata;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.EnumMap;
import java.util.List;
@@ -27,20 +26,18 @@ import java.util.Map;
import java.util.UUID;
import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
import com.clearspring.analytics.stream.cardinality.HyperLogLogPlus;
import com.clearspring.analytics.stream.cardinality.ICardinality;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.commitlog.CommitLogPosition;
import org.apache.cassandra.db.commitlog.IntervalSet;
-import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.partitions.PartitionStatisticsCollector;
import org.apache.cassandra.db.rows.Cell;
import org.apache.cassandra.io.sstable.SSTable;
import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.service.ActiveRepairService;
-import org.apache.cassandra.utils.ByteBufferUtil;
+import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.EstimatedHistogram;
import org.apache.cassandra.utils.MurmurHash;
import org.apache.cassandra.utils.streamhist.TombstoneHistogram;
@@ -89,6 +86,7 @@ public class MetadataCollector implements PartitionStatisticsCollector
-1,
-1,
null,
+ null,
false);
}
@@ -117,10 +115,17 @@ public class MetadataCollector implements PartitionStatisticsCollector
protected ICardinality cardinality = new HyperLogLogPlus(13, 25);
private final ClusteringComparator comparator;
+ private final UUID originatingHostId;
+
public MetadataCollector(ClusteringComparator comparator)
{
- this.comparator = comparator;
+ this(comparator, StorageService.instance.getLocalHostUUID());
+ }
+ public MetadataCollector(ClusteringComparator comparator, UUID originatingHostId)
+ {
+ this.comparator = comparator;
+ this.originatingHostId = originatingHostId;
}
public MetadataCollector(Iterable sstables, ClusteringComparator comparator, int level)
@@ -128,11 +133,14 @@ public class MetadataCollector implements PartitionStatisticsCollector
this(comparator);
IntervalSet.Builder intervals = new IntervalSet.Builder<>();
- for (SSTableReader sstable : sstables)
+ if (originatingHostId != null)
{
- intervals.addAll(sstable.getSSTableMetadata().commitLogIntervals);
+ for (SSTableReader sstable : sstables)
+ {
+ if (originatingHostId.equals(sstable.getSSTableMetadata().originatingHostId))
+ intervals.addAll(sstable.getSSTableMetadata().commitLogIntervals);
+ }
}
-
commitLogIntervals(intervals.build());
sstableLevel(level);
}
@@ -265,6 +273,7 @@ public class MetadataCollector implements PartitionStatisticsCollector
repairedAt,
totalColumnsSet,
totalRows,
+ originatingHostId,
pendingRepair,
isTransient));
components.put(MetadataType.COMPACTION, new CompactionMetadata(cardinality));
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 e985f40de8..8ae517d6c2 100755
--- a/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java
+++ b/src/java/org/apache/cassandra/io/sstable/metadata/StatsMetadata.java
@@ -36,10 +36,12 @@ import org.apache.cassandra.io.ISerializer;
import org.apache.cassandra.io.sstable.format.Version;
import org.apache.cassandra.io.util.DataInputPlus;
import org.apache.cassandra.io.util.DataOutputPlus;
+import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.EstimatedHistogram;
import org.apache.cassandra.utils.streamhist.TombstoneHistogram;
import org.apache.cassandra.utils.UUIDSerializer;
+import org.apache.cassandra.utils.UUIDSerializer;
/**
* SSTable metadata that always stay on heap.
@@ -67,6 +69,7 @@ public class StatsMetadata extends MetadataComponent
public final long repairedAt;
public final long totalColumnsSet;
public final long totalRows;
+ public final UUID originatingHostId;
public final UUID pendingRepair;
public final boolean isTransient;
// just holds the current encoding stats to avoid allocating - it is not serialized
@@ -90,6 +93,7 @@ public class StatsMetadata extends MetadataComponent
long repairedAt,
long totalColumnsSet,
long totalRows,
+ UUID originatingHostId,
UUID pendingRepair,
boolean isTransient)
{
@@ -111,6 +115,7 @@ public class StatsMetadata extends MetadataComponent
this.repairedAt = repairedAt;
this.totalColumnsSet = totalColumnsSet;
this.totalRows = totalRows;
+ this.originatingHostId = originatingHostId;
this.pendingRepair = pendingRepair;
this.isTransient = isTransient;
this.encodingStats = new EncodingStats(minTimestamp, minLocalDeletionTime, minTTL);
@@ -165,6 +170,7 @@ public class StatsMetadata extends MetadataComponent
repairedAt,
totalColumnsSet,
totalRows,
+ originatingHostId,
pendingRepair,
isTransient);
}
@@ -189,6 +195,7 @@ public class StatsMetadata extends MetadataComponent
newRepairedAt,
totalColumnsSet,
totalRows,
+ originatingHostId,
newPendingRepair,
newIsTransient);
}
@@ -219,6 +226,7 @@ public class StatsMetadata extends MetadataComponent
.append(hasLegacyCounterShards, that.hasLegacyCounterShards)
.append(totalColumnsSet, that.totalColumnsSet)
.append(totalRows, that.totalRows)
+ .append(originatingHostId, that.originatingHostId)
.append(pendingRepair, that.pendingRepair)
.build();
}
@@ -245,6 +253,7 @@ public class StatsMetadata extends MetadataComponent
.append(hasLegacyCounterShards)
.append(totalColumnsSet)
.append(totalRows)
+ .append(originatingHostId)
.append(pendingRepair)
.build();
}
@@ -276,6 +285,12 @@ public class StatsMetadata extends MetadataComponent
size += CommitLogPosition.serializer.serializedSize(component.commitLogIntervals.lowerBound().orElse(CommitLogPosition.NONE));
if (version.hasCommitLogIntervals())
size += commitLogPositionSetSerializer.serializedSize(component.commitLogIntervals);
+ if (version.hasOriginatingHostId())
+ {
+ size += 1; // boolean: is originatingHostId present
+ if (component.originatingHostId != null)
+ size += UUIDSerializer.serializer.serializedSize(component.originatingHostId, version.correspondingMessagingVersion());
+ }
if (version.hasPendingRepair())
{
@@ -322,6 +337,18 @@ public class StatsMetadata extends MetadataComponent
CommitLogPosition.serializer.serialize(component.commitLogIntervals.lowerBound().orElse(CommitLogPosition.NONE), out);
if (version.hasCommitLogIntervals())
commitLogPositionSetSerializer.serialize(component.commitLogIntervals, out);
+ if (version.hasOriginatingHostId())
+ {
+ if (component.originatingHostId != null)
+ {
+ out.writeByte(1);
+ UUIDSerializer.serializer.serialize(component.originatingHostId, out, 0);
+ }
+ else
+ {
+ out.writeByte(0);
+ }
+ }
if (version.hasPendingRepair())
{
@@ -412,6 +439,10 @@ public class StatsMetadata extends MetadataComponent
else
commitLogIntervals = new IntervalSet(commitLogLowerBound, commitLogUpperBound);
+ UUID originatingHostId = null;
+ if (version.hasOriginatingHostId() && in.readByte() != 0)
+ originatingHostId = UUIDSerializer.serializer.deserialize(in, 0);
+
UUID pendingRepair = null;
if (version.hasPendingRepair() && in.readByte() != 0)
{
@@ -438,6 +469,7 @@ public class StatsMetadata extends MetadataComponent
repairedAt,
totalColumnsSet,
totalRows,
+ originatingHostId,
pendingRepair,
isTransient);
}
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 313949dace..28c5e3fc9f 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -596,7 +596,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
throw new RuntimeException(e);
}
- UUID localHostId = SystemKeyspace.getLocalHostId();
+ UUID localHostId = SystemKeyspace.getOrInitializeLocalHostId();
if (isReplacingSameAddress())
{
@@ -904,7 +904,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
MessagingService.instance().listen();
- UUID localHostId = SystemKeyspace.getLocalHostId();
+ UUID localHostId = SystemKeyspace.getOrInitializeLocalHostId();
if (replacing)
{
diff --git a/src/java/org/apache/cassandra/utils/CounterId.java b/src/java/org/apache/cassandra/utils/CounterId.java
index 690d4aab4a..b138aac71b 100644
--- a/src/java/org/apache/cassandra/utils/CounterId.java
+++ b/src/java/org/apache/cassandra/utils/CounterId.java
@@ -136,7 +136,7 @@ public class CounterId implements Comparable
LocalCounterIdHolder()
{
- current = new AtomicReference<>(wrap(ByteBufferUtil.bytes(SystemKeyspace.getLocalHostId())));
+ current = new AtomicReference<>(wrap(ByteBufferUtil.bytes(SystemKeyspace.getOrInitializeLocalHostId())));
}
CounterId get()
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..48323aad1d
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Data.db
new file mode 100644
index 0000000000..64d6d821a6
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..c2e6e7c256
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+3931972325
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Index.db
new file mode 100644
index 0000000000..d50fdeb4e2
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Statistics.db
new file mode 100644
index 0000000000..0ae8679952
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..559bd3fc1c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Data.db
new file mode 100644
index 0000000000..34f4233f8d
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..7a8fdd4a60
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+1855259300
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Index.db
new file mode 100644
index 0000000000..e04d3dbda9
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Statistics.db
new file mode 100644
index 0000000000..db71cffaeb
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_compact/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..c835380319
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Data.db
new file mode 100644
index 0000000000..e41815148c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..013e4a58e2
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+2111053471
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Index.db
new file mode 100644
index 0000000000..c981a22603
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Statistics.db
new file mode 100644
index 0000000000..2c00cdc60c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..de19644352
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Data.db
new file mode 100644
index 0000000000..b83c17e2a1
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..8890fcdaeb
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+3412778007
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Index.db
new file mode 100644
index 0000000000..041117e33b
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Statistics.db
new file mode 100644
index 0000000000..17e6569b40
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_clust_counter_compact/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..0b7faea4a8
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Data.db
new file mode 100644
index 0000000000..b15f54051f
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..4ce1b077ba
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+1466506395
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Index.db
new file mode 100644
index 0000000000..b3094bffba
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Statistics.db
new file mode 100644
index 0000000000..96ca948264
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..adb7fc4579
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Data.db
new file mode 100644
index 0000000000..4b575a1fde
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..7dbd2b233e
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+1071552074
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Index.db
new file mode 100644
index 0000000000..56f29df1cb
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Statistics.db
new file mode 100644
index 0000000000..a91c3e7690
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_compact/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..0d9c077a99
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Data.db
new file mode 100644
index 0000000000..9911d70b0f
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..b53f686c57
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+662242669
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Index.db
new file mode 100644
index 0000000000..59e65cab85
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Statistics.db
new file mode 100644
index 0000000000..ea7335daa1
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-CompressionInfo.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..56c95a8a36
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Data.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Data.db
new file mode 100644
index 0000000000..8e8af2486e
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Digest.crc32 b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Digest.crc32
new file mode 100644
index 0000000000..b47ee6aa19
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Digest.crc32
@@ -0,0 +1 @@
+1788587171
\ No newline at end of file
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Filter.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Index.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Index.db
new file mode 100644
index 0000000000..d094f73e21
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Statistics.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Statistics.db
new file mode 100644
index 0000000000..07fd92273b
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Summary.db b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-TOC.txt b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-TOC.txt
new file mode 100644
index 0000000000..0b0e005f3d
--- /dev/null
+++ b/test/data/legacy-sstables/md/legacy_tables/legacy_md_simple_counter_compact/md-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Summary.db
+Statistics.db
+CompressionInfo.db
+TOC.txt
+Index.db
+Filter.db
+Data.db
+Digest.crc32
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..ca0c7ced71
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Data.db
new file mode 100644
index 0000000000..45a270963d
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..909bcc7ab6
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+838423079
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Index.db
new file mode 100644
index 0000000000..8b23beed90
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Statistics.db
new file mode 100644
index 0000000000..fc5e02c5c4
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..7ade66bdef
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Data.db
new file mode 100644
index 0000000000..32bfc39722
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..368bee2ce4
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+1309320020
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Index.db
new file mode 100644
index 0000000000..0652ab24be
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Statistics.db
new file mode 100644
index 0000000000..778011f14d
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_compact/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..1af4db702e
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Data.db
new file mode 100644
index 0000000000..7971ad3665
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..15b0625da6
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+703648555
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Index.db
new file mode 100644
index 0000000000..a8fdb3cb11
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Statistics.db
new file mode 100644
index 0000000000..79d9233925
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..cb850a4f26
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Data.db
new file mode 100644
index 0000000000..2c78db6233
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..d4fe87ef49
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+2583954533
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Index.db
new file mode 100644
index 0000000000..4abc15484b
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Statistics.db
new file mode 100644
index 0000000000..952db1ed93
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_clust_counter_compact/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..0b7faea4a8
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Data.db
new file mode 100644
index 0000000000..0a215a41d2
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..a5c6dd47f1
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+1286741344
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Index.db
new file mode 100644
index 0000000000..b3094bffba
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Statistics.db
new file mode 100644
index 0000000000..8363ea37e9
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..adb7fc4579
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Data.db
new file mode 100644
index 0000000000..fb4d64d79a
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..0f802034f3
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+2684888693
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Index.db
new file mode 100644
index 0000000000..56f29df1cb
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Statistics.db
new file mode 100644
index 0000000000..ea8dab517d
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_compact/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..0d9c077a99
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Data.db
new file mode 100644
index 0000000000..dccb83f1eb
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..f7b61bf995
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+3429587850
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Index.db
new file mode 100644
index 0000000000..59e65cab85
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Statistics.db
new file mode 100644
index 0000000000..849116bf0b
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-CompressionInfo.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..56c95a8a36
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Data.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Data.db
new file mode 100644
index 0000000000..6f178741fe
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Digest.crc32 b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Digest.crc32
new file mode 100644
index 0000000000..c298142400
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Digest.crc32
@@ -0,0 +1 @@
+2519481430
\ No newline at end of file
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Filter.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Filter.db
new file mode 100644
index 0000000000..2e1d5d29ca
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Index.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Index.db
new file mode 100644
index 0000000000..d094f73e21
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Statistics.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Statistics.db
new file mode 100644
index 0000000000..e41408e315
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Summary.db b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-TOC.txt b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-TOC.txt
new file mode 100644
index 0000000000..1f59f45ec2
--- /dev/null
+++ b/test/data/legacy-sstables/me/legacy_tables/legacy_me_simple_counter_compact/me-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Statistics.db
+CompressionInfo.db
+Index.db
+Digest.crc32
+Filter.db
+Summary.db
+TOC.txt
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-CompressionInfo.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..041505a60d
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Data.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Data.db
new file mode 100644
index 0000000000..4b38f88f05
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Digest.crc32 b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Digest.crc32
new file mode 100644
index 0000000000..bff5ff2f83
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Digest.crc32
@@ -0,0 +1 @@
+1209240663
\ No newline at end of file
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Filter.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Filter.db
new file mode 100644
index 0000000000..8868e5c180
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Index.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Index.db
new file mode 100644
index 0000000000..8b23beed90
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Statistics.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Statistics.db
new file mode 100644
index 0000000000..29275fd7dc
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Summary.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-TOC.txt b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-TOC.txt
new file mode 100644
index 0000000000..6f0096585d
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust/nb-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Filter.db
+Statistics.db
+TOC.txt
+Digest.crc32
+CompressionInfo.db
+Index.db
+Summary.db
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-CompressionInfo.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..a71146b1a5
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Data.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Data.db
new file mode 100644
index 0000000000..b09fd6b903
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Digest.crc32 b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Digest.crc32
new file mode 100644
index 0000000000..c0aa6a7c70
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Digest.crc32
@@ -0,0 +1 @@
+38943571
\ No newline at end of file
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Filter.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Filter.db
new file mode 100644
index 0000000000..8868e5c180
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Index.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Index.db
new file mode 100644
index 0000000000..a8fdb3cb11
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Statistics.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Statistics.db
new file mode 100644
index 0000000000..269a848e7c
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Summary.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-TOC.txt b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-TOC.txt
new file mode 100644
index 0000000000..6f0096585d
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_clust_counter/nb-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Filter.db
+Statistics.db
+TOC.txt
+Digest.crc32
+CompressionInfo.db
+Index.db
+Summary.db
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-CompressionInfo.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..ef683177e8
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Data.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Data.db
new file mode 100644
index 0000000000..45f29552c2
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Digest.crc32 b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Digest.crc32
new file mode 100644
index 0000000000..4260ea6e6b
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Digest.crc32
@@ -0,0 +1 @@
+2668536242
\ No newline at end of file
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Filter.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Filter.db
new file mode 100644
index 0000000000..8868e5c180
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Index.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Index.db
new file mode 100644
index 0000000000..b3094bffba
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Statistics.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Statistics.db
new file mode 100644
index 0000000000..c26348b31a
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Summary.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-TOC.txt b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-TOC.txt
new file mode 100644
index 0000000000..6f0096585d
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple/nb-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Filter.db
+Statistics.db
+TOC.txt
+Digest.crc32
+CompressionInfo.db
+Index.db
+Summary.db
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-CompressionInfo.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-CompressionInfo.db
new file mode 100644
index 0000000000..1db9aa06b3
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-CompressionInfo.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Data.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Data.db
new file mode 100644
index 0000000000..f4a5435886
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Data.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Digest.crc32 b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Digest.crc32
new file mode 100644
index 0000000000..43fba4e1d3
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Digest.crc32
@@ -0,0 +1 @@
+3976252352
\ No newline at end of file
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Filter.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Filter.db
new file mode 100644
index 0000000000..8868e5c180
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Filter.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Index.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Index.db
new file mode 100644
index 0000000000..59e65cab85
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Index.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Statistics.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Statistics.db
new file mode 100644
index 0000000000..3dd2896e70
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Statistics.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Summary.db b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Summary.db
new file mode 100644
index 0000000000..9b24e0450c
Binary files /dev/null and b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-Summary.db differ
diff --git a/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-TOC.txt b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-TOC.txt
new file mode 100644
index 0000000000..6f0096585d
--- /dev/null
+++ b/test/data/legacy-sstables/nb/legacy_tables/legacy_nb_simple_counter/nb-1-big-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+Filter.db
+Statistics.db
+TOC.txt
+Digest.crc32
+CompressionInfo.db
+Index.db
+Summary.db
diff --git a/test/distributed/org/apache/cassandra/distributed/test/metrics/StreamingMetricsTest.java b/test/distributed/org/apache/cassandra/distributed/test/metrics/StreamingMetricsTest.java
index a4e4adce25..07614140a3 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/metrics/StreamingMetricsTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/metrics/StreamingMetricsTest.java
@@ -20,15 +20,19 @@ package org.apache.cassandra.distributed.test.metrics;
import java.net.InetSocketAddress;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Stream;
+import org.apache.cassandra.db.ColumnFamilyStore;
import org.junit.Test;
+import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.ConsistencyLevel;
import org.apache.cassandra.distributed.test.TestBaseImpl;
import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.metrics.StreamingMetrics;
+import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.assertj.core.api.Assertions.assertThat;
import static org.apache.cassandra.distributed.api.Feature.NETWORK;
@@ -140,15 +144,20 @@ public class StreamingMetricsTest extends TestBaseImpl
testMetricsWithStreamingToTwoNodes(true);
}
+ private int getNumberOfSSTables(Cluster cluster, int node) {
+ return cluster.get(node).callOnInstance(() -> ColumnFamilyStore.getIfExists(KEYSPACE, "cf").getLiveSSTables().size());
+ }
+
public void testMetricsWithStreamingToTwoNodes(boolean useRepair) throws Exception
{
try(Cluster cluster = init(Cluster.build(3)
.withDataDirCount(1)
- .withConfig(config -> config.with(NETWORK)
+ .withConfig(config -> config.with(NETWORK, GOSSIP)
.set("stream_entire_sstables", false)
.set("hinted_handoff_enabled", false))
.start(), 2))
{
+ Stream.of(1,2,3).map(cluster::get).forEach(i -> i.runOnInstance(() -> SystemKeyspace.forceBlockingFlush(SystemKeyspace.LOCAL)));
cluster.schemaChange(String.format("CREATE TABLE %s.cf (k text, c1 text, c2 text, PRIMARY KEY (k)) WITH compaction = {'class': '%s', 'enabled': 'false'}", KEYSPACE, "LeveledCompactionStrategy"));
final int rowsPerFile = 500;
@@ -208,6 +217,8 @@ public class StreamingMetricsTest extends TestBaseImpl
int sstablesFrom3To2;
int sstablesFrom2To3;
+ assertThat(sstablesInitiallyOnNode2).isEqualTo(getNumberOfSSTables(cluster, 2));
+ assertThat(sstablesInitiallyOnNode3).isEqualTo(getNumberOfSSTables(cluster, 3));
if (useRepair)
{
cluster.get(3).nodetool("repair", "--full");
diff --git a/test/unit/org/apache/cassandra/db/RecoveryManagerFlushedTest.java b/test/unit/org/apache/cassandra/db/RecoveryManagerFlushedTest.java
index fc34942340..d3954394f0 100644
--- a/test/unit/org/apache/cassandra/db/RecoveryManagerFlushedTest.java
+++ b/test/unit/org/apache/cassandra/db/RecoveryManagerFlushedTest.java
@@ -22,6 +22,7 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.UUID;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -47,6 +48,7 @@ import org.apache.cassandra.io.compress.SnappyCompressor;
import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.security.EncryptionContext;
import org.apache.cassandra.security.EncryptionContextGenerator;
+import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.FBUtilities;
@RunWith(Parameterized.class)
@@ -86,6 +88,8 @@ public class RecoveryManagerFlushedTest
public static void defineSchema() throws ConfigurationException
{
SchemaLoader.prepareServer();
+ StorageService.instance.getTokenMetadata().updateHostId(UUID.randomUUID(), FBUtilities.getBroadcastAddressAndPort());
+
SchemaLoader.createKeyspace(KEYSPACE1,
KeyspaceParams.simple(1),
SchemaLoader.standardCFMD(KEYSPACE1, CF_STANDARD1),
diff --git a/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java b/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java
index 0a6d551af6..09cab7fe08 100644
--- a/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java
+++ b/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java
@@ -87,8 +87,8 @@ public class SystemKeyspaceTest
@Test
public void testLocalHostID()
{
- UUID firstId = SystemKeyspace.getLocalHostId();
- UUID secondId = SystemKeyspace.getLocalHostId();
+ UUID firstId = SystemKeyspace.getOrInitializeLocalHostId();
+ UUID secondId = SystemKeyspace.getOrInitializeLocalHostId();
assert firstId.equals(secondId) : String.format("%s != %s%n", firstId.toString(), secondId.toString());
}
diff --git a/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java b/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java
index d10b16b9be..da3b83ee6c 100644
--- a/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java
@@ -63,6 +63,8 @@ import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.security.EncryptionContext;
import org.apache.cassandra.security.EncryptionContextGenerator;
+import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Hex;
import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.KillerForTests;
@@ -122,6 +124,7 @@ public abstract class CommitLogTest
KeyspaceParams.DEFAULT_LOCAL_DURABLE_WRITES = false;
SchemaLoader.prepareServer();
+ StorageService.instance.getTokenMetadata().updateHostId(UUID.randomUUID(), FBUtilities.getBroadcastAddressAndPort());
TableMetadata.Builder custom =
TableMetadata.builder(KEYSPACE1, CUSTOM1)
diff --git a/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java b/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
index e4faa6353a..381edb8a7c 100644
--- a/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
+++ b/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
@@ -174,7 +174,7 @@ public class ShadowRoundTest
System.setProperty(Config.PROPERTY_PREFIX + "auto_bootstrap", "false");
try
{
- StorageService.instance.checkForEndpointCollision(SystemKeyspace.getLocalHostId(), SystemKeyspace.loadHostIds().keySet());
+ StorageService.instance.checkForEndpointCollision(SystemKeyspace.getOrInitializeLocalHostId(), SystemKeyspace.loadHostIds().keySet());
}
catch (Exception e)
{
@@ -210,7 +210,7 @@ public class ShadowRoundTest
System.setProperty(Config.PROPERTY_PREFIX + "auto_bootstrap", "false");
- StorageService.instance.checkForEndpointCollision(SystemKeyspace.getLocalHostId(), SystemKeyspace.loadHostIds().keySet());
+ StorageService.instance.checkForEndpointCollision(SystemKeyspace.getOrInitializeLocalHostId(), SystemKeyspace.loadHostIds().keySet());
System.clearProperty(Config.PROPERTY_PREFIX + "auto_bootstrap");
}
diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
index 940084f6f7..35046326a3 100644
--- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
@@ -102,7 +102,7 @@ public class LegacySSTableTest
* 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 = {"na", "mc", "mb", "ma"};
+ public static final String[] legacyVersions = {"nb", "na", "me", "md", "mc", "mb", "ma"};
// 1200 chars
static final String longString = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" +
@@ -612,7 +612,7 @@ public class LegacySSTableTest
* during development. I.e. remove the {@code @Ignore} annotation temporarily.
*
*/
- @Ignore
+// @Ignore
@Test
public void testGenerateSstables() throws Throwable
{
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 0ab3be6f05..79cf831628 100644
--- a/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/metadata/MetadataSerializerTest.java
@@ -20,6 +20,7 @@ package org.apache.cassandra.io.sstable.metadata;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.Map;
@@ -28,8 +29,6 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.apache.cassandra.SchemaLoader;
-import org.apache.cassandra.io.util.FileUtils;
-import org.apache.cassandra.schema.TableMetadata;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.SerializationHeader;
import org.apache.cassandra.db.commitlog.CommitLogPosition;
@@ -42,7 +41,10 @@ import org.apache.cassandra.io.sstable.format.Version;
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.FileUtils;
import org.apache.cassandra.io.util.RandomAccessReader;
+import org.apache.cassandra.schema.TableMetadata;
+import org.apache.cassandra.utils.Throwables;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -97,14 +99,14 @@ public class MetadataSerializerTest
{
// Deserialie and verify that the two histograms have had their overflow buckets cleared:
Map deserialized = serializer.deserialize(desc, in, EnumSet.allOf(MetadataType.class));
- StatsMetadata deserializedStats = (StatsMetadata)deserialized.get(MetadataType.STATS);
+ StatsMetadata deserializedStats = (StatsMetadata) deserialized.get(MetadataType.STATS);
assertFalse(deserializedStats.estimatedCellPerPartitionCount.isOverflowed());
assertFalse(deserializedStats.estimatedPartitionSize.isOverflowed());
}
}
public File serialize(Map metadata, MetadataSerializer serializer, Version version)
- throws IOException
+ throws IOException
{
// Serialize to tmp file
File statsFile = FileUtils.createTempFile(Component.STATS.name, null);
@@ -122,53 +124,46 @@ public class MetadataSerializerTest
TableMetadata cfm = SchemaLoader.standardCFMD("ks1", "cf1").build();
MetadataCollector collector = new MetadataCollector(cfm.comparator)
- .commitLogIntervals(new IntervalSet<>(cllb, club));
+ .commitLogIntervals(new IntervalSet<>(cllb, club));
String partitioner = RandomPartitioner.class.getCanonicalName();
double bfFpChance = 0.1;
return collector.finalizeMetadata(partitioner, bfFpChance, 0, null, false, SerializationHeader.make(cfm, Collections.emptyList()));
}
- @Test
- public void testMaReadMa() throws IOException
+ private void testVersions(String... versions) throws Throwable
{
- testOldReadsNew("ma", "ma");
+ Throwable t = null;
+ for (int oldIdx = 0; oldIdx < versions.length; oldIdx++)
+ {
+ for (int newIdx = oldIdx; newIdx < versions.length; newIdx++)
+ {
+ try
+ {
+ testOldReadsNew(versions[oldIdx], versions[newIdx]);
+ }
+ catch (Exception | AssertionError e)
+ {
+ t = Throwables.merge(t, new AssertionError("Failed to test " + versions[oldIdx] + " -> " + versions[newIdx], e));
+ }
+ }
+ }
+ if (t != null)
+ {
+ throw t;
+ }
}
@Test
- public void testMaReadMb() throws IOException
+ public void testMVersions() throws Throwable
{
- testOldReadsNew("ma", "mb");
+ testVersions("ma", "mb", "mc", "md", "me");
}
@Test
- public void testMaReadMc() throws IOException
+ public void testNVersions() throws Throwable
{
- testOldReadsNew("ma", "mc");
- }
-
- @Test
- public void testMbReadMb() throws IOException
- {
- testOldReadsNew("mb", "mb");
- }
-
- @Test
- public void testMbReadMc() throws IOException
- {
- testOldReadsNew("mb", "mc");
- }
-
- @Test
- public void testMcReadMc() throws IOException
- {
- testOldReadsNew("mc", "mc");
- }
-
- @Test
- public void testNaReadNa() throws IOException
- {
- testOldReadsNew("na", "na");
+ testVersions("na", "nb");
}
public void testOldReadsNew(String oldV, String newV) throws IOException
@@ -201,9 +196,14 @@ public class MetadataSerializerTest
@Test
public void pendingRepairCompatibility()
{
- Version mc = BigFormat.instance.getVersion("mc");
- assertFalse(mc.hasPendingRepair());
- Version na = BigFormat.instance.getVersion("na");
- assertTrue(na.hasPendingRepair());
+ Arrays.asList("ma", "mb", "mc", "md", "me").forEach(v -> assertFalse(BigFormat.instance.getVersion(v).hasPendingRepair()));
+ Arrays.asList("na", "nb").forEach(v -> assertTrue(BigFormat.instance.getVersion(v).hasPendingRepair()));
+ }
+
+ @Test
+ public void originatingHostCompatibility()
+ {
+ Arrays.asList("ma", "mb", "mc", "md", "na").forEach(v -> assertFalse(BigFormat.instance.getVersion(v).hasOriginatingHostId()));
+ Arrays.asList("me", "nb").forEach(v -> assertTrue(BigFormat.instance.getVersion(v).hasOriginatingHostId()));
}
}