BUG-8403: guard against ConcurrentModificationException
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / databroker / actors / dds / LocalProxyTransaction.java
index b22829370336e26f0da06c9c344ba1fba9c8add0..9f4b18eaaa73e07d91d12d2f3639c202a1eee436 100644 (file)
@@ -19,6 +19,7 @@ import org.opendaylight.controller.cluster.access.commands.AbstractLocalTransact
 import org.opendaylight.controller.cluster.access.commands.CommitLocalTransactionRequest;
 import org.opendaylight.controller.cluster.access.commands.ExistsTransactionRequest;
 import org.opendaylight.controller.cluster.access.commands.ExistsTransactionSuccess;
+import org.opendaylight.controller.cluster.access.commands.IncrementTransactionSequenceRequest;
 import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest;
 import org.opendaylight.controller.cluster.access.commands.ReadTransactionRequest;
 import org.opendaylight.controller.cluster.access.commands.ReadTransactionSuccess;
@@ -87,9 +88,8 @@ abstract class LocalProxyTransaction extends AbstractProxyTransaction {
 
     @Override
     final void doAbort() {
-        sendAbort(new AbortLocalTransactionRequest(identifier, localActor()), response -> {
-            LOG.debug("Transaction {} abort completed with {}", identifier, response);
-        });
+        sendAbort(new AbortLocalTransactionRequest(identifier, localActor()),
+            response -> LOG.debug("Transaction {} abort completed with {}", identifier, response));
     }
 
     @Override
@@ -128,6 +128,10 @@ abstract class LocalProxyTransaction extends AbstractProxyTransaction {
             // No-op
         } else if (request instanceof TransactionPurgeRequest) {
             enqueuePurge(enqueuedTicks);
+        } else if (request instanceof IncrementTransactionSequenceRequest) {
+            // Local transactions do not have non-replayable requests which would be visible to the backend,
+            // hence we can skip sequence increments.
+            LOG.debug("Not replaying {}", request);
         } else {
             throw new IllegalArgumentException("Unhandled request " + request);
         }