[BGPCEP-817] RT-Constrain app peer route UnsupportedOperationException: null Created: 01/Aug/18  Updated: 30/Aug/18  Resolved: 30/Aug/18

Status: Verified
Project: bgpcep
Component/s: BGP
Affects Version/s: Fluorine
Fix Version/s: Fluorine

Type: Bug Priority: Medium
Reporter: Tomas Markovic Assignee: Matej Perina
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: File configure.py     File post_default.py    

 Description   

Overview: Running latest odl with app peer and ibgp peer configured. Simply adding RT_Constrain route into app peer results in error.

steps to reproduce:

  • start odl with features:
    feature:install odl-restconf odl-bgpcep-bgp odl-bgpcep-bgp-config-example
    
  • configure peers with:
    ./configure.py
    
  • add route into app peer
    ./post_default.py
    

It's not even necessary to connect peer to ibgp, this still results in error.
Configuration is via peer-groups, but literal family definition doesnt work either.

ERROR:

018-08-01T14:47:44,684 | ERROR | opendaylight-cluster-data-notification-dispatcher-46 | DataTreeChangeListenerActor      | 247 - org.opendaylight.controller.sal-clustering-commons - 1.8.0.SNAPSHOT | member-1-shard-default-operational: Error notifying listener org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$2$$Lambda$1091/173132953@2a580eb2
java.lang.IllegalStateException: New transaction PingPongTransaction{delegate=org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$DOMDataTransactionAdapter@53ce840e} raced with transaction PingPongTransaction{delegate=org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$DOMDataTransactionAdapter@75c987a7}
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.slowAllocateTransaction(PingPongTransactionChain.java:180) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.allocateTransaction(PingPongTransactionChain.java:192) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.newReadWriteTransaction(PingPongTransactionChain.java:442) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.newWriteOnlyTransaction(PingPongTransactionChain.java:477) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.binding.impl.BindingDOMTransactionChainAdapter.newWriteOnlyTransaction(BindingDOMTransactionChainAdapter.java:75) ~[242:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.protocol.bgp.rib.impl.EffectiveRibInWriter.onDataTreeChanged(EffectiveRibInWriter.java:163) ~[217:org.opendaylight.bgpcep.bgp-rib-impl:0.10.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:42) ~[242:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:67) [255:org.opendaylight.controller.sal-distributed-datastore:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:41) [255:org.opendaylight.controller.sal-distributed-datastore:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:38) [247:org.opendaylight.controller.sal-clustering-commons:1.8.0.SNAPSHOT]
	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]
2018-08-01T14:47:46,793 | ERROR | opendaylight-cluster-data-notification-dispatcher-46 | DataTreeChangeListenerActor      | 247 - org.opendaylight.controller.sal-clustering-commons - 1.8.0.SNAPSHOT | member-1-shard-default-operational: Error notifying listener org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$2$$Lambda$1091/173132953@2a580eb2
java.lang.IllegalStateException: New transaction PingPongTransaction{delegate=org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$DOMDataTransactionAdapter@6f835bdc} raced with transaction PingPongTransaction{delegate=org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter$DOMDataTransactionAdapter@75c987a7}
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.slowAllocateTransaction(PingPongTransactionChain.java:180) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.allocateTransaction(PingPongTransactionChain.java:192) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.newReadWriteTransaction(PingPongTransactionChain.java:442) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.newWriteOnlyTransaction(PingPongTransactionChain.java:477) ~[244:org.opendaylight.controller.sal-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.binding.impl.BindingDOMTransactionChainAdapter.newWriteOnlyTransaction(BindingDOMTransactionChainAdapter.java:75) ~[242:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.protocol.bgp.rib.impl.EffectiveRibInWriter.onDataTreeChanged(EffectiveRibInWriter.java:163) ~[217:org.opendaylight.bgpcep.bgp-rib-impl:0.10.0.SNAPSHOT]
	at org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:42) ~[242:org.opendaylight.controller.sal-binding-broker-impl:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:67) [255:org.opendaylight.controller.sal-distributed-datastore:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:41) [255:org.opendaylight.controller.sal-distributed-datastore:1.8.0.SNAPSHOT]
	at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:38) [247:org.opendaylight.controller.sal-clustering-commons:1.8.0.SNAPSHOT]
	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 [ 01/Aug/18 ]

Main issue here is that Route target should never advertized by APP Peer, basically does not need to advertize RT since no route is advertized to application peers. 

But for make easier for tester to check serialing of RT routes under jenkins we will allow it. Anyway documentation should be updated, and removed the description added for publish routes by app.

Comment by Claudio David Gasparini [ 01/Aug/18 ]

matej.perina Please update doc, and assign patch to this task. 

 

Regards, 

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