Merge "Bug 509: Improve conflict detection of leaf merges"
authorTony Tkacik <ttkacik@cisco.com>
Thu, 15 May 2014 15:50:38 +0000 (15:50 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 15 May 2014 15:50:38 +0000 (15:50 +0000)
opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperation.java

index 2af522ea861791fcae324f2f5761b258d93b8845..afe9653394ec4a3363d34a48d9cd937b73363de1 100644 (file)
@@ -166,7 +166,16 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper
     protected void checkMergeApplicable(final InstanceIdentifier path,final NodeModification modification, final Optional<StoreMetadataNode> current) throws DataPreconditionFailedException {
         Optional<StoreMetadataNode> original = modification.getOriginal();
         if (original.isPresent() && current.isPresent()) {
-            checkNotConflicting(path,original.get(), current.get());
+            /*
+             * We need to do conflict detection only and only if the value of leaf changed
+             * before two transactions. If value of leaf is unchanged between two transactions
+             * it should not cause transaction to fail, since result of this merge
+             * leads to same data.
+             */
+            if(!original.get().getData().equals(current.get().getData())) {
+
+                checkNotConflicting(path,original.get(), current.get());
+            }
         }
     }