Bug 499: Added support for change listeners.
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / md / sal / dom / broker / impl / DOMDataBrokerImpl.java
index 313a2c3d9cb612941015f57edbaa995431c1d6d6..3fafad7cf996b2dad776bb656f34d55eb07022bd 100644 (file)
@@ -259,21 +259,32 @@ public class DOMDataBrokerImpl implements DOMDataBroker {
         public RpcResult<TransactionStatus> call() throws Exception {
 
             Boolean canCommit = canCommit().get();
-
-            if (canCommit) {
-                try {
-                    preCommit().get();
+            try {
+                if (canCommit) {
                     try {
-                        commit().get();
+                        preCommit().get();
+                        try {
+                            commit().get();
+                            return null;
+                        } catch (InterruptedException | ExecutionException e) {
+                            COORDINATOR_LOG.error("Tx: {} Error during commit", transaction.getIdentifier(), e);
+                        }
+
                     } catch (InterruptedException | ExecutionException e) {
-                        // ERROR
+                        COORDINATOR_LOG.warn("Tx: {} Error during preCommit, starting Abort",
+                                transaction.getIdentifier(), e);
                     }
-
-                } catch (InterruptedException | ExecutionException e) {
+                } else {
                     abort().get();
                 }
-            } else {
+            } catch (InterruptedException | ExecutionException e) {
+                COORDINATOR_LOG.warn("Tx: {} Error during canCommit, starting Abort", transaction.getIdentifier(), e);
+
+            }
+            try {
                 abort().get();
+            } catch (InterruptedException | ExecutionException e) {
+                COORDINATOR_LOG.error("Tx: {} Error during abort", transaction.getIdentifier(), e);
             }
             return null;
         }