*/
package org.opendaylight.controller.md.sal.trace.dom.impl;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.collect.ImmutableSet;
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.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+@Deprecated(forRemoval = true)
abstract class AbstractTracingWriteTransaction implements DOMDataWriteTransaction {
private final DOMDataWriteTransaction delegate;
private final List<String> logs = new ArrayList<>();
AbstractTracingWriteTransaction(DOMDataWriteTransaction delegate, TracingBroker tracingBroker) {
- this.delegate = Objects.requireNonNull(delegate);
- this.tracingBroker = Objects.requireNonNull(tracingBroker);
+ this.delegate = requireNonNull(delegate);
+ this.tracingBroker = 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;
}
}
} 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 FluentFuture<? extends CommitInfo> commit() {
+ recordOp(null, null, "commit", null);
logOps();
return delegate.commit();
}