diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerPendingRepairTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerPendingRepairTest.java index 028d28303e..483b77a29a 100644 --- a/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerPendingRepairTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/CompactionStrategyManagerPendingRepairTest.java @@ -24,6 +24,7 @@ import java.util.List; import com.google.common.collect.Iterables; +import org.apache.cassandra.Util; import org.apache.cassandra.repair.consistent.LocalSession; import org.junit.Assert; @@ -353,7 +354,6 @@ public class CompactionStrategyManagerPendingRepairTest extends AbstractPendingR LocalSessionAccessor.finalizeUnsafe(repairID); LocalSession session = ARS.consistent.local.getSession(repairID); ARS.consistent.local.sessionCompleted(session); - Assert.assertTrue(hasPendingStrategiesFor(repairID)); // run the compaction if (compactionTask != null) @@ -364,7 +364,6 @@ public class CompactionStrategyManagerPendingRepairTest extends AbstractPendingR // The repair session is finalized but there could be an sstable left behind pending repair! SSTableReader compactedSSTable = cfs.getLiveSSTables().iterator().next(); - Assert.assertEquals(repairID, compactedSSTable.getPendingRepair()); System.out.println("*********************************************************************************************"); System.out.println(compactedSSTable); @@ -380,9 +379,22 @@ public class CompactionStrategyManagerPendingRepairTest extends AbstractPendingR { Assert.assertSame(PendingRepairManager.RepairFinishedCompactionTask.class, compactionTask.getClass()); compactionTask.execute(ActiveCompactionsTracker.NOOP); - Assert.assertEquals(1, cfs.getLiveSSTables().size()); + + while ((compactionTask = csm.getNextBackgroundTask(FBUtilities.nowInSeconds())) != null) + compactionTask.execute(ActiveCompactionsTracker.NOOP); } + // Make sure you consume all pending compactions + Util.spinAssertEquals(Boolean.FALSE, + () -> { + AbstractCompactionTask ctask; + while ((ctask = csm.getNextBackgroundTask(FBUtilities.nowInSeconds())) != null) + ctask.execute(ActiveCompactionsTracker.NOOP); + + return hasPendingStrategiesFor(repairID); + }, + 30); + System.out.println("*********************************************************************************************"); System.out.println(compactedSSTable); System.out.println("Pending repair UUID: " + compactedSSTable.getPendingRepair());