<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:13:42 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[BGPCEP-645] Race condition when closing Peers and updating routes</title>
                <link>https://jira.opendaylight.org/browse/BGPCEP-645</link>
                <project id="10108" key="BGPCEP">bgpcep</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://logs.opendaylight.org/releng/jenkins092/bgpcep-csit-1node-periodic-bgp-ingest-only-boron/426/archives/log.html.gz&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/releng/jenkins092/bgpcep-csit-1node-periodic-bgp-ingest-only-boron/426/archives/log.html.gz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://logs.opendaylight.org/releng/jenkins092/bgpcep-csit-1node-periodic-bgp-ingest-only-boron/426/archives/odl1_karaf.log.gz&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/releng/jenkins092/bgpcep-csit-1node-periodic-bgp-ingest-only-boron/426/archives/odl1_karaf.log.gz&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;7-03-14 00:34:52,280 | INFO  | entLoopGroup-5-9 | AbstractBGPSessionNegotiator     | 186 - org.opendaylight.bgpcep.bgp-rib-impl - 0.6.3.SNAPSHOT | BGP Session with peer &lt;span class=&quot;error&quot;&gt;&amp;#91;id: 0x07ffbb7a, L:/10.29.12.204:1790 - R:/127.0.1.180:17900&amp;#93;&lt;/span&gt; established successfully.&lt;br/&gt;
