BUG-6330: Fix race condition when reinstalling App Peer 54/43254/2
authorClaudio D. Gasparini <cgaspari@cisco.com>
Fri, 5 Aug 2016 10:12:21 +0000 (12:12 +0200)
committerMilos Fabian <milfabia@cisco.com>
Wed, 10 Aug 2016 09:19:02 +0000 (09:19 +0000)
Race condition produced fater reinstall Application Peer
with some existant routes.
Fix by register EffectiveRibIn listener after creation of
AdjribIn.

Change-Id: I39bf41e938cc6994f4e70bb4a912e6f9ce061e20
Signed-off-by: Claudio D. Gasparini <cgaspari@cisco.com>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/ApplicationPeer.java

index 2472b5cdf941d1205aab086b40e123589ef006e7..a6c3937644500ef6e2c24d1d9e05eb01b32d38a8 100644 (file)
@@ -71,11 +71,11 @@ public class ApplicationPeer implements AutoCloseable, org.opendaylight.protocol
         final YangInstanceIdentifier peerIId = this.targetRib.getYangRibId().node(Peer.QNAME).node(peerId);
         this.adjRibsInId = peerIId.node(AdjRibIn.QNAME).node(Tables.QNAME);
         this.chain = this.targetRib.createPeerChain(this);
-        this.effectiveRibInWriter = EffectiveRibInWriter.create(this.targetRib.getService(), this.targetRib.createPeerChain(this), peerIId, this.targetRib.getImportPolicyPeerTracker(),
-                this.targetRib.getRibSupportContext(), PeerRole.Internal);
         this.writerChain = this.targetRib.createPeerChain(this);
         this.writer = AdjRibInWriter.create(this.targetRib.getYangRibId(), PeerRole.Internal, this.writerChain);
         this.writer = this.writer.transform(RouterIds.createPeerId(ipAddress), this.targetRib.getRibSupportContext(), this.targetRib.getLocalTablesKeys(), true);
+        this.effectiveRibInWriter = EffectiveRibInWriter.create(this.targetRib.getService(), this.targetRib.createPeerChain(this), peerIId, this.targetRib.getImportPolicyPeerTracker(),
+            this.targetRib.getRibSupportContext(), PeerRole.Internal);
         this.moduleTracker = moduleTracker;
         if (moduleTracker != null) {
             moduleTracker.onInstanceCreate();