X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fmdsal-trace%2Fdom-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Ftrace%2Fdom%2Fimpl%2FTracingWriteTransaction.java;h=5fe313f1555ccc189322d872e62508c890aa76d9;hp=a895e983c26693dbed48619adea0e33f15893131;hb=3fe96f65938e25effd0ee164a86cb3fb6af2fca5;hpb=0aae219a77e306178b6ea184fa3cbd8ad98e6bce diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingWriteTransaction.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingWriteTransaction.java index a895e983c2..5fe313f155 100644 --- a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingWriteTransaction.java +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingWriteTransaction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Red Hat, Inc. and others. All rights reserved. + * Copyright (c) 2017 Red Hat, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -7,111 +7,44 @@ */ 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 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 org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import com.google.common.util.concurrent.FluentFuture; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; - -class TracingWriteTransaction implements DOMDataWriteTransaction { - - private final DOMDataWriteTransaction delegate; - private final TracingBroker tracingBroker; - private final List logs = new ArrayList<>(); - - TracingWriteTransaction(DOMDataWriteTransaction delegate, TracingBroker tracingBroker) { - this.delegate = Objects.requireNonNull(delegate); - this.tracingBroker = Objects.requireNonNull(tracingBroker); - } - - private void recordOp(LogicalDatastoreType store, YangInstanceIdentifier yiid, - String method, NormalizedNode node) { - if (!tracingBroker.isWriteWatched(yiid, store)) { - return; - } +import org.opendaylight.controller.md.sal.trace.closetracker.impl.CloseTracked; +import org.opendaylight.controller.md.sal.trace.closetracker.impl.CloseTrackedRegistry; +import org.opendaylight.controller.md.sal.trace.closetracker.impl.CloseTrackedTrait; +import org.opendaylight.mdsal.common.api.CommitInfo; - Object value = null; - if (node != null) { - value = node.getValue(); - } +class TracingWriteTransaction extends AbstractTracingWriteTransaction + implements CloseTracked { - if (value != null && value instanceof ImmutableSet && ((Set)value).isEmpty()) { - if (tracingBroker.LOG.isDebugEnabled()) { - tracingBroker.LOG.debug("Empty data set write to {}", tracingBroker.toPathString(yiid)); - } - } 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(" Stack:").append(tracingBroker.getStackSummary()); - synchronized (this) { - logs.add(sb.toString()); - } - } - } + private final CloseTrackedTrait closeTracker; - private synchronized void logOps() { - for (String log : logs) { - tracingBroker.LOG.warn(log); - } - logs.clear(); + TracingWriteTransaction(DOMDataWriteTransaction delegate, TracingBroker tracingBroker, + CloseTrackedRegistry writeTransactionsRegistry) { + super(delegate, tracingBroker); + this.closeTracker = new CloseTrackedTrait<>(writeTransactionsRegistry, this); } @Override - public void put(LogicalDatastoreType store, YangInstanceIdentifier yiid, NormalizedNode node) { - recordOp(store, yiid, "put", node); - delegate.put(store, yiid, node); - } - - @Override - public void merge(LogicalDatastoreType store, YangInstanceIdentifier yiid, NormalizedNode node) { - recordOp(store, yiid, "merge", node); - delegate.merge(store, yiid, node); + public FluentFuture commit() { + closeTracker.removeFromTrackedRegistry(); + return super.commit(); } @Override public boolean cancel() { - logs.clear(); - return delegate.cancel(); + closeTracker.removeFromTrackedRegistry(); + return super.cancel(); } @Override - public void delete(LogicalDatastoreType store, YangInstanceIdentifier yiid) { - recordOp(store, yiid, "delete", null); - delegate.delete(store, yiid); + public StackTraceElement[] getAllocationContextStackTrace() { + return closeTracker.getAllocationContextStackTrace(); } @Override - public CheckedFuture submit() { - logOps(); - return delegate.submit(); + public CloseTracked getRealCloseTracked() { + return this; } - @Override - public ListenableFuture> commit() { - logOps(); - return delegate.commit(); - } - - @Override - public Object getIdentifier() { - return delegate.getIdentifier(); - } }