You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by dc...@apache.org on 2022/05/10 22:27:49 UTC
[cassandra] branch cassandra-4.1 updated: Incremental repair leaks SomeRepairFailedException after switch away from flatMap
This is an automated email from the ASF dual-hosted git repository.
dcapwell pushed a commit to branch cassandra-4.1
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-4.1 by this push:
new 89fbb1acf4 Incremental repair leaks SomeRepairFailedException after switch away from flatMap
89fbb1acf4 is described below
commit 89fbb1acf42c97f57ce7301674ab6f9647320c65
Author: David Capwell <dc...@apache.org>
AuthorDate: Tue May 10 12:50:16 2022 -0700
Incremental repair leaks SomeRepairFailedException after switch away from flatMap
patch by David Capwell; reviewed by Benedict Elliott Smith for CASSANDRA-17620
---
CHANGES.txt | 1 +
.../org/apache/cassandra/repair/consistent/CoordinatorSession.java | 7 ++++---
.../org/apache/cassandra/distributed/test/RepairErrorsTest.java | 4 ++++
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 5105707d4b..6bb59f8f58 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
4.1
+ * Incremental repair leaks SomeRepairFailedException after switch away from flatMap (CASSANDRA-17620)
* StorageService read threshold get methods throw NullPointerException due to not handling null configs (CASSANDRA-17593)
* Rename truncate_drop guardrail to drop_truncate_table (CASSANDRA-17592)
* nodetool enablefullquerylog can NPE when directory has no files (CASSANDRA-17595)
diff --git a/src/java/org/apache/cassandra/repair/consistent/CoordinatorSession.java b/src/java/org/apache/cassandra/repair/consistent/CoordinatorSession.java
index 24e24faed1..b66e1e1661 100644
--- a/src/java/org/apache/cassandra/repair/consistent/CoordinatorSession.java
+++ b/src/java/org/apache/cassandra/repair/consistent/CoordinatorSession.java
@@ -47,6 +47,7 @@ import org.apache.cassandra.repair.messages.FinalizePropose;
import org.apache.cassandra.repair.messages.PrepareConsistentRequest;
import org.apache.cassandra.repair.messages.RepairMessage;
import org.apache.cassandra.service.ActiveRepairService;
+import org.apache.cassandra.utils.concurrent.ImmediateFuture;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
@@ -298,15 +299,15 @@ public class CoordinatorSession extends ConsistentSession
});
// if any session failed, then fail the future
- Future<CoordinatedRepairResult> onlySuccessSessionResults = repairSessionResults.map(result -> {
+ Future<CoordinatedRepairResult> onlySuccessSessionResults = repairSessionResults.flatMap(result -> {
finalizeStart = currentTimeMillis();
if (result.hasFailed())
{
if (logger.isDebugEnabled())
logger.debug("Incremental repair {} validation/stream phase completed in {}", sessionID, formatDuration(repairStart, finalizeStart));
- throw SomeRepairFailedException.INSTANCE;
+ return ImmediateFuture.failure(SomeRepairFailedException.INSTANCE);
}
- return result;
+ return ImmediateFuture.success(result);
});
// mark propose finalization and commit
diff --git a/test/distributed/org/apache/cassandra/distributed/test/RepairErrorsTest.java b/test/distributed/org/apache/cassandra/distributed/test/RepairErrorsTest.java
index e771e2eeac..c3c2b1427d 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/RepairErrorsTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/RepairErrorsTest.java
@@ -129,6 +129,10 @@ public class RepairErrorsTest extends TestBaseImpl
assertEquals(0, parents.intValue());
Integer sessions = cluster.get(1).callOnInstance(() -> ActiveRepairService.instance.sessionCount());
assertEquals(0, sessions.intValue());
+
+ cluster.forEach(i -> Assertions.assertThat(i.logs().grep("SomeRepairFailedException").getResult())
+ .describedAs("node%d logged hidden exception org.apache.cassandra.repair.SomeRepairFailedException", i.config().num())
+ .isEmpty());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org