2017-03-14 00:34:52,310 | ERROR | lt-dispatcher-24 | TransactionChainProxy            | 173 - org.opendaylight.controller.sal-distributed-datastore - 1.4.3.SNAPSHOT | Tx: member-1-datastore-operational-fe-0-chn-12-txn-244947 - ready future failed for previous Tx member-1-datastore-operational-fe-0-chn-12-txn-244947&lt;br/&gt;
2017-03-14 00:34:52,311 | WARN  | ult-dispatcher-4 | ConcurrentDOMDataBroker          | 173 - org.opendaylight.controller.sal-distributed-datastore - 1.4.3.SNAPSHOT | Tx: DOM-CHAIN-11-244949 Error during phase CAN_COMMIT, starting Abort&lt;br/&gt;
java.lang.IllegalArgumentException: Metadata not available for modification NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)peer[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)peer-id=bgp://127.0.1.180}
&lt;p&gt;], modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)adj-rib-out=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)adj-rib-out, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)tables=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)tables, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)tables[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)afi=(urn:opendaylight:params:xml:ns:yang:bgp-types?revision=2013-09-19)ipv4-address-family, (urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)safi=(urn:opendaylight:params:xml:ns:yang:bgp-types?revision=2013-09-19)unicast-subsequent-address-family}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)tables[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)afi=(urn:opendaylight:params:xml:ns:yang:bgp-types?revision=2013-09-19)ipv4-address-family, (urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)safi=(urn:opendaylight:params:xml:ns:yang:bgp-types?revision=2013-09-19)unicast-subsequent-address-family}
&lt;p&gt;], modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)routes=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-rib?revision=2013-09-25)routes, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-routes=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-routes, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.80/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.80/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.126.48.64/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.126.48.64/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.37.74.208/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.37.74.208/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.96/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.96/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.48/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.48/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.64/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.64/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.126.48.48/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.126.48.48/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.126.48.80/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.126.48.80/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.16/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.16/28}
&lt;p&gt;], modificationType=DELETE, childModification={}], (urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.32/28}
&lt;p&gt;]=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)ipv4-route[&lt;/p&gt;
{(urn:opendaylight:params:xml:ns:yang:bgp-inet?revision=2015-03-05)prefix=8.147.85.32/28}
&lt;p&gt;], modificationType=DELETE, childModification={}]}]}]}]}]}]}]}]&lt;br/&gt;
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)&lt;span class=&quot;error&quot;&gt;&amp;#91;38:com.google.guava:18.0.0&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:198)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.mutateChildren(AbstractNodeContainerModificationStrategy.java:139)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.applyTouch(AbstractNodeContainerModificationStrategy.java:252)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:200)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.mutateChildren(AbstractNodeContainerModificationStrategy.java:139)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.applyTouch(AbstractNodeContainerModificationStrategy.java:252)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.ListEntryModificationStrategy.applyTouch(ListEntryModificationStrategy.java:55)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:200)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.mutateChildren(AbstractNodeContainerModificationStrategy.java:139)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.applyTouch(AbstractNodeContainerModificationStrategy.java:252)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:200)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.mutateChildren(AbstractNodeContainerModificationStrategy.java:139)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.applyTouch(AbstractNodeContainerModificationStrategy.java:252)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:200)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.StructuralContainerModificationStrategy.apply(StructuralContainerModificationStrategy.java:71)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.mutateChildren(AbstractNodeContainerModificationStrategy.java:139)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.applyTouch(AbstractNodeContainerModificationStrategy.java:252)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:200)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.RootModificationApplyOperation.apply(RootModificationApplyOperation.java:78)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.newModification(InMemoryDataTreeModification.java:192)&lt;span class=&quot;error&quot;&gt;&amp;#91;72:org.opendaylight.yangtools.yang-data-impl:1.0.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.sal.core.spi.data.SnapshotBackedWriteTransaction.&amp;lt;init&amp;gt;(SnapshotBackedWriteTransaction.java:50)&lt;span class=&quot;error&quot;&gt;&amp;#91;139:org.opendaylight.controller.sal-core-spi:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.sal.core.spi.data.SnapshotBackedReadWriteTransaction.&amp;lt;init&amp;gt;(SnapshotBackedReadWriteTransaction.java:35)&lt;span class=&quot;error&quot;&gt;&amp;#91;139:org.opendaylight.controller.sal-core-spi:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.sal.core.spi.data.AbstractSnapshotBackedTransactionChain.newReadWriteTransaction(AbstractSnapshotBackedTransactionChain.java:143)&lt;span class=&quot;error&quot;&gt;&amp;#91;139:org.opendaylight.controller.sal-core-spi:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.LocalTransactionChain.newReadWriteTransaction(LocalTransactionChain.java:75)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory.createLocalTransactionContext(AbstractTransactionContextFactory.java:226)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory.maybeCreateLocalTransactionContext(AbstractTransactionContextFactory.java:72)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory.onFindPrimaryShardSuccess(AbstractTransactionContextFactory.java:91)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory.access$000(AbstractTransactionContextFactory.java:37)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory$1.onComplete(AbstractTransactionContextFactory.java:133)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory$1.onComplete(AbstractTransactionContextFactory.java:129)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.OnComplete.internal(Future.scala:259)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.OnComplete.internal(Future.scala:256)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.japi$CallbackBridge.apply(Future.scala:186)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.japi$CallbackBridge.apply(Future.scala:183)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:409)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
2017-03-14 00:34:52,328 | ERROR | n-dispatcher-412 | DataTreeChangeListenerActor      | 173 - org.opendaylight.controller.sal-distributed-datastore - 1.4.3.SNAPSHOT | Error notifying listener org.opendaylight.protocol.bgp.rib.impl.LocRibWriter@7a802c03&lt;br/&gt;
java.lang.IllegalStateException: Transaction chain has failed&lt;br/&gt;
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)&lt;span class=&quot;error&quot;&gt;&amp;#91;38:com.google.guava:18.0.0&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.checkNotFailed(DOMBrokerTransactionChain.java:73)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.submit(DOMBrokerTransactionChain.java:84)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.submit(AbstractDOMBrokerWriteTransaction.java:139)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.processTransaction(PingPongTransactionChain.java:235)&lt;span class=&quot;error&quot;&gt;&amp;#91;141:org.opendaylight.controller.sal-broker-impl:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.processIfReady(PingPongTransactionChain.java:211)&lt;span class=&quot;error&quot;&gt;&amp;#91;141:org.opendaylight.controller.sal-broker-impl:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.readyTransaction(PingPongTransactionChain.java:319)&lt;span class=&quot;error&quot;&gt;&amp;#91;141:org.opendaylight.controller.sal-broker-impl:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain$4.submit(PingPongTransactionChain.java:448)&lt;span class=&quot;error&quot;&gt;&amp;#91;141:org.opendaylight.controller.sal-broker-impl:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.LocRibWriter.onDataTreeChanged(LocRibWriter.java:167)&lt;span class=&quot;error&quot;&gt;&amp;#91;186:org.opendaylight.bgpcep.bgp-rib-impl:0.6.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:58)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:40)&lt;span class=&quot;error&quot;&gt;&amp;#91;173:org.opendaylight.controller.sal-distributed-datastore:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:26)&lt;span class=&quot;error&quot;&gt;&amp;#91;167:org.opendaylight.controller.sal-clustering-commons:1.4.3.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.Actor$class.aroundReceive(Actor.scala:484)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.ActorCell.invoke(ActorCell.scala:495)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.run(Mailbox.scala:224)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.exec(Mailbox.scala:234)&lt;span class=&quot;error&quot;&gt;&amp;#91;155:com.typesafe.akka.actor:2.4.7&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)&lt;span class=&quot;error&quot;&gt;&amp;#91;151:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[151:org.scala-lang.scala-library:2.11.8.v20160304-115712-17&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="23885">BGPCEP-645</key>
            <summary>Race condition when closing Peers and updating routes</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="cdgasparini">Claudio David Gasparini</assignee>
                                    <reporter username="cdgasparini">Claudio David Gasparini</reporter>
                        <labels>
                    </labels>
                <created>Tue, 14 Mar 2017 12:59:28 +0000</created>
                <updated>Sun, 3 Mar 2019 11:50:01 +0000</updated>
                            <resolved>Mon, 15 May 2017 09:12:41 +0000</resolved>
                                    <version>Bugzilla Migration</version>
                                    <fixVersion>Bugzilla Migration</fixVersion>
                                    <component>BGP</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="46114" author="milos.fabian@pantheon.tech" created="Wed, 15 Mar 2017 11:19:34 +0000"  >&lt;p&gt;Reminds me &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=4488&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=4488&lt;/a&gt;&lt;br/&gt;
