X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2FClientBackedTransactionChain.java;h=3893dbd21f89f2363cfe3f424e150682728669be;hb=5b987edaa120859d0f7e25bc916262dad505eeb8;hp=4168fc9acd835ca09034a47389719697fda5cedc;hpb=f41c5e6e6f6e10b36b1e4b1992877e38e718c8fb;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java index 4168fc9acd..3893dbd21f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java @@ -7,15 +7,18 @@ */ package org.opendaylight.controller.cluster.databroker; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.WeakHashMap; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.databroker.actors.dds.AbstractClientHandle; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientLocalHistory; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientSnapshot; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction; -import org.opendaylight.mdsal.common.api.TransactionChainClosedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionChain; @@ -38,7 +41,7 @@ final class ClientBackedTransactionChain implements DOMStoreTransactionChain { private final boolean debugAllocation; ClientBackedTransactionChain(final ClientLocalHistory history, final boolean debugAllocation) { - this.history = Preconditions.checkNotNull(history); + this.history = requireNonNull(history); this.debugAllocation = debugAllocation; } @@ -59,12 +62,19 @@ final class ClientBackedTransactionChain implements DOMStoreTransactionChain { @Override public synchronized void close() { + final List abortedSnapshots = new ArrayList<>(); for (AbstractClientHandle snap : openSnapshots.keySet()) { - LOG.warn("Aborting unclosed transaction {}", snap.getIdentifier()); - snap.abort(); + final TransactionIdentifier id = snap.getIdentifier(); + LOG.debug("Aborting recorded transaction {}", id); + if (snap.abort()) { + abortedSnapshots.add(id); + } } openSnapshots.clear(); + if (!abortedSnapshots.isEmpty()) { + LOG.warn("Aborted unclosed transactions {}", abortedSnapshots, new Throwable("at")); + } history.close(); } @@ -73,19 +83,11 @@ final class ClientBackedTransactionChain implements DOMStoreTransactionChain { } private ClientSnapshot createSnapshot() { - try { - return recordSnapshot(history.takeSnapshot()); - } catch (org.opendaylight.mdsal.common.api.TransactionChainClosedException e) { - throw new TransactionChainClosedException("Transaction chain has been closed", e); - } + return recordSnapshot(history.takeSnapshot()); } private ClientTransaction createTransaction() { - try { - return recordSnapshot(history.createTransaction()); - } catch (org.opendaylight.mdsal.common.api.TransactionChainClosedException e) { - throw new TransactionChainClosedException("Transaction chain has been closed", e); - } + return recordSnapshot(history.createTransaction()); } private Throwable allocationContext() {