Make sure invokeOperation is set once 70/20870/2
authorRobert Varga <rovarga@cisco.com>
Tue, 19 May 2015 19:16:32 +0000 (21:16 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 21 May 2015 16:10:07 +0000 (16:10 +0000)
This clarifies how it is initialized and make it final to ensure it is
initialized exactly once.

Change-Id: Ib05b58dec492870257da2a8653b5b6b010891312
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit 37a5dd4bdd5d0eda6afa0762b42b94762e969956)

opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java

index 137f6529c710f37d5e8c57beaa7cd8892336307d..ea4e5139425f5eee21151a0cc759910d77b8f6cc 100644 (file)
@@ -39,7 +39,7 @@ class TransactionContextWrapper {
 
     private final TransactionIdentifier identifier;
 
-    TransactionContextWrapper(TransactionIdentifier identifier) {
+    TransactionContextWrapper(final TransactionIdentifier identifier) {
         this.identifier = identifier;
     }
 
@@ -54,18 +54,20 @@ class TransactionContextWrapper {
     /**
      * Adds a TransactionOperation to be executed once the TransactionContext becomes available.
      */
-    private void enqueueTransactionOperation(TransactionOperation operation) {
-        boolean invokeOperation = true;
+    private void enqueueTransactionOperation(final TransactionOperation operation) {
+        final boolean invokeOperation;
         synchronized(queuedTxOperations) {
-            if(transactionContext == null) {
+            if (transactionContext == null) {
                 LOG.debug("Tx {} Queuing TransactionOperation", getIdentifier());
 
-                invokeOperation = false;
                 queuedTxOperations.add(operation);
+                invokeOperation = false;
+            }  else {
+                invokeOperation = true;
             }
         }
 
-        if(invokeOperation) {
+        if (invokeOperation) {
             operation.invoke(transactionContext);
         }
     }
@@ -81,7 +83,7 @@ class TransactionContextWrapper {
         }
     }
 
-    void executePriorTransactionOperations(TransactionContext localTransactionContext) {
+    void executePriorTransactionOperations(final TransactionContext localTransactionContext) {
         while(true) {
             // Access to queuedTxOperations and transactionContext must be protected and atomic
             // (ie synchronized) with respect to #addTxOperationOnComplete to handle timing