Bug 9034: TracingBroker with TracingReadOnlyTransaction 89/62289/2
authorMichael Vorburger <vorburger@redhat.com>
Thu, 24 Aug 2017 17:31:23 +0000 (19:31 +0200)
committerTom Pantelis <tompantelis@gmail.com>
Fri, 25 Aug 2017 02:05:26 +0000 (02:05 +0000)
The new TracingReadOnlyTransaction wrapper doesn't do anything
interesting yet - but it will, in the related upcoming next change.

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: Ifa82c50d9c9eac76af99bf6a58e5e1955ee7429c
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java
opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingReadOnlyTransaction.java [new file with mode: 0644]
opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingTransactionChain.java

index aeba2832a4da4b79eee697931e9963f1f2607208..7feb361db24dbaf0cf1d6abd2845275bff243897 100644 (file)
@@ -304,7 +304,7 @@ public class TracingBroker implements TracingDOMDataBroker {
 
     @Override
     public DOMDataReadOnlyTransaction newReadOnlyTransaction() {
-        return delegate.newReadOnlyTransaction();
+        return new TracingReadOnlyTransaction(delegate.newReadOnlyTransaction(), this);
     }
 
     @Nonnull
diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingReadOnlyTransaction.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingReadOnlyTransaction.java
new file mode 100644 (file)
index 0000000..a93f7f9
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * 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 com.google.common.base.Optional;
+import com.google.common.util.concurrent.CheckedFuture;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
+import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+
+class TracingReadOnlyTransaction implements DOMDataReadOnlyTransaction {
+
+    private final DOMDataReadOnlyTransaction delegate;
+    private final TracingBroker tracingBroker;
+
+    TracingReadOnlyTransaction(DOMDataReadOnlyTransaction delegate, TracingBroker tracingBroker) {
+        this.delegate = delegate;
+        this.tracingBroker = tracingBroker;
+    }
+
+    @Override
+    public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(LogicalDatastoreType store,
+            YangInstanceIdentifier path) {
+        return delegate.read(store, path);
+    }
+
+    @Override
+    public CheckedFuture<Boolean, ReadFailedException> exists(LogicalDatastoreType store, YangInstanceIdentifier path) {
+        return delegate.exists(store, path);
+    }
+
+    @Override
+    public Object getIdentifier() {
+        return delegate.getIdentifier();
+    }
+
+    @Override
+    public void close() {
+        delegate.close();
+    }
+
+}
index 13312ea46992f5aba32363a78ecd8387971bf36c..b158dbcf4a195b49034015019c233afa3bf3070e 100644 (file)
@@ -25,7 +25,7 @@ class TracingTransactionChain implements DOMTransactionChain {
 
     @Override
     public DOMDataReadOnlyTransaction newReadOnlyTransaction() {
-        return delegate.newReadOnlyTransaction();
+        return new TracingReadOnlyTransaction(delegate.newReadOnlyTransaction(), tracingBroker);
     }
 
     @Override