My theory:&lt;br/&gt;
When new peer (&quot;A&quot;) connects, it register itself to the &quot;ExportPolicyPeerTracker&quot; (it&apos;s shared resource). Before the LocRibWriter gets a data change notification about peer &quot;A&quot;, another peer (&quot;B&quot;) has disconnected and it&apos;s routes are removed from Loc-RIB and from RIB-Outs of other peers (based on peers registered in ExportPolicyPeerTracker). So we are also trying to remove routes from peer &quot;A&quot; RIB-Out, however there no routes.&lt;/p&gt;

&lt;p&gt;Simply it is a race condition on shared resource.&lt;/p&gt;</comment>
                            <comment id="46115" author="milos.fabian@pantheon.tech" created="Thu, 16 Mar 2017 13:08:34 +0000"  >&lt;p&gt;(In reply to Milos Fabian from comment #1)&lt;br/&gt;
&amp;gt; Reminds me &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=4488&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=4488&lt;/a&gt;&lt;br/&gt;
&amp;gt; My theory:&lt;br/&gt;
&amp;gt; When new peer (&quot;A&quot;) connects, it register itself to the&lt;br/&gt;
&amp;gt; &quot;ExportPolicyPeerTracker&quot; (it&apos;s shared resource). Before the LocRibWriter&lt;br/&gt;
&amp;gt; gets a data change notification about peer &quot;A&quot;, another peer (&quot;B&quot;) has&lt;br/&gt;
&amp;gt; disconnected and it&apos;s routes are removed from Loc-RIB and from RIB-Outs of&lt;br/&gt;
&amp;gt; other peers (based on peers registered in ExportPolicyPeerTracker). So we&lt;br/&gt;
&amp;gt; are also trying to remove routes from peer &quot;A&quot; RIB-Out, however there no&lt;br/&gt;
&amp;gt; routes.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Simply it is a race condition on shared resource.&lt;/p&gt;

&lt;p&gt;This ExportPolicyPeerTracker registration change was done because of &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=6747&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=6747&lt;/a&gt;&lt;br/&gt;
We might consider adding some additional flag to ExportPolicyPeerTracker, set when LocRibWriter discovers a new peer, until that peer is excluded from RIB-Out modification operations.&lt;/p&gt;</comment>
                            <comment id="46116" author="cdgasparini" created="Fri, 17 Mar 2017 15:59:59 +0000"  >&lt;p&gt;(In reply to Milos Fabian from comment #2)&lt;br/&gt;
&amp;gt; (In reply to Milos Fabian from comment #1)&lt;br/&gt;
&amp;gt; &amp;gt; Reminds me &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=4488&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=4488&lt;/a&gt;&lt;br/&gt;
&amp;gt; &amp;gt; My theory:&lt;br/&gt;
&amp;gt; &amp;gt; When new peer (&quot;A&quot;) connects, it register itself to the&lt;br/&gt;
&amp;gt; &amp;gt; &quot;ExportPolicyPeerTracker&quot; (it&apos;s shared resource). Before the LocRibWriter&lt;br/&gt;
&amp;gt; &amp;gt; gets a data change notification about peer &quot;A&quot;, another peer (&quot;B&quot;) has&lt;br/&gt;
&amp;gt; &amp;gt; disconnected and it&apos;s routes are removed from Loc-RIB and from RIB-Outs of&lt;br/&gt;
&amp;gt; &amp;gt; other peers (based on peers registered in ExportPolicyPeerTracker). So we&lt;br/&gt;
&amp;gt; &amp;gt; are also trying to remove routes from peer &quot;A&quot; RIB-Out, however there no&lt;br/&gt;
&amp;gt; &amp;gt; routes.&lt;br/&gt;
&amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; Simply it is a race condition on shared resource.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; This ExportPolicyPeerTracker registration change was done because of&lt;br/&gt;
&amp;gt; &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=6747&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=6747&lt;/a&gt;&lt;br/&gt;
&amp;gt; We might consider adding some additional flag to ExportPolicyPeerTracker,&lt;br/&gt;
&amp;gt; set when LocRibWriter discovers a new peer, until that peer is excluded from&lt;br/&gt;
&amp;gt; RIB-Out modification operations.&lt;/p&gt;

&lt;p&gt;I don&apos;t think that is the cause of the issue, when we do remove something that doesn&apos;t exist there is no Exception error, indeed not change event is produced under RibOutListener since nothing has changed.&lt;br/&gt;
Indeed for check this, I&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;commented out addPathToDataStore -&amp;gt; therefore not path will be write under Loc&lt;/li&gt;
	&lt;li&gt;Post IPV4 Route via App Peer&lt;/li&gt;
	&lt;li&gt;Remove previously route&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;and as expected, AbstractRouteEntry#deleteRoute is executed and not exception is thrown even that path is not there.&lt;/p&gt;

&lt;p&gt;I think the cause is removing when parent doesn&apos;t exist. &lt;br/&gt;
1- It can be because peer still going up.&lt;br/&gt;
2- Changes is listen meanwhile peer is closing.&lt;/p&gt;</comment>
                            <comment id="46117" author="milos.fabian@pantheon.tech" created="Fri, 17 Mar 2017 16:41:38 +0000"  >&lt;p&gt;(In reply to Claudio D. Gasparini from comment #3)&lt;br/&gt;
&amp;gt; (In reply to Milos Fabian from comment #2)&lt;br/&gt;
&amp;gt; &amp;gt; (In reply to Milos Fabian from comment #1)&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; Reminds me &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=4488&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=4488&lt;/a&gt;&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; My theory:&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; When new peer (&quot;A&quot;) connects, it register itself to the&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &quot;ExportPolicyPeerTracker&quot; (it&apos;s shared resource). Before the LocRibWriter&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; gets a data change notification about peer &quot;A&quot;, another peer (&quot;B&quot;) has&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; disconnected and it&apos;s routes are removed from Loc-RIB and from RIB-Outs of&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; other peers (based on peers registered in ExportPolicyPeerTracker). So we&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; are also trying to remove routes from peer &quot;A&quot; RIB-Out, however there no&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; routes.&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; Simply it is a race condition on shared resource.&lt;br/&gt;
&amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; This ExportPolicyPeerTracker registration change was done because of&lt;br/&gt;
&amp;gt; &amp;gt; &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=6747&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=6747&lt;/a&gt;&lt;br/&gt;
&amp;gt; &amp;gt; We might consider adding some additional flag to ExportPolicyPeerTracker,&lt;br/&gt;
&amp;gt; &amp;gt; set when LocRibWriter discovers a new peer, until that peer is excluded from&lt;br/&gt;
&amp;gt; &amp;gt; RIB-Out modification operations.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; I don&apos;t think that is the cause of the issue, when we do remove something&lt;br/&gt;
&amp;gt; that doesn&apos;t exist there is no Exception error, indeed not change event is&lt;br/&gt;
&amp;gt; produced under RibOutListener since nothing has changed.&lt;br/&gt;
&amp;gt; Indeed for check this, I&lt;br/&gt;
&amp;gt; - commented out addPathToDataStore -&amp;gt; therefore not path will be write under&lt;br/&gt;
&amp;gt; Loc&lt;br/&gt;
&amp;gt; - Post IPV4 Route via App Peer&lt;br/&gt;
&amp;gt; - Remove previously route&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; and as expected, AbstractRouteEntry#deleteRoute is executed and not&lt;br/&gt;
&amp;gt; exception is thrown even that path is not there.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; I think the cause is removing when parent doesn&apos;t exist. &lt;br/&gt;
&amp;gt; 1- It can be because peer still going up.&lt;br/&gt;
&amp;gt; 2- Changes is listen meanwhile peer is closing.&lt;/p&gt;

&lt;p&gt;Yeah, you are right, it is complaining because of missing parent.&lt;br/&gt;
Still, shared ExportPolicyPeerTracker is an issue.&lt;br/&gt;
So, the peer&apos;s empty tables (including RIB-Out) are created in RibInWriter, so peer&apos;s registration to ExportPolicyPeerTracker should be done once the tables are successfully written (write TX submit future is done)?&lt;/p&gt;</comment>
                            <comment id="46118" author="cdgasparini" created="Mon, 20 Mar 2017 10:21:32 +0000"  >&lt;p&gt;(In reply to Milos Fabian from comment #4)&lt;br/&gt;
&amp;gt; (In reply to Claudio D. Gasparini from comment #3)&lt;br/&gt;
&amp;gt; &amp;gt; (In reply to Milos Fabian from comment #2)&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; (In reply to Milos Fabian from comment #1)&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; Reminds me &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=4488&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=4488&lt;/a&gt;&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; My theory:&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; When new peer (&quot;A&quot;) connects, it register itself to the&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; &quot;ExportPolicyPeerTracker&quot; (it&apos;s shared resource). Before the LocRibWriter&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; gets a data change notification about peer &quot;A&quot;, another peer (&quot;B&quot;) has&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; disconnected and it&apos;s routes are removed from Loc-RIB and from RIB-Outs of&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; other peers (based on peers registered in ExportPolicyPeerTracker). So we&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; are also trying to remove routes from peer &quot;A&quot; RIB-Out, however there no&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; routes.&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &amp;gt; Simply it is a race condition on shared resource.&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; This ExportPolicyPeerTracker registration change was done because of&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=6747&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=6747&lt;/a&gt;&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; We might consider adding some additional flag to ExportPolicyPeerTracker,&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; set when LocRibWriter discovers a new peer, until that peer is excluded from&lt;br/&gt;
&amp;gt; &amp;gt; &amp;gt; RIB-Out modification operations.&lt;br/&gt;
&amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; I don&apos;t think that is the cause of the issue, when we do remove something&lt;br/&gt;
&amp;gt; &amp;gt; that doesn&apos;t exist there is no Exception error, indeed not change event is&lt;br/&gt;
&amp;gt; &amp;gt; produced under RibOutListener since nothing has changed.&lt;br/&gt;
&amp;gt; &amp;gt; Indeed for check this, I&lt;br/&gt;
&amp;gt; &amp;gt; - commented out addPathToDataStore -&amp;gt; therefore not path will be write under&lt;br/&gt;
&amp;gt; &amp;gt; Loc&lt;br/&gt;
&amp;gt; &amp;gt; - Post IPV4 Route via App Peer&lt;br/&gt;
&amp;gt; &amp;gt; - Remove previously route&lt;br/&gt;
&amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; and as expected, AbstractRouteEntry#deleteRoute is executed and not&lt;br/&gt;
&amp;gt; &amp;gt; exception is thrown even that path is not there.&lt;br/&gt;
&amp;gt; &amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; I think the cause is removing when parent doesn&apos;t exist. &lt;br/&gt;
&amp;gt; &amp;gt; 1- It can be because peer still going up.&lt;br/&gt;
&amp;gt; &amp;gt; 2- Changes is listen meanwhile peer is closing.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Yeah, you are right, it is complaining because of missing parent.&lt;br/&gt;
&amp;gt; Still, shared ExportPolicyPeerTracker is an issue.&lt;br/&gt;
&amp;gt; So, the peer&apos;s empty tables (including RIB-Out) are created in RibInWriter,&lt;br/&gt;
&amp;gt; so peer&apos;s registration to ExportPolicyPeerTracker should be done once the&lt;br/&gt;
&amp;gt; tables are successfully written (write TX submit future is done)?&lt;/p&gt;

&lt;p&gt;register the flag once tables are written is not possible, since&lt;br/&gt;
LocRib initialize Peer with existent routes once it detects that new table has been created, then it can be a race between adding the peer to registry and the route initialization itself under LocRib.&lt;br/&gt;
Best solution as you mentioned before is to add a flag under Registry.&lt;br/&gt;
Aside from that, this is not the issue of this bug ( I will create a bug for previous issue). &lt;br/&gt;
Here the race is when peers are going down. They close and do clean up, but at the same time LocRib listen changes from the others peers removal and try to remove routes.&lt;/p&gt;</comment>
                            <comment id="46119" author="cdgasparini" created="Mon, 20 Mar 2017 10:26:29 +0000"  >&lt;p&gt;&lt;a href=&quot;https://logs.opendaylight.org/sandbox/jenkins091/bgpcep-csit-1node-periodic-bgp-ingest-only-boron/1/archives/odl1_karaf.log.gz&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/sandbox/jenkins091/bgpcep-csit-1node-periodic-bgp-ingest-only-boron/1/archives/odl1_karaf.log.gz&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="46120" author="cdgasparini" created="Tue, 21 Mar 2017 12:46:47 +0000"  >&lt;p&gt;Issue Definition&lt;br/&gt;
-When peers close, its removed from DS&lt;br/&gt;
-LocRib is processing changes and try to update peer which has been removed in&lt;br/&gt;
the meanwhile processing changes.&lt;/p&gt;

&lt;p&gt;AdjRibIn is in charge of remove Peer&lt;br/&gt;
LocRibIn is in charge of process changes.&lt;/p&gt;

&lt;p&gt;1-Both have their own transactionChain, we want to keep it in this way, since&lt;br/&gt;
in case of tx fail session can be restarted per specific peer, no affecting&lt;br/&gt;
RIB.&lt;br/&gt;
2-Also closing and removing the peer returns a future, which is used to do a proper restart, avoiding race between deletion and creation of the peer.&lt;/p&gt;

&lt;p&gt;Achieve a sync deletion with LocRib Update seems complicated without a shared tx.&lt;br/&gt;
Use some shared sync resource looks difficult because of 2.&lt;/p&gt;</comment>
                            <comment id="46121" author="cdgasparini" created="Mon, 27 Mar 2017 06:20:19 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/53810/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/53810/&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>7976</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=7976]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10300"><![CDATA[Bug]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10336"><![CDATA[Carbon-RC0]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i02dkf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>