Bug 6490 : After VM migration, L3VPN flows are failed to program 52/44452/3
authorD Arunprakash <d.arunprakash@ericsson.com>
Mon, 22 Aug 2016 06:26:46 +0000 (11:56 +0530)
committerD Arunprakash <d.arunprakash@ericsson.com>
Mon, 22 Aug 2016 10:46:29 +0000 (16:16 +0530)
L3VPN is processing both remove and add event parallely.
Because of this race condition occurs and in ends up in
removing the flows programmed for table 21 on new DPN.

This fix has introduced a delay of 10sec for VM migration
events for remove and add in interfacemanager code.

Change-Id: I46958eb6cc4d28710014699d7b11ff1ecb93e98d
Signed-off-by: D Arunprakash <d.arunprakash@ericsson.com>
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmConstants.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceInventoryStateListener.java

index b8507a79f73a16931710380c6bbf4afc73ac73f6..42d0766c5226b2661e96d3ad124954ef851a39eb 100644 (file)
@@ -35,4 +35,5 @@ public class IfmConstants {
     public static final int REG6_END_INDEX = 31;
 
     public static final int JOB_MAX_RETRIES = 6;
+    public static final long DELAY_TIME_IN_MILLISECOND = 10000;
 }
index 97a1c3da11010750859a57c53037fb3ae88e4942..84d4e4151407de1a66ad4615e78bc0a3c53c5ebc 100644 (file)
@@ -135,6 +135,12 @@ public class InterfaceInventoryStateListener extends AsyncClusteredDataTreeChang
                         LOG.debug("Triggering NodeConnector Remove Event for the interface: {}, {}, {}", portName, nodeConnectorId, nodeConnectorIdOld);
                         boolean isNodePresent = InterfaceManagerCommonUtils.isNodePresent(dataBroker, nodeConnectorIdOld);
                         remove(nodeConnectorId, nodeConnectorIdOld, fcNodeConnectorNew, portName, isNodePresent);
+                        //Adding a delay of 10sec for VM migration, so applications can process remove and add events
+                        try {
+                            Thread.sleep(IfmConstants.DELAY_TIME_IN_MILLISECOND);
+                        } catch (InterruptedException e) {
+                            LOG.error("Error while waiting for the vm migration remove events to get processed");
+                        }
                     }
                 } else {
                     portName = getDpnPrefixedPortName(nodeConnectorId, portName);
@@ -302,4 +308,4 @@ public class InterfaceInventoryStateListener extends AsyncClusteredDataTreeChang
         }
         return new ArrayList<>();
     }
-}
\ No newline at end of file
+}