Bug-6453: NPE reported in RibImpl class during controller shutdown when debugs enabled 04/44204/2
authorAjay <ajayl.bro@gmail.com>
Wed, 17 Aug 2016 18:44:42 +0000 (18:44 +0000)
committerMilos Fabian <milfabia@cisco.com>
Thu, 18 Aug 2016 17:09:43 +0000 (17:09 +0000)
- Log message before calling RIBImpl#close()
- Add null check to RIBImpl#toString()

Change-Id: I5eb4bd834f346bec379d888615cb2c522af923a8
Signed-off-by: Ajay <ajayl.bro@gmail.com>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpDeployerImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/RibImpl.java

index e014f3f7d64291ff2d8bf60dbc965e3225d618cf..c3fc9c9c080c9b1a813906820f9b5a40064a0b51 100644 (file)
@@ -162,6 +162,7 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
         LOG.debug("Modifying RIB instance with configuration: {}", global);
         //restart existing rib instance with a new configuration
         final RibImpl ribImpl = this.ribs.get(rootIdentifier);
+        LOG.debug("RIB instance modified {}", ribImpl);
         if(ribImpl == null ) {
             onGlobalCreated(rootIdentifier, global, configurationWriter);
         } else if (!ribImpl.isGlobalEqual(global)) {
@@ -169,8 +170,7 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
             ribImpl.close();
             initiateRibInstance(rootIdentifier, global, ribImpl, configurationWriter);
             closedPeers.forEach(peer -> peer.restart(ribImpl, this.mappingService));
-       }
-        LOG.debug("RIB instance modified {}", ribImpl);
+        }
     }
 
     private List<PeerBean> closeAllBindedPeers(final InstanceIdentifier<Bgp> rootIdentifier) {
@@ -199,8 +199,8 @@ public final class BgpDeployerImpl implements BgpDeployer, ClusteredDataTreeChan
         LOG.debug("Removing RIB instance: {}", rootIdentifier);
         final RibImpl ribImpl = this.ribs.remove(rootIdentifier);
         if (ribImpl != null) {
-            ribImpl.close();
             LOG.debug("RIB instance removed {}", ribImpl);
+            ribImpl.close();
         }
     }
 
index 66716a365a3f5f341e07919d41d3711d306dcc1f..b297195012d9ae8248b206c3087fcf56d5d91f24 100644 (file)
@@ -214,7 +214,7 @@ public final class RibImpl implements RIB, AutoCloseable {
 
     @Override
     public String toString() {
-        return this.ribImpl.toString();
+        return this.ribImpl != null ? this.ribImpl.toString() : null;
     }
 
     private RIBImpl createRib(final ClusterSingletonServiceProvider provider, final Global global, final String bgpInstanceName,