X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FNormalizedNodeAggregator.java;h=4a17978f1ca6b81ff737eaa838886c82e29caa1e;hb=99f80f27bee37bb23e345420bf14bb7bb4793c28;hp=b38e4ed35b2e43d9258b5b09808f381b62e43189;hpb=e84f63ee098fff5b02cbce1281ca0d1208f966fa;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java index b38e4ed35b..4a17978f1c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java @@ -45,26 +45,26 @@ public final class NormalizedNodeAggregator { } private Optional aggregate() throws DataValidationFailedException { - return combine().getRootNode(); - } - - private NormalizedNodeAggregator combine() throws DataValidationFailedException { final DataTreeModification mod = dataTree.takeSnapshot().newModification(); + boolean nodePresent = false; for (final Optional node : nodes) { if (node.isPresent()) { - mod.merge(rootIdentifier, node.get()); + mod.merge(rootIdentifier, node.orElseThrow()); + nodePresent = true; } } + + if (!nodePresent) { + return Optional.empty(); + } + + mod.ready(); dataTree.validate(mod); final DataTreeCandidate candidate = dataTree.prepare(mod); dataTree.commit(candidate); - return this; - } - - private Optional getRootNode() { return dataTree.takeSnapshot().readNode(rootIdentifier); } }