fix NPE in odl-mdsal-trace 56/78856/1
authorMichael Vorburger <vorburger@redhat.com>
Fri, 14 Dec 2018 15:37:16 +0000 (16:37 +0100)
committerMichael Vorburger <vorburger@redhat.com>
Tue, 18 Dec 2018 10:50:43 +0000 (10:50 +0000)
It (probably) broke back in
Commit a6286576cf76bce93009c58b88ba1e949ef717af
Change-Id: Id82a79e8e430665f6fb5433ed7bab858044eacbe.

This NPE only occurs if mdsaltrace has non-empty write-watches
(as it does in the initial default mdsaltrace_config.xml).

The following commit adds a non-regression test for this.

Caused by: java.lang.NullPointerException
  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:152)
  at org.opendaylight.mdsal.binding.dom.codec.impl.InstanceIdentifierCodec.deserialize(InstanceIdentifierCodec.java:36)
  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry.fromYangInstanceIdentifier(BindingNormalizedNodeCodecRegistry.java:101)
  at org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec.fromYangInstanceIdentifier(BindingToNormalizedNodeCodec.java:215)
  at Proxyabf4ea17_f2e5_4773_bd89_e4f8393036df.fromYangInstanceIdentifier(Unknown Source)
  at Proxy1038cd39_b88e_4023_8cb1_af39f6d6feb2.fromYangInstanceIdentifier(Unknown Source)
  at org.opendaylight.controller.md.sal.trace.dom.impl.TracingBroker.toPathString(TracingBroker.java:270)
  at org.opendaylight.controller.md.sal.trace.dom.impl.TracingBroker.toPathString(TracingBroker.java:264)
  at org.opendaylight.controller.md.sal.trace.dom.impl.TracingBroker$Watch.eventIsOfInterest(TracingBroker.java:167)
  at org.opendaylight.controller.md.sal.trace.dom.impl.TracingBroker.isWriteWatched(TracingBroker.java:248)
  at org.opendaylight.controller.md.sal.trace.dom.impl.AbstractTracingWriteTransaction.recordOp(AbstractTracingWriteTransaction.java:37)
  at org.opendaylight.controller.md.sal.trace.dom.impl.AbstractTracingWriteTransaction.<init>(AbstractTracingWriteTransaction.java:32)
  at org.opendaylight.controller.md.sal.trace.dom.impl.TracingWriteTransaction.<init>(TracingWriteTransaction.java:24)

JIRA: CONTROLLER-1877
Change-Id: Ia9fbf69bc1c3553e929a045146a3610bce72cd96
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
(cherry picked from commit ce85ee4b6d9334bd0b67b0bac1d0cc3565e4ea10)

opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/AbstractTracingWriteTransaction.java

index 553cbfb2a719524780068464bb38550bdb956feb..acd9f9154dda797ea23d2821f4bf83d2c64d3e25 100644 (file)
@@ -34,7 +34,7 @@ abstract class AbstractTracingWriteTransaction implements DOMDataWriteTransactio
 
     private void recordOp(LogicalDatastoreType store, YangInstanceIdentifier yiid, String method,
             NormalizedNode<?, ?> node) {
-        if (!tracingBroker.isWriteWatched(yiid, store)) {
+        if (yiid != null && !tracingBroker.isWriteWatched(yiid, store)) {
             return;
         }