From 68a47c10f8a99832fe7ccb3ab33ce51f634c56c7 Mon Sep 17 00:00:00 2001 From: Ariel Weisberg Date: Fri, 26 Sep 2025 14:49:26 -0700 Subject: [PATCH] Fix failing unit tests from witness merge Patch by Ariel Weisberg; Reviewed by Blake Eggleston for CASSANDRA-20934 Co-authored-by: Blake Eggleston --- .../cassandra/db/DiskBoundaryManager.java | 2 +- .../db/compaction/CompactionManager.java | 8 +-- .../compaction/CompactionStrategyManager.java | 2 +- .../db/compaction/PendingRepairManager.java | 1 + .../cassandra/schema/KeyspaceParams.java | 4 ++ .../cassandra/service/StorageService.java | 2 +- .../reads/range/RangeCommandIterator.java | 7 +- .../distributed/test/PreviewRepairTest.java | 2 +- .../LongLeveledCompactionStrategyTest.java | 5 +- .../cassandra/db/CleanupTransientTest.java | 13 ++-- .../db/compaction/AntiCompactionTest.java | 66 ------------------- .../CompactionStrategyManagerTest.java | 15 ++--- .../db/compaction/CompactionsBytemanTest.java | 2 +- .../io/sstable/LegacySSTableTest.java | 17 +---- .../cassandra/locator/SimpleStrategyTest.java | 8 +-- .../autorepair/SSTableRepairedAtTest.java | 2 +- .../consistent/PendingRepairStatTest.java | 2 +- .../service/BootstrapTransientTest.java | 3 +- .../WriteResponseHandlerTransientTest.java | 15 +---- 19 files changed, 42 insertions(+), 134 deletions(-) diff --git a/src/java/org/apache/cassandra/db/DiskBoundaryManager.java b/src/java/org/apache/cassandra/db/DiskBoundaryManager.java index 4aad348e4ac4..1b166fead054 100644 --- a/src/java/org/apache/cassandra/db/DiskBoundaryManager.java +++ b/src/java/org/apache/cassandra/db/DiskBoundaryManager.java @@ -183,7 +183,7 @@ private static List getDiskBoundaries(RangesAtEndpoint replic weightedRanges.add(new Splitter.WeightedRange(1.0, r)); for (Range r : Range.sort(replicas.onlyTransient().ranges())) - weightedRanges.add(new Splitter.WeightedRange(0.1, r)); + weightedRanges.add(new Splitter.WeightedRange(0.00001, r)); weightedRanges.sort(Comparator.comparing(Splitter.WeightedRange::left)); diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index a6046a62152e..78ee7b50e427 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -1006,8 +1006,7 @@ private static void mutateFullyContainedSSTables(ColumnFamilyStore cfs, Iterator sstableIterator, Collection> ranges, LifecycleTransaction txn, - TimeUUID sessionID, - boolean isTransient) throws IOException + TimeUUID sessionID) throws IOException { if (ranges.isEmpty()) return; @@ -1017,7 +1016,7 @@ private static void mutateFullyContainedSSTables(ColumnFamilyStore cfs, Set fullyContainedSSTables = findSSTablesToAnticompact(sstableIterator, normalizedRanges, sessionID); cfs.metric.bytesMutatedAnticompaction.mark(SSTableReader.getTotalBytes(fullyContainedSSTables)); - cfs.getCompactionStrategyManager().mutateRepaired(fullyContainedSSTables, UNREPAIRED_SSTABLE, sessionID, isTransient); + cfs.getCompactionStrategyManager().mutateRepaired(fullyContainedSSTables, UNREPAIRED_SSTABLE, sessionID); // since we're just re-writing the sstable metdata for the fully contained sstables, we don't want // them obsoleted when the anti-compaction is complete. So they're removed from the transaction here txn.cancel(fullyContainedSSTables); @@ -1065,8 +1064,7 @@ public void performAnticompaction(ColumnFamilyStore cfs, Set sstables = new HashSet<>(validatedForRepair); validateSSTableBoundsForAnticompaction(sessionID, sstables, replicas); - mutateFullyContainedSSTables(cfs, validatedForRepair, sstables.iterator(), replicas.onlyFull().ranges(), txn, sessionID, false); - mutateFullyContainedSSTables(cfs, validatedForRepair, sstables.iterator(), replicas.onlyTransient().ranges(), txn, sessionID, true); + mutateFullyContainedSSTables(cfs, validatedForRepair, sstables.iterator(), replicas.ranges(), txn, sessionID); assert txn.originals().equals(sstables); if (!sstables.isEmpty()) diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java index da7ea2cbef7e..e9b217a3c2e4 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java @@ -1326,7 +1326,7 @@ List getPendingRepairManagers() * Mutates sstable repairedAt times and notifies listeners of the change with the writeLock held. Prevents races * with other processes between when the metadata is changed and when sstables are moved between strategies. */ - public void mutateRepaired(Collection sstables, long repairedAt, TimeUUID pendingRepair, boolean isTransient) throws IOException + public void mutateRepaired(Collection sstables, long repairedAt, TimeUUID pendingRepair) throws IOException { if (sstables.isEmpty()) return; diff --git a/src/java/org/apache/cassandra/db/compaction/PendingRepairManager.java b/src/java/org/apache/cassandra/db/compaction/PendingRepairManager.java index a53cc696ae70..411915b0cb3f 100644 --- a/src/java/org/apache/cassandra/db/compaction/PendingRepairManager.java +++ b/src/java/org/apache/cassandra/db/compaction/PendingRepairManager.java @@ -515,6 +515,7 @@ protected void runMayThrow() throws Exception try { logger.info("Moving {} from pending to repaired with repaired at = {} and session id = {}", transaction.originals(), repairedAt, sessionID); + cfs.getCompactionStrategyManager().mutateRepaired(transaction.originals(), repairedAt, ActiveRepairService.NO_PENDING_REPAIR); completed = true; } finally diff --git a/src/java/org/apache/cassandra/schema/KeyspaceParams.java b/src/java/org/apache/cassandra/schema/KeyspaceParams.java index df51da8321b2..b95e6c3adce7 100644 --- a/src/java/org/apache/cassandra/schema/KeyspaceParams.java +++ b/src/java/org/apache/cassandra/schema/KeyspaceParams.java @@ -142,6 +142,10 @@ public static KeyspaceParams nts(ReplicationType replicationType, Object... args return new KeyspaceParams(true, ReplicationParams.nts(args), FastPathStrategy.simple(), replicationType); } + public static KeyspaceParams ntsTracked(Object... args) + { + return nts(ReplicationType.tracked, args); + } public static KeyspaceParams nts(Object... args) { diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 51ca28337035..653c889f0d3e 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -5716,7 +5716,7 @@ public List mutateSSTableRepairedState(boolean repaired, boolean preview Set result = table.runWithCompactionsDisabled(() -> { Set sstables = table.getLiveSSTables().stream().filter(predicate).collect(Collectors.toSet()); if (!preview) - table.getCompactionStrategyManager().mutateRepaired(sstables, repairedAt, null, false); + table.getCompactionStrategyManager().mutateRepaired(sstables, repairedAt, null); return sstables; }, predicate, OperationType.ANTICOMPACTION, true, false, true); sstablesTouched.addAll(result.stream().map(sst -> sst.descriptor.baseFile().name()).collect(Collectors.toList())); diff --git a/src/java/org/apache/cassandra/service/reads/range/RangeCommandIterator.java b/src/java/org/apache/cassandra/service/reads/range/RangeCommandIterator.java index 79695912a364..0b867710d32f 100644 --- a/src/java/org/apache/cassandra/service/reads/range/RangeCommandIterator.java +++ b/src/java/org/apache/cassandra/service/reads/range/RangeCommandIterator.java @@ -25,16 +25,13 @@ import java.util.function.Function; import com.google.common.annotations.VisibleForTesting; +import org.apache.cassandra.db.*; import org.apache.cassandra.service.reads.DataResolver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.concurrent.Stage; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.db.ConsistencyLevel; -import org.apache.cassandra.db.Keyspace; -import org.apache.cassandra.db.PartitionRangeReadCommand; -import org.apache.cassandra.db.ReadCommand; import org.apache.cassandra.db.filter.DataLimits; import org.apache.cassandra.db.partitions.PartitionIterator; import org.apache.cassandra.db.partitions.PartitionIterators; @@ -229,7 +226,7 @@ private SingleRangeResponse executeNormal(ReplicaPlan.ForRangeRead replicaPlan, for (Replica replica : replicaPlan.contacts()) { Tracing.trace("Enqueuing request to {}", replica); - Message message = command.createMessage(trackRepairedStatus && replica.isFull(), requestTime); + Message message = rangeCommand.createMessage(trackRepairedStatus && replica.isFull(), requestTime); readCoordinator.sendReadCommand(message, replica.endpoint(), handler); } } diff --git a/test/distributed/org/apache/cassandra/distributed/test/PreviewRepairTest.java b/test/distributed/org/apache/cassandra/distributed/test/PreviewRepairTest.java index 82c81f221dcd..e61ca4e69ace 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/PreviewRepairTest.java +++ b/test/distributed/org/apache/cassandra/distributed/test/PreviewRepairTest.java @@ -420,7 +420,7 @@ private void unmarkRepaired(IInvokableInstance instance, String table) ColumnFamilyStore cfs = Keyspace.open(KEYSPACE).getColumnFamilyStore(table); try { - cfs.getCompactionStrategyManager().mutateRepaired(cfs.getLiveSSTables(), ActiveRepairService.UNREPAIRED_SSTABLE, null, false); + cfs.getCompactionStrategyManager().mutateRepaired(cfs.getLiveSSTables(), ActiveRepairService.UNREPAIRED_SSTABLE, null); } catch (IOException e) { diff --git a/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java b/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java index 51500d0bab9f..136499ac831e 100644 --- a/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java +++ b/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java @@ -232,7 +232,7 @@ public void testRepairStatusChanges() throws Exception populateSSTables(store); assertTrue(repaired.getSSTables().isEmpty()); assertFalse(unrepaired.getSSTables().isEmpty()); - mgr.mutateRepaired(store.getLiveSSTables(), FBUtilities.nowInSeconds(), null, false); + mgr.mutateRepaired(store.getLiveSSTables(), FBUtilities.nowInSeconds(), null); assertFalse(repaired.getSSTables().isEmpty()); assertTrue(unrepaired.getSSTables().isEmpty()); @@ -249,8 +249,7 @@ public void testRepairStatusChanges() throws Exception // mark unrepair mgr.mutateRepaired(store.getLiveSSTables().stream().filter(s -> s.isRepaired()).collect(Collectors.toList()), ActiveRepairService.UNREPAIRED_SSTABLE, - null, - false); + null); assertTrue(repaired.getSSTables().isEmpty()); assertFalse(unrepaired.getSSTables().isEmpty()); } diff --git a/test/unit/org/apache/cassandra/db/CleanupTransientTest.java b/test/unit/org/apache/cassandra/db/CleanupTransientTest.java index 97252452b793..bf4f65f2538d 100644 --- a/test/unit/org/apache/cassandra/db/CleanupTransientTest.java +++ b/test/unit/org/apache/cassandra/db/CleanupTransientTest.java @@ -41,6 +41,7 @@ import org.apache.cassandra.locator.InetAddressAndPort; import org.apache.cassandra.locator.RangesAtEndpoint; import org.apache.cassandra.locator.Replica; +import org.apache.cassandra.replication.MutationTrackingService; import org.apache.cassandra.schema.KeyspaceParams; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; @@ -73,9 +74,10 @@ public class CleanupTransientTest extends CassandraTestBase @BeforeClass public static void setup() throws Exception { + DatabaseDescriptor.setMutationTrackingEnabled(true); DatabaseDescriptor.setTransientReplicationEnabledUnsafe(true); SchemaLoader.createKeyspace(KEYSPACE1, - KeyspaceParams.simple("2/1"), + KeyspaceParams.simpleWitness("2/1"), SchemaLoader.standardCFMD(KEYSPACE1, CF_STANDARD1), SchemaLoader.compositeIndexCFMD(KEYSPACE1, CF_INDEXED1, true)); @@ -153,10 +155,11 @@ protected void fillCF(ColumnFamilyStore cfs, String colName, int rowsPerSSTable) { String key = String.valueOf(i); // create a row and update the birthdate value, test that the index query fetches the new version - new RowUpdateBuilder(cfs.metadata(), System.currentTimeMillis(), ByteBufferUtil.bytes(key)) - .clustering(COLUMN) - .add(colName, VALUE) - .build() + Mutation mutation = new RowUpdateBuilder(cfs.metadata(), System.currentTimeMillis(), ByteBufferUtil.bytes(key)) + .clustering(COLUMN) + .add(colName, VALUE) + .build(); + mutation.withMutationId(MutationTrackingService.instance.nextMutationId(cfs.metadata().keyspace, mutation.key().getToken())) .applyUnsafe(); } diff --git a/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java b/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java index c75525f63122..36f6e6dcbab0 100644 --- a/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java @@ -208,30 +208,6 @@ public void antiCompactOneFull() throws Exception assertOnDiskState(store, 2); } - @Test - public void antiCompactOneMixed() throws Exception - { - ColumnFamilyStore store = prepareColumnFamilyStore(); - SSTableStats stats = antiCompactRanges(store, atEndpoint(range(0, 4), range(4, 8))); - assertEquals(3, stats.numLiveSSTables); - assertEquals(stats.pendingKeys, 4); - assertEquals(stats.transKeys, 4); - assertEquals(stats.unrepairedKeys, 2); - assertOnDiskState(store, 3); - } - - @Test - public void antiCompactOneTransOnly() throws Exception - { - ColumnFamilyStore store = prepareColumnFamilyStore(); - SSTableStats stats = antiCompactRanges(store, atEndpoint(NO_RANGES, range(0, 4))); - assertEquals(2, stats.numLiveSSTables); - assertEquals(stats.pendingKeys, 0); - assertEquals(stats.transKeys, 4); - assertEquals(stats.unrepairedKeys, 6); - assertOnDiskState(store, 2); - } - @Test public void antiCompactionSizeTest() throws InterruptedException, IOException, NoSuchRepairSessionException { @@ -322,48 +298,6 @@ public void antiCompactTenFull() throws IOException, NoSuchRepairSessionExceptio assertOnDiskState(store, 10); } - @Test - public void antiCompactTenTrans() throws IOException, NoSuchRepairSessionException - { - Keyspace keyspace = Keyspace.open(KEYSPACE1); - ColumnFamilyStore store = keyspace.getColumnFamilyStore(CF); - store.disableAutoCompaction(); - - for (int table = 0; table < 10; table++) - { - generateSStable(store,Integer.toString(table)); - } - SSTableStats stats = antiCompactRanges(store, atEndpoint(NO_RANGES, range(0, 4))); - /* - Anticompaction will be anti-compacting 10 SSTables but will be doing this two at a time - so there will be no net change in the number of sstables - */ - assertEquals(10, stats.numLiveSSTables); - assertEquals(stats.pendingKeys, 0); - assertEquals(stats.transKeys, 40); - assertEquals(stats.unrepairedKeys, 60); - assertOnDiskState(store, 10); - } - - @Test - public void antiCompactTenMixed() throws IOException, NoSuchRepairSessionException - { - Keyspace keyspace = Keyspace.open(KEYSPACE1); - ColumnFamilyStore store = keyspace.getColumnFamilyStore(CF); - store.disableAutoCompaction(); - - for (int table = 0; table < 10; table++) - { - generateSStable(store,Integer.toString(table)); - } - SSTableStats stats = antiCompactRanges(store, atEndpoint(range(0, 4), range(4, 8))); - assertEquals(15, stats.numLiveSSTables); - assertEquals(stats.pendingKeys, 40); - assertEquals(stats.transKeys, 40); - assertEquals(stats.unrepairedKeys, 20); - assertOnDiskState(store, 15); - } - @Test public void shouldMutatePendingRepair() throws InterruptedException, IOException, NoSuchRepairSessionException { diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerTest.java index 734404f7a5ba..fac174af5463 100644 --- a/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerTest.java @@ -130,12 +130,12 @@ public void testSSTablesAssignedToCorrectCompactionStrategy() throws IOException if (i % 3 == 0) { //make 1 third of sstables repaired - cfs.getCompactionStrategyManager().mutateRepaired(newSSTables, System.currentTimeMillis(), null, false); + cfs.getCompactionStrategyManager().mutateRepaired(newSSTables, System.currentTimeMillis(), null); } else if (i % 3 == 1) { //make 1 third of sstables pending repair - cfs.getCompactionStrategyManager().mutateRepaired(newSSTables, 0, nextTimeUUID(), false); + cfs.getCompactionStrategyManager().mutateRepaired(newSSTables, 0, nextTimeUUID()); } previousSSTables = currentSSTables; } @@ -294,7 +294,7 @@ private static void assertHolderExclusivity(boolean isRepaired, boolean isPendin assertEquals(1, matches); } - private static void assertInvalieHolderConfig(boolean isRepaired, boolean isPendingRepair) + private static void assertInvalidHolderConfig(boolean isRepaired, boolean isPendingRepair) { ColumnFamilyStore cfs = Keyspace.open(KS_PREFIX).getColumnFamilyStore(TABLE_PREFIX); CompactionStrategyManager csm = cfs.getCompactionStrategyManager(); @@ -320,10 +320,7 @@ public void testMutualExclusiveHolderClassification() throws Exception assertHolderExclusivity(true, false, CompactionStrategyHolder.class); assertHolderExclusivity(false, true, PendingRepairHolder.class); assertHolderExclusivity(false, true, PendingRepairHolder.class); - assertInvalieHolderConfig(true, true); - assertInvalieHolderConfig(true, true); - assertInvalieHolderConfig(false, false); - assertInvalieHolderConfig(true, false); + assertInvalidHolderConfig(true, true); } PartitionPosition forKey(int key) @@ -354,8 +351,8 @@ public void groupSSTables() throws Exception repaired.add(createSSTableWithKey(cfs.getKeyspaceName(), cfs.name, key++)); } - cfs.getCompactionStrategyManager().mutateRepaired(pendingRepair, 0, nextTimeUUID(), false); - cfs.getCompactionStrategyManager().mutateRepaired(repaired, 1000, null, false); + cfs.getCompactionStrategyManager().mutateRepaired(pendingRepair, 0, nextTimeUUID()); + cfs.getCompactionStrategyManager().mutateRepaired(repaired, 1000, null); DiskBoundaries boundaries = new DiskBoundaries(cfs, cfs.getDirectories().getWriteableLocations(), Lists.newArrayList(forKey(100), forKey(200), forKey(300)), diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionsBytemanTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionsBytemanTest.java index e49847b443f2..fbe0b9c40cac 100644 --- a/test/unit/org/apache/cassandra/db/compaction/CompactionsBytemanTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/CompactionsBytemanTest.java @@ -197,7 +197,7 @@ public void testStopCompactionRepaired(Consumer compactionRun } Util.flush(cfs); } - cfs.getCompactionStrategyManager().mutateRepaired(cfs.getLiveSSTables(), System.currentTimeMillis(), null, false); + cfs.getCompactionStrategyManager().mutateRepaired(cfs.getLiveSSTables(), System.currentTimeMillis(), null); for (int i = 0; i < 5; i++) { for (int j = 0; j < 10; j++) diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java index fb4d0ee19520..5b9d2e462260 100644 --- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java @@ -249,7 +249,7 @@ public void testMutateMetadataCSM() throws Exception TimeUUID random = nextTimeUUID(); try { - cfs.getCompactionStrategyManager().mutateRepaired(Collections.singleton(sstable), UNREPAIRED_SSTABLE, random, false); + cfs.getCompactionStrategyManager().mutateRepaired(Collections.singleton(sstable), UNREPAIRED_SSTABLE, random); if (!sstable.descriptor.version.hasPendingRepair()) fail("We should fail setting pending repair on unsupported sstables "+sstable); } @@ -259,21 +259,6 @@ public void testMutateMetadataCSM() throws Exception fail("We should succeed setting pending repair on "+legacyVersion + " sstables, failed on "+sstable); } } - // set transient - for (SSTableReader sstable : cfs.getLiveSSTables()) - { - try - { - cfs.getCompactionStrategyManager().mutateRepaired(Collections.singleton(sstable), UNREPAIRED_SSTABLE, nextTimeUUID(), true); - if (!sstable.descriptor.version.hasIsTransient()) - fail("We should fail setting pending repair on unsupported sstables "+sstable); - } - catch (IllegalStateException e) - { - if (sstable.descriptor.version.hasIsTransient()) - fail("We should succeed setting pending repair on "+legacyVersion + " sstables, failed on "+sstable); - } - } } } } diff --git a/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java b/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java index ac7988299bd8..f855d6243e21 100644 --- a/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java +++ b/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java @@ -82,10 +82,11 @@ public class SimpleStrategyTest extends CassandraTestBase @Before public void defineSchema() { + DatabaseDescriptor.setMutationTrackingEnabled(true); + DatabaseDescriptor.setTransientReplicationEnabledUnsafe(true); recreateCMS(); SchemaLoader.createKeyspace(KEYSPACE1, KeyspaceParams.simple(1)); SchemaLoader.createKeyspace(MULTIDC, KeyspaceParams.simple(3)); - DatabaseDescriptor.setTransientReplicationEnabledUnsafe(true); } @Test @@ -283,10 +284,7 @@ public void transientReplica() throws Exception tokens.put(endpoints.get(3), tk(400)); tokens.forEach(ClusterMetadataTestHelper::addEndpoint); - Map configOptions = new HashMap(); - configOptions.put(ReplicationParams.CLASS, SimpleStrategy.class.getName()); - configOptions.put("replication_factor", "3/1"); - SchemaLoader.createKeyspace("ks", KeyspaceParams.create(false, configOptions)); + SchemaLoader.createKeyspace("ks", KeyspaceParams.simpleWitness("3/1")); Range range1 = range(Murmur3Partitioner.MINIMUM.token, 100); Util.assertRCEquals(EndpointsForToken.of(range1.right, diff --git a/test/unit/org/apache/cassandra/repair/autorepair/SSTableRepairedAtTest.java b/test/unit/org/apache/cassandra/repair/autorepair/SSTableRepairedAtTest.java index 14677490ca2d..b16d776db1bc 100644 --- a/test/unit/org/apache/cassandra/repair/autorepair/SSTableRepairedAtTest.java +++ b/test/unit/org/apache/cassandra/repair/autorepair/SSTableRepairedAtTest.java @@ -161,7 +161,7 @@ public void testMutateSSTableRepairedStateTableUnrepaired() throws Exception table1.forceBlockingFlush(ColumnFamilyStore.FlushReason.UNIT_TESTS); SchemaLoader.insertData(TEST_KEYSPACE, table1.name, 0, 1); table1.forceBlockingFlush(ColumnFamilyStore.FlushReason.UNIT_TESTS); - table1.getCompactionStrategyManager().mutateRepaired(table1.getLiveSSTables(), 1, null, false); + table1.getCompactionStrategyManager().mutateRepaired(table1.getLiveSSTables(), 1, null); assertEquals(2, table1.getLiveSSTables().stream().filter(SSTableReader::isRepaired).count()); List result = StorageService.instance.mutateSSTableRepairedState(false, false, TEST_KEYSPACE, Arrays.asList(table1.name)); diff --git a/test/unit/org/apache/cassandra/repair/consistent/PendingRepairStatTest.java b/test/unit/org/apache/cassandra/repair/consistent/PendingRepairStatTest.java index 814b9c318d7b..17c34bb20a67 100644 --- a/test/unit/org/apache/cassandra/repair/consistent/PendingRepairStatTest.java +++ b/test/unit/org/apache/cassandra/repair/consistent/PendingRepairStatTest.java @@ -124,7 +124,7 @@ private static void mutateRepaired(SSTableReader sstable, long repairedAt, TimeU { try { - cfs.getCompactionStrategyManager().mutateRepaired(Collections.singleton(sstable), repairedAt, pendingRepair, false); + cfs.getCompactionStrategyManager().mutateRepaired(Collections.singleton(sstable), repairedAt, pendingRepair); } catch (IOException e) { diff --git a/test/unit/org/apache/cassandra/service/BootstrapTransientTest.java b/test/unit/org/apache/cassandra/service/BootstrapTransientTest.java index 54e90fbf5999..46fd20c69f6f 100644 --- a/test/unit/org/apache/cassandra/service/BootstrapTransientTest.java +++ b/test/unit/org/apache/cassandra/service/BootstrapTransientTest.java @@ -95,6 +95,7 @@ public static void setUpClass() throws Exception { DatabaseDescriptor.daemonInitialization(); DatabaseDescriptor.setPartitionerUnsafe(OrderPreservingPartitioner.instance); + DatabaseDescriptor.setMutationTrackingEnabled(true); DatabaseDescriptor.setTransientReplicationEnabledUnsafe(true); address02 = InetAddressAndPort.getByName("127.0.0.2"); address03 = InetAddressAndPort.getByName("127.0.0.3"); @@ -110,7 +111,7 @@ public void setup() ClusterMetadataTestHelper.addEndpoint(address02, range30_10.right); ClusterMetadataTestHelper.addEndpoint(address03, range10_20.right); ClusterMetadataTestHelper.addEndpoint(address04, range20_30.right); - KeyspaceMetadata ksm = KeyspaceMetadata.create(KEYSPACE, KeyspaceParams.simple("3/1")); + KeyspaceMetadata ksm = KeyspaceMetadata.create(KEYSPACE, KeyspaceParams.simpleWitness("3/1")); SchemaTestUtil.addOrUpdateKeyspace(ksm); } diff --git a/test/unit/org/apache/cassandra/service/WriteResponseHandlerTransientTest.java b/test/unit/org/apache/cassandra/service/WriteResponseHandlerTransientTest.java index 1c26f6c38c7f..8f0381e210c2 100644 --- a/test/unit/org/apache/cassandra/service/WriteResponseHandlerTransientTest.java +++ b/test/unit/org/apache/cassandra/service/WriteResponseHandlerTransientTest.java @@ -88,6 +88,7 @@ public class WriteResponseHandlerTransientTest public static void setupClass() throws Throwable { SchemaLoader.loadSchema(); + DatabaseDescriptor.setMutationTrackingEnabled(true); DatabaseDescriptor.setTransientReplicationEnabledUnsafe(true); DatabaseDescriptor.setPartitionerUnsafe(Murmur3Partitioner.instance); @@ -99,7 +100,7 @@ public static void setupClass() throws Throwable ClusterMetadataTestHelper.register(EP4, DC2, "r1"); ClusterMetadataTestHelper.register(EP5, DC2, "r1"); ClusterMetadataTestHelper.register(EP6, DC2, "r1"); - SchemaLoader.createKeyspace("ks", KeyspaceParams.nts(DC1, "3/1", DC2, "3/1"), SchemaLoader.standardCFMD("ks", "tbl")); + SchemaLoader.createKeyspace("ks", KeyspaceParams.ntsTracked(DC1, "3/1", DC2, "3/1"), SchemaLoader.standardCFMD("ks", "tbl")); ks = Keyspace.open("ks"); cfs = ks.getColumnFamilyStore("tbl"); dummy = DatabaseDescriptor.getPartitioner().getToken(ByteBufferUtil.bytes(0)); @@ -158,19 +159,9 @@ public void checkSpeculationContext() { EndpointsForToken all = replicas(full(EP1), full(EP2), trans(EP3), full(EP4), full(EP5), trans(EP6)); // in happy path, transient replica should be classified as a backup - assertSpeculationReplicas(expected(all, replicas(full(EP1), full(EP2), full(EP4), full(EP5))), + assertSpeculationReplicas(expected(all, all), all, dead()); - - // full replicas must always be in the contact list, and will occur first - assertSpeculationReplicas(expected(replicas(full(EP1), trans(EP3), full(EP4), trans(EP6)), replicas(full(EP1), full(EP2), full(EP4), full(EP5), trans(EP3), trans(EP6))), - all, - dead(EP2, EP5)); - - // only one transient used as backup - assertSpeculationReplicas(expected(replicas(full(EP1), trans(EP3), full(EP4), full(EP5), trans(EP6)), replicas(full(EP1), full(EP2), full(EP4), full(EP5), trans(EP3))), - all, - dead(EP2)); } @Test (expected = UnavailableException.class)