From 7a57198d127db52706009dc135180fd910748739 Mon Sep 17 00:00:00 2001 From: ehvkand Date: Tue, 17 Oct 2017 11:35:25 +0530 Subject: [PATCH] Bug9245: Table=21 related exceptions fixes https://jira.opendaylight.org/browse/NETVIRT-940 Change-Id: I66ae23bd3fd9ad1e2a80648672f8120ffd3beea3 Signed-off-by: ehvkand Signed-off-by: HANAMANTAGOUD V Kandagal --- .../fibmanager/BaseVrfEntryHandler.java | 4 +-- .../netvirt/fibmanager/IPv6Handler.java | 4 +-- .../netvirt/fibmanager/VrfEntryListener.java | 28 ++++++++++--------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/BaseVrfEntryHandler.java b/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/BaseVrfEntryHandler.java index 96b0dfcc23..c095360325 100644 --- a/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/BaseVrfEntryHandler.java +++ b/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/BaseVrfEntryHandler.java @@ -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); } } } diff --git a/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/IPv6Handler.java b/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/IPv6Handler.java index 7e5c37c4c0..bf801321e5 100644 --- a/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/IPv6Handler.java +++ b/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/IPv6Handler.java @@ -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); } } } diff --git a/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/VrfEntryListener.java b/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/VrfEntryListener.java index ebf6aa4517..12842362a5 100755 --- a/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/VrfEntryListener.java +++ b/vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/VrfEntryListener.java @@ -366,20 +366,22 @@ public class VrfEntryListener extends AsyncDataTreeChangeListenerBase { 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); } } } -- 2.36.6