X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fmdsal-trace%2Fdom-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Ftrace%2Fdom%2Fimpl%2FTracingTransactionChain.java;h=ac6aaa8bdb3c94587413bf43931c05c4ab969a83;hb=refs%2Fchanges%2F03%2F62503%2F1;hp=13312ea46992f5aba32363a78ecd8387971bf36c;hpb=4a09cad994fb38a044b6561dbd998721e44465da;p=controller.git diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingTransactionChain.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingTransactionChain.java index 13312ea469..ac6aaa8bdb 100644 --- a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingTransactionChain.java +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingTransactionChain.java @@ -12,35 +12,64 @@ import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; +import org.opendaylight.controller.md.sal.trace.closetracker.impl.AbstractCloseTracked; +import org.opendaylight.controller.md.sal.trace.closetracker.impl.CloseTrackedRegistry; -class TracingTransactionChain implements DOMTransactionChain { +class TracingTransactionChain extends AbstractCloseTracked implements DOMTransactionChain { private final DOMTransactionChain delegate; private final TracingBroker tracingBroker; + private final CloseTrackedRegistry readOnlyTransactionsRegistry; + private final CloseTrackedRegistry writeTransactionsRegistry; + private final CloseTrackedRegistry readWriteTransactionsRegistry; - TracingTransactionChain(DOMTransactionChain delegate, TracingBroker tracingBroker) { + TracingTransactionChain(DOMTransactionChain delegate, TracingBroker tracingBroker, + CloseTrackedRegistry transactionChainsRegistry) { + super(transactionChainsRegistry); this.delegate = Objects.requireNonNull(delegate); this.tracingBroker = Objects.requireNonNull(tracingBroker); + + final boolean isDebug = transactionChainsRegistry.isDebugContextEnabled(); + String pf = "TransactionChain_" + toString(); + this.readOnlyTransactionsRegistry = new CloseTrackedRegistry<>(this, pf + "newReadOnlyTransaction", isDebug); + this.writeTransactionsRegistry = new CloseTrackedRegistry<>(this, pf + "newWriteOnlyTransaction", isDebug); + this.readWriteTransactionsRegistry = new CloseTrackedRegistry<>(this, pf + "newReadWriteTransaction", isDebug); } @Override + @SuppressWarnings("resource") public DOMDataReadOnlyTransaction newReadOnlyTransaction() { - return delegate.newReadOnlyTransaction(); + final DOMDataReadOnlyTransaction tx = delegate.newReadOnlyTransaction(); + return new TracingReadOnlyTransaction(tx, tracingBroker, readOnlyTransactionsRegistry); } @Override public DOMDataReadWriteTransaction newReadWriteTransaction() { - return new TracingReadWriteTransaction(delegate.newReadWriteTransaction(), tracingBroker); + return new TracingReadWriteTransaction(delegate.newReadWriteTransaction(), tracingBroker, + readWriteTransactionsRegistry); } @Override public DOMDataWriteTransaction newWriteOnlyTransaction() { - return new TracingWriteTransaction(delegate.newWriteOnlyTransaction(), tracingBroker); + final DOMDataWriteTransaction tx = delegate.newWriteOnlyTransaction(); + return new TracingWriteTransaction(tx, tracingBroker, writeTransactionsRegistry); } @Override public void close() { delegate.close(); + super.removeFromTrackedRegistry(); + } + + public CloseTrackedRegistry getReadOnlyTransactionsRegistry() { + return readOnlyTransactionsRegistry; } + public CloseTrackedRegistry getReadWriteTransactionsRegistry() { + return readWriteTransactionsRegistry; + } + + public CloseTrackedRegistry getWriteTransactionsRegistry() { + return writeTransactionsRegistry; + } }