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%2Fdatabroker%2FAbstractDOMBrokerWriteTransaction.java;h=401121552d5b88a6cc163987b154242f42ccd82f;hb=f40e99a51cd3fc2c9be3ac8aa0772bdb6b6ce479;hp=39703f0f67b9168d5d400c223b0f59fe939ad50f;hpb=0175a376323f6c916b5a4340a27751ebef22fc83;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransaction.java index 39703f0f67..401121552d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBrokerWriteTransaction.java @@ -10,12 +10,11 @@ package org.opendaylight.controller.cluster.databroker; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFailedFluentFuture; import com.google.common.base.MoreObjects.ToStringHelper; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; -import java.util.ArrayList; -import java.util.Collection; import java.util.Map; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; @@ -23,7 +22,6 @@ import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.broker.TransactionCommitFailedExceptionMapper; -import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionFactory; import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -73,19 +71,18 @@ public abstract class AbstractDOMBrokerWriteTransaction data) { + public void put(final LogicalDatastoreType store, final YangInstanceIdentifier path, final NormalizedNode data) { checkRunning(commitImpl); checkInstanceIdentifierReferencesData(path,data); getSubtransaction(store).write(path, data); } private static void checkInstanceIdentifierReferencesData(final YangInstanceIdentifier path, - final NormalizedNode data) { + final NormalizedNode data) { checkArgument(data != null, "Attempted to store null data at %s", path); final PathArgument lastArg = path.getLastPathArgument(); if (lastArg != null) { - checkArgument(lastArg.equals(data.getIdentifier()), + checkArgument(lastArg.equals(data.name()), "Instance identifier references %s but data identifier is %s", lastArg, data); } } @@ -97,8 +94,7 @@ public abstract class AbstractDOMBrokerWriteTransaction data) { + public void merge(final LogicalDatastoreType store, final YangInstanceIdentifier path, final NormalizedNode data) { checkRunning(commitImpl); checkInstanceIdentifierReferencesData(path, data); getSubtransaction(store).merge(path, data); @@ -110,7 +106,7 @@ public abstract class AbstractDOMBrokerWriteTransaction impl = IMPL_UPDATER.getAndSet(this, null); checkRunning(impl); - final Collection txns = getSubtransactions(); - final Collection cohorts = new ArrayList<>(txns.size()); - FluentFuture ret; - try { - for (final T txn : txns) { - cohorts.add(txn.ready()); + final var tx = getSubtransaction(); + if (tx == null) { + ret = CommitInfo.emptyFluentFuture(); + } else { + try { + ret = impl.commit(this, tx.ready()); + } catch (RuntimeException e) { + ret = immediateFailedFluentFuture(TransactionCommitFailedExceptionMapper.COMMIT_ERROR_MAPPER.apply(e)); } - - ret = impl.commit(this, cohorts); - } catch (RuntimeException e) { - ret = FluentFuture.from(Futures.immediateFailedFuture( - TransactionCommitFailedExceptionMapper.COMMIT_ERROR_MAPPER.apply(e))); } + FUTURE_UPDATER.lazySet(this, ret); return ret; }