This is an automated email from the ASF dual-hosted git repository.

belliottsmith pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-accord.git

commit 3caddca117a2ac154c8e0a4423b36df06569f2b0
Author: Benedict Elliott Smith <[email protected]>
AuthorDate: Mon May 18 13:09:48 2026 +0100

    CoordinateTransaction should not abort if LocalExecute fails, esp. in case 
of LogUnavailableException
    
    patch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-21835
---
 .../src/main/java/accord/coordinate/CoordinateTransaction.java    | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git 
a/accord-core/src/main/java/accord/coordinate/CoordinateTransaction.java 
b/accord-core/src/main/java/accord/coordinate/CoordinateTransaction.java
index be6a3b93..652b82d9 100644
--- a/accord-core/src/main/java/accord/coordinate/CoordinateTransaction.java
+++ b/accord-core/src/main/java/accord/coordinate/CoordinateTransaction.java
@@ -228,7 +228,11 @@ public class CoordinateTransaction extends 
CoordinatePreAccept<Result>
         {
             if (failure != null)
             {
-                finishOnFailure(failure);
+                // we must be able to continue in the face of a local failure 
esp. in case of LogUnavailableException
+                if (txnId.hasPrivilegedCoordinator())
+                    fastPathEnabled = false;
+                contactNotSelf(null, false);
+                onFailure(node.id(), failure);
             }
             else
             {
@@ -237,7 +241,7 @@ public class CoordinateTransaction extends 
CoordinatePreAccept<Result>
                     PreAcceptOk ok = (PreAcceptOk) result;
                     // TODO (desired): we can probably still process and 
record fast path votes from peers, just with different quorum requirements
                     boolean hasCoordinatorVote = txnId.equals(ok.witnessedAt);
-                    if (!hasCoordinatorVote) fastPathEnabled = false;
+                    if (!hasCoordinatorVote && 
txnId.hasPrivilegedCoordinator()) fastPathEnabled = false;
                     Deps deps = hasCoordinatorVote && 
txnId.is(PrivilegedCoordinatorWithDeps) ? ok.deps : null;
                     contactNotSelf(deps, hasCoordinatorVote);
                     onSuccess(node.id(), ok);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to