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%2FAbstractTracingWriteTransaction.java;h=acd9f9154dda797ea23d2821f4bf83d2c64d3e25;hb=4e2eb1cc25ef3b2624cf57fa756474ed5bda8472;hp=a06ee5edfeab3094538d404c11e53810a3013b40;hpb=42d888e224d77ec341a0ac3a34c46ff215d63c44;p=controller.git diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/AbstractTracingWriteTransaction.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/AbstractTracingWriteTransaction.java index a06ee5edfe..acd9f9154d 100644 --- a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/AbstractTracingWriteTransaction.java +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/AbstractTracingWriteTransaction.java @@ -8,17 +8,15 @@ package org.opendaylight.controller.md.sal.trace.dom.impl; import com.google.common.collect.ImmutableSet; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.FluentFuture; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Set; -import org.opendaylight.controller.md.sal.common.api.TransactionStatus; +import javax.annotation.Nonnull; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -31,11 +29,12 @@ abstract class AbstractTracingWriteTransaction implements DOMDataWriteTransactio AbstractTracingWriteTransaction(DOMDataWriteTransaction delegate, TracingBroker tracingBroker) { this.delegate = Objects.requireNonNull(delegate); this.tracingBroker = Objects.requireNonNull(tracingBroker); + recordOp(null, null, "instantiate", null); } private void recordOp(LogicalDatastoreType store, YangInstanceIdentifier yiid, String method, NormalizedNode node) { - if (!tracingBroker.isWriteWatched(yiid, store)) { + if (yiid != null && !tracingBroker.isWriteWatched(yiid, store)) { return; } @@ -47,14 +46,22 @@ abstract class AbstractTracingWriteTransaction implements DOMDataWriteTransactio } } else { StringBuilder sb = new StringBuilder(); - sb.append("Method \"").append(method); - sb.append("\" to ").append(store); - sb.append(" at ").append(tracingBroker.toPathString(yiid)).append('.'); - sb.append(" Data: "); - if (node != null) { - sb.append(node.getValue()); - } else { - sb.append("null"); + sb.append("Method \"").append(method).append('"'); + if (store != null) { + sb.append(" to ").append(store); + } + if (yiid != null) { + sb.append(" at ").append(tracingBroker.toPathString(yiid)); + } + sb.append('.'); + if (yiid != null) { + // If we don’t have an id, we don’t expect data either + sb.append(" Data: "); + if (node != null) { + sb.append(node.getValue()); + } else { + sb.append("null"); + } } sb.append(" Stack:").append(tracingBroker.getStackSummary()); synchronized (this) { @@ -65,7 +72,10 @@ abstract class AbstractTracingWriteTransaction implements DOMDataWriteTransactio private synchronized void logOps() { synchronized (this) { - logs.forEach(log -> TracingBroker.LOG.warn(log)); + if (TracingBroker.LOG.isWarnEnabled()) { + TracingBroker.LOG.warn("Transaction {} contains the following operations:", getIdentifier()); + logs.forEach(TracingBroker.LOG::warn); + } logs.clear(); } } @@ -87,8 +97,7 @@ abstract class AbstractTracingWriteTransaction implements DOMDataWriteTransactio synchronized (this) { logs.clear(); } - boolean result = delegate.cancel(); - return result; + return delegate.cancel(); } @Override @@ -98,19 +107,32 @@ abstract class AbstractTracingWriteTransaction implements DOMDataWriteTransactio } @Override - public CheckedFuture submit() { - logOps(); - return delegate.submit(); - } - - @Override - public ListenableFuture> commit() { + public FluentFuture commit() { + recordOp(null, null, "commit", null); logOps(); return delegate.commit(); } @Override + @Nonnull public Object getIdentifier() { return delegate.getIdentifier(); } + + // https://jira.opendaylight.org/browse/CONTROLLER-1792 + + @Override + public final boolean equals(Object object) { + return object == this || delegate.equals(object); + } + + @Override + public final int hashCode() { + return delegate.hashCode(); + } + + @Override + public final String toString() { + return getClass().getName() + "; delegate=" + delegate; + } }