Workaround MD-SAL ordering issues, lose data anyway 69/4869/1
authorRobert Varga <rovarga@cisco.com>
Mon, 27 Jan 2014 12:35:33 +0000 (13:35 +0100)
committerRobert Varga <rovarga@cisco.com>
Mon, 27 Jan 2014 12:35:33 +0000 (13:35 +0100)
Fixes the following exception  into a warning:

2014-01-27 10:45:06.598 GMT [md-sal-binding-commit-8] WARN  o.o.b.b.t.p.AbstractTopologyBuilder - Data change org.opendaylight.controller.md.sal.common.impl.service.DataChangeEventImpl@34e9459f was not completely propagated to listener org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder@1f6c7110
java.lang.NullPointerException: null
        at org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder.createNode(LinkstateTopologyBuilder.java:600) ~[na:na]
        at org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder.createObject(LinkstateTopologyBuilder.java:682) ~[na:na]
        at org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder.createObject(LinkstateTopologyBuilder.java:109) ~[na:na]
        at org.opendaylight.bgpcep.bgp.topology.provider.AbstractTopologyBuilder.onLocRIBChange(AbstractTopologyBuilder.java:135) ~[na:na]
        at org.opendaylight.bgpcep.bgp.topology.provider.AbstractTopologyBuilder.onDataChanged(AbstractTopologyBuilder.java:165) ~[na:na]
        at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.publishDataChangeEvent(TwoPhaseCommit.java:131) [bundlefile:na]
        at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:97) [bundlefile:na]
        at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) [bundlefile:na]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_45]
        at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]

Change-Id: I305a96fb4f30699d1fdf64288a3a6720961b0126
Signed-off-by: Robert Varga <rovarga@cisco.com>
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java

index a75689979c39bc1e32fba97d95979e63bafad493..c6787c5c3ab93815e59ceb5f6cd6f263b08b4054 100644 (file)
@@ -597,7 +597,11 @@ public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder<Link
                        LOG.debug("Implied node {} became advertized, promoting it", nb.getNodeId());
 
                        final Node in = (Node)trans.readOperationalData(nid);
-                       nb.setTerminationPoint(in.getTerminationPoint());
+                       if (in == null) {
+                               LOG.warn("Node {} is implied but does not exist in MD-SAL, losing termination points!", nid);
+                       } else {
+                               nb.setTerminationPoint(in.getTerminationPoint());
+                       }
                        impliedNodes.remove(nb.getNodeId());
                } else {
                        nb.setTerminationPoint(new ArrayList<TerminationPoint>());