IFM: InterfaceStatecache not updated correctly 03/41803/3
authorVishal Thapar <vishal.thapar@ericsson.com>
Thu, 14 Jul 2016 07:00:47 +0000 (12:30 +0530)
committerVishal Thapar <vishal.thapar@ericsson.com>
Thu, 14 Jul 2016 08:45:12 +0000 (14:15 +0530)
1. CacheInterfaceStateListener is listening on CONFIGURATION DS changes
but it should be Operational as state changes are only made on operational
DS.
2.cache.remove() methods in InterfaceManagerCommonUtils use remove(key,
oject) to delete from cache. This is not an accurate representation of
deletes on DS where we only use key and leads to inconsistent behavior.
This fix changes those methods to only use key [interface name] to remove
from cache.

Change-Id: I322a3c5df9631cda2f5bdc4b46adf886a18bf88b
Signed-off-by: Vishal Thapar <vishal.thapar@ericsson.com>
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/InterfacemgrProvider.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceManagerCommonUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceConfigListener.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceStateListener.java

index d48e77209ee83e4af1f65d87a476fbdb937e21d6..7a306159ba57cbc461bfe1a5aa756dcb58d8a10b 100644 (file)
@@ -160,10 +160,8 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable
             notificationService.registerNotificationListener(alivenessMonitorListener);
 
             cacheInterfaceConfigListener = new CacheInterfaceConfigListener(dataBroker);
-            cacheInterfaceConfigListener.registerListener(dataBroker);
 
             cacheInterfaceStateListener = new CacheInterfaceStateListener(dataBroker);
-            cacheInterfaceStateListener.registerListener(dataBroker);
 
             //Initialize nodeconnectorstatsimpl
             nodeConnectorStatsManager = new NodeConnectorStatsImpl(dataBroker, notificationService,
index 60f8e6e81cc19289665c89dc23d27c2e58601b4c..a38f8989deab139a43ce5287519ee26f0f37e4fb 100644 (file)
@@ -400,7 +400,7 @@ public class InterfaceManagerCommonUtils {
     }
 
     public static void removeFromInterfaceCache(Interface iface) {
-        interfaceConfigMap.remove(iface.getName(), iface);
+        interfaceConfigMap.remove(iface.getName());
     }
 
     public static void addInterfaceStateToCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface iface) {
@@ -408,6 +408,6 @@ public class InterfaceManagerCommonUtils {
     }
 
     public static void removeFromInterfaceStateCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface iface) {
-        interfaceStateMap.remove(iface.getName(), iface);
+        interfaceStateMap.remove(iface.getName());
     }
 }
\ No newline at end of file
index fbb8e4098af06c860a70cad0b8f37adf2a23ac9d..9c187097fbab7230910ed279af11a9157b6deaae 100644 (file)
@@ -38,7 +38,7 @@ public class CacheInterfaceConfigListener implements ClusteredDataTreeChangeList
         registerListener(db);
     }
 
-    public void registerListener(DataBroker db) {
+    private void registerListener(DataBroker db) {
         final DataTreeIdentifier<Interface> treeId =
                         new DataTreeIdentifier<Interface>(LogicalDatastoreType.CONFIGURATION, getWildcardPath());
         try {
index cc2424af0558fbbd136a948ac035f85be62b0a8d..0497a529138eb37baab0dcf036bad914e3db0a96 100644 (file)
@@ -38,9 +38,9 @@ public class CacheInterfaceStateListener implements ClusteredDataTreeChangeListe
         registerListener(db);
     }
 
-    public void registerListener(DataBroker db) {
+    private void registerListener(DataBroker db) {
         final DataTreeIdentifier<Interface> treeId =
-                        new DataTreeIdentifier<Interface>(LogicalDatastoreType.CONFIGURATION, getWildcardPath());
+                        new DataTreeIdentifier<Interface>(LogicalDatastoreType.OPERATIONAL, getWildcardPath());
         try {
             LOG.trace("Registering on path: {}", treeId);
             registration = db.registerDataTreeChangeListener(treeId, CacheInterfaceStateListener.this);