ELAN Reboot fixes and Flow ID change 63/84763/7
authorAmitesh Soni <amitesh.soni@ericsson.com>
Wed, 4 Dec 2019 10:17:42 +0000 (15:47 +0530)
committerAbhinav Gupta <abhinav.gupta@ericsson.com>
Wed, 8 Jan 2020 13:54:49 +0000 (13:54 +0000)
commit404a9b2c8b5d11b3237aa11e442b3d6a199ded01
treeecd9850d98bb90c0c3220c15d48df5f538351876
parent5144c1827bce5b027241ced92fe187142a65355e
ELAN Reboot fixes and Flow ID change

1) Table 51 MAC issue after CSC reboot
Description: This is to avoid stale entries being created.
The solution is to construct a flow key with ELAN tag and
MAC address, which would update the same flow after MAC movement.

2) VM Migration Table 51 stale entry
Description: Issue is observed when ElanLearnVpnVip MIP MAC
and Interface MAC are same. During migration, ElanLearntVpnVipToPortListener
remove deletes MAC entry from ElanInterfaceForwardingEntries,
which is referred by ElanInterfaceStateChangeListener remove workflow,
which is started after the ElanInterfaceForwardingEntries thread completes
its course of action. Both threads have an action to delete DMAC flow entries
but the first thread refers InterfaceManager for InterfaceInfo
which returns null, hence skips the delete DMAC workflow, but deletes the
MAC entry. Other thread refers MAC entry, which has been deleted
by first thread, hence this too skips delete workflow.
The solution is to delete MAC entry in first thread only if InterfaceInfo
is not null so that second thread can delete DMAC entry as well as delete
MAC entry during its course of action.

Signed-off-by: Amitesh Soni <amitesh.soni@ericsson.com>
Change-Id: I9a2b72e0d70a2edf9072c77fc35314e1b7a2c46d
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceManager.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanSmacFlowEventListener.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanUtils.java
elanmanager/impl/src/test/java/org/opendaylight/netvirt/elanmanager/tests/ElanServiceTest.java
elanmanager/impl/src/test/java/org/opendaylight/netvirt/elanmanager/tests/Verifications.java