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=8450c67224fb7625bffbf64d3d4741737d3049db;hp=81d00ee8bce3279842696f6a912d4744423a2e47;hb=320a4e5cd2d9d80468a3f82798744f2035488218;hpb=5fd8e6506248cc34da72281a1662612f6c2b2f9a 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 81d00ee8bc..8450c67224 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,12 +12,12 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; import com.google.common.util.concurrent.CheckedFuture; -import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -62,7 +62,7 @@ public final class ClientTransaction extends LocalAbortable implements Identifia private static final int OPEN_STATE = 0; private static final int CLOSED_STATE = 1; - private final Map proxies = new HashMap<>(); + private final Map proxies = new ConcurrentHashMap<>(); private final TransactionIdentifier transactionId; private final AbstractClientHistory parent; @@ -84,8 +84,7 @@ public final class ClientTransaction extends LocalAbortable implements Identifia private AbstractProxyTransaction ensureProxy(final YangInstanceIdentifier path) { checkNotClosed(); - final ModuleShardBackendResolver resolver = parent.getClient().resolver(); - final Long shard = resolver.resolveShardForPath(path); + final Long shard = parent.resolveShardForPath(path); return proxies.computeIfAbsent(shard, this::createProxy); } @@ -116,13 +115,13 @@ public final class ClientTransaction extends LocalAbortable implements Identifia private boolean ensureClosed() { final int local = state; - if (local != CLOSED_STATE) { - final boolean success = STATE_UPDATER.compareAndSet(this, OPEN_STATE, CLOSED_STATE); - Preconditions.checkState(success, "Transaction %s raced during close", this); - return true; - } else { + if (local == CLOSED_STATE) { return false; } + + final boolean success = STATE_UPDATER.compareAndSet(this, OPEN_STATE, CLOSED_STATE); + Preconditions.checkState(success, "Transaction %s raced during close", this); + return true; } public DOMStoreThreePhaseCommitCohort ready() {