Fix lead transaction cancellation
[mdsal.git] / dom / mdsal-dom-spi / src / main / java / org / opendaylight / mdsal / dom / spi / PingPongTransaction.java
index f57deba0ecae0e16bbb4d957faf7bca67b7328f5..b4472248acb1c6d74e28117d404b571891f34eca 100644 (file)
@@ -24,16 +24,14 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
  * interface so we have a simple way of propagating the result.
  */
 final class PingPongTransaction implements FutureCallback<CommitInfo> {
+    private final @NonNull SettableFuture<CommitInfo> future = SettableFuture.create();
+    private final @NonNull FluentFuture<CommitInfo> fluent = FluentFuture.from(future);
     private final @NonNull DOMDataTreeReadWriteTransaction delegate;
-    private final @NonNull SettableFuture<CommitInfo> future;
-    private final @NonNull FluentFuture<CommitInfo> fluent;
 
     private @Nullable DOMDataTreeReadWriteTransaction frontendTransaction;
 
     PingPongTransaction(final DOMDataTreeReadWriteTransaction delegate) {
         this.delegate = requireNonNull(delegate);
-        future = SettableFuture.create();
-        fluent = FluentFuture.from(future);
     }
 
     @NonNull DOMDataTreeReadWriteTransaction getTransaction() {
@@ -59,8 +57,8 @@ final class PingPongTransaction implements FutureCallback<CommitInfo> {
     }
 
     void recordFrontendTransaction(final DOMDataTreeReadWriteTransaction tx) {
-        if (frontendTransaction != null) {
-            frontendTransaction = tx;
+        if (frontendTransaction == null) {
+            frontendTransaction = requireNonNull(tx);
         }
     }