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.FluentFuture;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
+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.mdsal.common.api.CommitInfo;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
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,
}
} 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) {
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();
}
}
synchronized (this) {
logs.clear();
}
- boolean result = delegate.cancel();
- return result;
+ return delegate.cancel();
}
@Override
}
@Override
- public CheckedFuture<Void, TransactionCommitFailedException> submit() {
+ public FluentFuture<? extends CommitInfo> commit() {
+ recordOp(null, null, "commit", null);
logOps();
- return delegate.submit();
+ return delegate.commit();
}
@Override
+ @Nonnull
public Object getIdentifier() {
return delegate.getIdentifier();
}