[BGPCEP-838] LinkstateTopologyBuilder NPE Created: 24/Oct/18  Updated: 24/Oct/18  Resolved: 24/Oct/18

Status: Verified
Project: bgpcep
Component/s: BGP
Affects Version/s: Fluorine, Oxygen, Neon
Fix Version/s: Neon, Fluorine SR1, Oxygen SR4

Type: Bug Priority: Medium
Reporter: Claudio David Gasparini Assignee: Claudio David Gasparini
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

java.lang.NullPointerException: null at org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder.createPrefix(LinkstateTopologyBuilder.java:582) ~[220:org.opendaylight.bgpcep.bgp-topology-provider:0.10.0] at org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder.createObject(LinkstateTopologyBuilder.java:648) ~[220:org.opendaylight.bgpcep.bgp-topology-provider:0.10.0] at org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder.createObject(LinkstateTopologyBuilder.java:93) ~[220:org.opendaylight.bgpcep.bgp-topology-provider:0.10.0] at org.opendaylight.bgpcep.bgp.topology.provider.AbstractTopologyBuilder.routeChanged(AbstractTopologyBuilder.java:232) ~[220:org.opendaylight.bgpcep.bgp-topology-provider:0.10.0] at org.opendaylight.bgpcep.bgp.topology.provider.AbstractTopologyBuilder.onDataTreeChanged(AbstractTopologyBuilder.java:182) ~[220:org.opendaylight.bgpcep.bgp-topology-provider:0.10.0] at org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:42) ~[242:org.opendaylight.controller.sal-binding-broker-impl:1.8.0] at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:67) [255:org.opendaylight.controller.sal-distributed-datastore:1.8.0] at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:41) [255:org.opendaylight.controller.sal-distributed-datastore:1.8.0] at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:38) [247:org.opendaylight.controller.sal-clustering-commons:1.8.0] at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167) [78:com.typesafe.akka.actor:2.5.11] at akka.actor.Actor.aroundReceive(Actor.scala:517) [78:com.typesafe.akka.actor:2.5.11] at akka.actor.Actor.aroundReceive$(Actor.scala:515) [78:com.typesafe.akka.actor:2.5.11] at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97) [78:com.typesafe.akka.actor:2.5.11] at akka.actor.ActorCell.receiveMessage(ActorCell.scala:590) [78:com.typesafe.akka.actor:2.5.11] at akka.actor.ActorCell.invoke(ActorCell.scala:559) [78:com.typesafe.akka.actor:2.5.11] at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) [78:com.typesafe.akka.actor:2.5.11] at akka.dispatch.Mailbox.run(Mailbox.scala:224) [78:com.typesafe.akka.actor:2.5.11] at akka.dispatch.Mailbox.exec(Mailbox.scala:234) [78:com.typesafe.akka.actor:2.5.11] at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [78:com.typesafe.akka.actor:2.5.11] at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [78:com.typesafe.akka.actor:2.5.11] at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [78:com.typesafe.akka.actor:2.5.11] at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [78:com.typesafe.akka.actor:2.5.11]



 Comments   
Comment by Claudio David Gasparini [ 24/Oct/18 ]

We are having issue with opendaylight propagating routes from rib to topology table. 
Our set up:
 
BGP LS session between Juniper EX9204 and OpenDaylight Fluorine 0.9.0
IGP: ISIS ( 8 node routes, 28 link routes, 8 prefix routes )
 
We can see that correct number of routes with all attributes intact are making it to the adj-in rib, then into effective-in rib and finally into loc-rib.  When looking into topology table we can see that link routes are missing.  Snippet from running ./odl_test bgp 
 
 
           

{                 "node-id": "0000.0000.0004",                 "ports": [                     "172.17.17.7",                     "172.17.17.29",                     "172.17.17.3",                     "172.17.17.19"                 ],                 "router-id": "missing"             }

        ],
        "number_of_links": 18,
        "number_of_nodes": 8
    }
}
 
 
Every time we bounce bgp linkstate session, ./odl_test bgp displays different number of link routes – might even be below 10 while rib always has all routes.  Once in a while correct number of routes is propagated to topology table. 
 
 Also, very often odl_test.py bgp would not capture router-id and it would display "router-id missing" for random nodes.    Just like missing link routes and nodes' router ids are always random.  
 
Karaf.log ( attached) displays the following messages:
 
2018-10-22T21:51:23,711 | ERROR | CommitFutures-0  | AbstractTopologyBuilder          | 220 - org.opendaylight.bgpcep.bgp-topology-provider - 0.10.0 | Topology builder for KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey\{_topologyId=Uri{_value=bgpls-topology}}]]} failed in transaction DOM-CHAIN-153-0.
 
2018-10-22T21:51:23,714 | ERROR | CommitFutures-0  | AbstractTopologyBuilder          | 220 - org.opendaylight.bgpcep.bgp-topology-provider - 0.10.0 | Failed to propagate change (transaction DOM-CHAIN-153-0) by listener org.opendaylight.bgpcep.bgp.topology.provider.LinkstateTopologyBuilder@54e9d008
 
 
The issue is very similar https://jira.opendaylight.org/browse/BGPCEP-765.  Are we hitting the same bug ?  Should we use different version ? 
 
Please see attached, karaf.log, rib.txt and topology.txt for more details.  Additionally, we tried Oxygen and Nitrogen versions of OpenDaylight and they all display similar behavior.  
 
Thank you in advance for your help.

Generated at Wed Feb 07 19:14:16 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.