From 451b0c010f0997d7bf9e3f4687bf9e75e2ebb004 Mon Sep 17 00:00:00 2001 From: Bereng Date: Tue, 13 Feb 2024 11:11:19 +0100 Subject: [PATCH] Test failure: org.apache.cassandra.distributed.test.UpgradeSSTablesTest patch by Berenguer Blasi; reviewed by Brandon Williams, Stefan Miklosovic for CASSANDRA-18635 --- .../tools/nodetool/UpgradeSSTable.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java b/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java index cc94d8b54b..fb881bf106 100644 --- a/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java +++ b/src/java/org/apache/cassandra/tools/nodetool/UpgradeSSTable.java @@ -24,6 +24,9 @@ import io.airlift.airline.Option; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.exception.ExceptionUtils; + +import org.apache.cassandra.db.compaction.CompactionInterruptedException; import org.apache.cassandra.tools.NodeProbe; import org.apache.cassandra.tools.NodeTool.NodeToolCmd; @@ -56,13 +59,25 @@ public class UpgradeSSTable extends NodeToolCmd for (String keyspace : keyspaces) { - try + for (int retries = 0; retries < 5; retries++) { - probe.upgradeSSTables(probe.output().out, keyspace, !includeAll, maxSSTableTimestamp, jobs, tableNames); - } - catch (Exception e) - { - throw new RuntimeException("Error occurred during enabling auto-compaction", e); + try + { + if (retries > 0) + Thread.sleep(500); + probe.upgradeSSTables(probe.output().out, keyspace, !includeAll, maxSSTableTimestamp, jobs, tableNames); + break; + } + catch (RuntimeException cie) + { + // Spin retry. See CASSANDRA-18635 + if (ExceptionUtils.indexOfThrowable(cie, CompactionInterruptedException.class) != -1 && retries == 4) + throw (cie); + } + catch (Exception e) + { + throw new RuntimeException("Error occurred during enabling auto-compaction", e); + } } } }