X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2Factors%2Fdds%2FClientTransaction.java;h=7cdc04aba17b471ea218e3e8060141b9a8a2451e;hp=f5855c279a9e4e9f648b93a047c1d9cdc3c4a1cc;hb=c7078128d6f35eebee2f98108ff929dcccfc322d;hpb=e131c3498d286ff14890120ff5e9020ba89f10f9 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java index f5855c279a..7cdc04aba1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java @@ -12,6 +12,7 @@ import static com.google.common.base.Preconditions.checkState; import com.google.common.annotations.Beta; import com.google.common.util.concurrent.FluentFuture; import java.util.Collection; +import java.util.Map; import java.util.Optional; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; @@ -79,24 +80,30 @@ public class ClientTransaction extends AbstractClientHandle toReady = ensureClosed(); - checkState(toReady != null, "Attempted to submit a closed transaction %s", this); + final Map participants = ensureClosed(); + checkState(participants != null, "Attempted to submit a closed transaction %s", this); + final Collection toReady = participants.values(); toReady.forEach(AbstractProxyTransaction::seal); + + final TransactionIdentifier txId = getIdentifier(); + final AbstractClientHistory parent = parent(); + parent.onTransactionShardsBound(txId, participants.keySet()); + final AbstractTransactionCommitCohort cohort; switch (toReady.size()) { case 0: - cohort = new EmptyTransactionCommitCohort(parent(), getIdentifier()); + cohort = new EmptyTransactionCommitCohort(parent, txId); break; case 1: - cohort = new DirectTransactionCommitCohort(parent(), getIdentifier(), toReady.iterator().next()); + cohort = new DirectTransactionCommitCohort(parent, txId, toReady.iterator().next()); break; default: - cohort = new ClientTransactionCommitCohort(parent(), getIdentifier(), toReady); + cohort = new ClientTransactionCommitCohort(parent, txId, toReady); break; } - return parent().onTransactionReady(this, cohort); + return parent.onTransactionReady(this, cohort); } @Override