From: Michael Vorburger Date: Thu, 24 Aug 2017 17:24:59 +0000 (+0200) Subject: Bug 9034: TracingBroker with TracingTransactionChain X-Git-Tag: release/oxygen~131 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=3f4b572675562ccb338c0f307e7ea213404955d1 Bug 9034: TracingBroker with TracingTransactionChain This is one of a serious of (small, easy to review) commits which is part of a solution I'm proposing in order to be able to detect OOM issues such as Bug 9034, based on using the mdsal-trace DataBroker. Change-Id: I098c48a1fce1da2fdd0aafdc82fd3bef5626988a Signed-off-by: Michael Vorburger --- diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java index a30d3e065e..aeba2832a4 100644 --- a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java @@ -96,8 +96,8 @@ public class TracingBroker implements TracingDOMDataBroker { private final BindingNormalizedNodeSerializer codec; private final DOMDataBroker delegate; - private List registrationWatches = new ArrayList<>(); - private List writeWatches = new ArrayList<>(); + private final List registrationWatches = new ArrayList<>(); + private final List writeWatches = new ArrayList<>(); private class Watch { @@ -299,7 +299,7 @@ public class TracingBroker implements TracingDOMDataBroker { @Override public DOMTransactionChain createTransactionChain(TransactionChainListener transactionChainListener) { - return delegate.createTransactionChain(transactionChainListener); + return new TracingTransactionChain(delegate.createTransactionChain(transactionChainListener), this); } @Override 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 new file mode 100644 index 0000000000..13312ea469 --- /dev/null +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingTransactionChain.java @@ -0,0 +1,46 @@ +/* + * 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, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.md.sal.trace.dom.impl; + +import java.util.Objects; +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; + +class TracingTransactionChain implements DOMTransactionChain { + + private final DOMTransactionChain delegate; + private final TracingBroker tracingBroker; + + TracingTransactionChain(DOMTransactionChain delegate, TracingBroker tracingBroker) { + this.delegate = Objects.requireNonNull(delegate); + this.tracingBroker = Objects.requireNonNull(tracingBroker); + } + + @Override + public DOMDataReadOnlyTransaction newReadOnlyTransaction() { + return delegate.newReadOnlyTransaction(); + } + + @Override + public DOMDataReadWriteTransaction newReadWriteTransaction() { + return new TracingReadWriteTransaction(delegate.newReadWriteTransaction(), tracingBroker); + } + + @Override + public DOMDataWriteTransaction newWriteOnlyTransaction() { + return new TracingWriteTransaction(delegate.newWriteOnlyTransaction(), tracingBroker); + } + + @Override + public void close() { + delegate.close(); + } + +}