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%2FDataTreeCohortActorRegistry.java;h=05ebe55bc6b6713932100c35b0f8cce6884fae8f;hb=cc7ef3a4cc3eb2027be5558c1564e580fd153087;hp=c367f98f5aedd1b8282e96bb3e1549aa8023a30a;hpb=d98bea5d456be31205b64dc8f0c5f3ae2b1a4cd0;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java index c367f98f5a..05ebe55bc6 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java @@ -13,6 +13,8 @@ import akka.actor.PoisonPill; import akka.actor.Status; import akka.util.Timeout; import com.google.common.base.Preconditions; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -20,7 +22,6 @@ import java.util.List; import java.util.Map; import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.controller.cluster.datastore.DataTreeCohortActor.CanCommit; import org.opendaylight.controller.md.sal.dom.spi.AbstractRegistrationTree; import org.opendaylight.controller.md.sal.dom.spi.RegistrationTreeNode; import org.opendaylight.controller.md.sal.dom.spi.RegistrationTreeSnapshot; @@ -138,8 +139,7 @@ class DataTreeCohortActorRegistry extends AbstractRegistrationTree { private final TransactionIdentifier txId; private final DataTreeCandidate candidate; private final SchemaContext schema; - private final Collection messages = - new ArrayList<>(); + private final Multimap actorToCandidates = ArrayListMultimap.create(); CanCommitMessageBuilder(final TransactionIdentifier txId, final DataTreeCandidate candidate, final SchemaContext schema) { @@ -196,8 +196,7 @@ class DataTreeCohortActorRegistry extends AbstractRegistrationTree { final DataTreeCandidateNode node) { final DOMDataTreeCandidate domCandidate = DOMDataTreeCandidateTO.create(treeIdentifier(path), node); for (final ActorRef reg : regs) { - final CanCommit message = new DataTreeCohortActor.CanCommit(txId, domCandidate, schema, reg); - messages.add(message); + actorToCandidates.put(reg, domCandidate); } } @@ -208,6 +207,13 @@ class DataTreeCohortActorRegistry extends AbstractRegistrationTree { private Collection perform(final RegistrationTreeNode rootNode) { final List toLookup = candidate.getRootPath().getPathArguments(); lookupAndCreateCanCommits(toLookup, 0, rootNode); + + final Map> mapView = actorToCandidates.asMap(); + Collection messages = new ArrayList<>(mapView.size()); + for (Map.Entry> entry: mapView.entrySet()) { + messages.add(new DataTreeCohortActor.CanCommit(txId, entry.getValue(), schema, entry.getKey())); + } + return messages; } }