Bug9245: Table=21 related exceptions fixes 81/64381/10
authorehvkand <hanamantagoud.v.kandagal@ericsson.com>
Tue, 17 Oct 2017 06:05:25 +0000 (11:35 +0530)
committerMichael Vorburger <vorburger@redhat.com>
Fri, 27 Oct 2017 09:59:07 +0000 (11:59 +0200)
https://jira.opendaylight.org/browse/NETVIRT-940

Change-Id: I66ae23bd3fd9ad1e2a80648672f8120ffd3beea3
Signed-off-by: ehvkand <hanamantagoud.v.kandagal@ericsson.com>
Signed-off-by: HANAMANTAGOUD V Kandagal <hanamantagoud.v.kandagal@ericsson.com>
vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/BaseVrfEntryHandler.java
vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/IPv6Handler.java
vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/VrfEntryListener.java

index 96b0dfcc23fd0a830c40a6dbd4902a2645f65cf7..c095360325a1b740bc05236d5968861853452cad 100644 (file)
@@ -510,9 +510,9 @@ public class BaseVrfEntryHandler implements AutoCloseable {
                 0, 0, NwConstants.COOKIE_VM_FIB_TABLE, matches, instructions);
 
         if (addOrRemove == NwConstants.ADD_FLOW) {
-            mdsalManager.installFlow(flowEntity);
+            mdsalManager.syncInstallFlow(flowEntity, 1);
         } else {
-            mdsalManager.removeFlow(flowEntity);
+            mdsalManager.syncInstallFlow(flowEntity, 1);
         }
     }
 }
index 7e5c37c4c00f62fc20ebafb8e7914253a600434c..bf801321e5738d9d70740a16e6b1c762b3b4a111 100644 (file)
@@ -79,9 +79,9 @@ public class IPv6Handler {
                 0, 0, NwConstants.COOKIE_VM_FIB_TABLE, matches, instructions);
 
         if (addOrRemove == NwConstants.ADD_FLOW) {
-            mdsalManager.installFlow(flowEntity);
+            mdsalManager.syncInstallFlow(flowEntity, 1);
         } else {
-            mdsalManager.removeFlow(flowEntity);
+            mdsalManager.syncInstallFlow(flowEntity, 1);
         }
     }
 }
index ebf6aa4517972fe55fa41005aa0122795bbe5bf9..12842362a583c7d55cf55febb790bf42ee2fbb35 100755 (executable)
@@ -366,20 +366,22 @@ public class VrfEntryListener extends AsyncDataTreeChangeListenerBase<VrfEntry,
             DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance();
             dataStoreCoordinator.enqueueJob(FibUtil.getJobKeyForRdPrefix(rd, vrfEntry.getDestPrefix()), () -> {
                 WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
-                for (VpnToDpnList vpnDpn : vpnToDpnList) {
-                    if (!localDpnIdList.contains(vpnDpn.getDpnId())) {
-                        if (vpnDpn.getDpnState() == VpnToDpnList.DpnState.Active) {
-                            try {
-                                if (RouteOrigin.BGP.getValue().equals(vrfEntry.getOrigin())) {
-                                    bgpRouteVrfEntryHandler.createRemoteFibEntry(vpnDpn.getDpnId(),
-                                            vpnId, vrfTableKey.getRouteDistinguisher(), vrfEntry, tx, txnObjects);
-                                } else {
-                                    createRemoteFibEntry(vpnDpn.getDpnId(), vpnInstance.getVpnId(),
-                                            vrfTableKey.getRouteDistinguisher(), vrfEntry, tx);
+                synchronized (vpnInstance.getVpnInstanceName().intern()) {
+                    for (VpnToDpnList vpnDpn : vpnToDpnList) {
+                        if (!localDpnIdList.contains(vpnDpn.getDpnId())) {
+                            if (vpnDpn.getDpnState() == VpnToDpnList.DpnState.Active) {
+                                try {
+                                    if (RouteOrigin.BGP.getValue().equals(vrfEntry.getOrigin())) {
+                                        bgpRouteVrfEntryHandler.createRemoteFibEntry(vpnDpn.getDpnId(),
+                                                vpnId, vrfTableKey.getRouteDistinguisher(), vrfEntry, tx, txnObjects);
+                                    } else {
+                                        createRemoteFibEntry(vpnDpn.getDpnId(), vpnInstance.getVpnId(),
+                                                vrfTableKey.getRouteDistinguisher(), vrfEntry, tx);
+                                    }
+                                } catch (NullPointerException e) {
+                                    LOG.error("Failed to get create remote fib flows for prefix {} ",
+                                            vrfEntry.getDestPrefix(), e);
                                 }
-                            } catch (NullPointerException e) {
-                                LOG.error("Failed to get create remote fib flows for prefix {} ",
-                                        vrfEntry.getDestPrefix(), e);
                             }
                         }
                     }