Fix: ITM tunnels going to Unknown state after cic reboot 66/91766/2
authorApurba Mukherjee <apurba.mukherjee@ericsson.com>
Thu, 30 Jul 2020 06:47:17 +0000 (12:17 +0530)
committerHema Gopalakrishnan <hema.gopalkrishnan@ericsson.com>
Mon, 3 Aug 2020 16:50:21 +0000 (16:50 +0000)
As part of cic-1 reboot, DPNs connected to cic-1 got disconnected.
The tunnels associated to those DPNs went to unknown state. Those DPNs
then connected back to cic-3. When cic-3 became entity owner,
EoSListener was not invoked by MDSAL since ITM unregisters the listener
after 1st invocation. So EoSHandler could not set the unknown tunnels to
up. To fix this issue, the listener unregistration is removed.

Change-Id: I96c4f7fc4a94d2eeca8f9ea962a26b900c390493
Signed-off-by: Apurba Mukherjee <apurba.mukherjee@ericsson.com>
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java

index 5cab70464108169ffc435c42685efd6dafa3ff58..faa434f659b9da198d8c825f07b314092b2e499e 100644 (file)
@@ -73,6 +73,7 @@ import org.slf4j.LoggerFactory;
 public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateService */ {
 
     private static final Logger LOG = LoggerFactory.getLogger(ItmProvider.class);
+    private static final Logger EVENT_LOGGER = LoggerFactory.getLogger("GeniusEventLogger");
 
     private final DataBroker dataBroker;
     private final ItmManagerRpcService itmRpcService ;
@@ -375,15 +376,14 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
                                       EntityOwnershipListenerRegistration listenerRegistration) {
         if (ownershipChange.getState().isOwner()) {
             LOG.info("*This* instance of provider is set as a MASTER instance");
+            EVENT_LOGGER.debug("****MASTER**** instance");
             createDefaultTransportZone(itmConfig);
             eosChangeEventHandler.recoverUnknownTunnelsOnEosSwitch();
         } else {
             LOG.info("*This* instance of provider is set as a SLAVE instance");
+            EVENT_LOGGER.debug("****SLAVE**** instance");
         }
         itmStatusProvider.reportStatus(ServiceState.OPERATIONAL);
-        if (listenerRegistration != null) {
-            listenerRegistration.close();
-        }
     }
 
     private static class ItmProviderEOSListener implements EntityOwnershipListener {
@@ -393,6 +393,7 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
         ItmProviderEOSListener(ItmProvider itmProviderObj, EntityOwnershipService entityOwnershipService) {
             this.itmProviderObj = itmProviderObj;
             this.listenerRegistration = entityOwnershipService.registerListener(ITMConstants.ITM_CONFIG_ENTITY, this);
+            EVENT_LOGGER.debug("ItmProviderEOSListener: registered");
         }
 
         public void close() {
@@ -401,6 +402,7 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
 
         @Override
         public void ownershipChanged(EntityOwnershipChange ownershipChange) {
+            EVENT_LOGGER.debug("****ownershipChanged****");
             itmProviderObj.handleOwnershipChange(ownershipChange, listenerRegistration);
         }
     }