From 347e0ec5080cd3bd14998f5ba9520e7ec60c388f Mon Sep 17 00:00:00 2001 From: Amitesh Soni Date: Thu, 9 Jan 2020 11:34:55 +0530 Subject: [PATCH] Minor changes in Elan Manager Change in method enqueueJobForMacSpecificTasks: Corrected the wrong data entry that was being passed during VM migration Added a few log statements Signed-off-by: Amitesh Soni Change-Id: I1d3fb93f0965605ec9914d84ebaf11d4f8f73c52 --- .../elan/internal/ElanDpnInterfaceClusteredListener.java | 3 ++- .../netvirt/elan/internal/ElanInstanceManager.java | 9 +++++---- .../netvirt/elan/internal/ElanInterfaceManager.java | 2 ++ .../netvirt/elan/internal/ElanPacketInHandler.java | 2 +- .../org/opendaylight/netvirt/elan/utils/ElanUtils.java | 5 +++++ 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanDpnInterfaceClusteredListener.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanDpnInterfaceClusteredListener.java index d18882be95..247c967b6d 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanDpnInterfaceClusteredListener.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanDpnInterfaceClusteredListener.java @@ -44,6 +44,7 @@ public class ElanDpnInterfaceClusteredListener extends AsyncClusteredDataTreeChangeListenerBase { private static final Logger LOG = LoggerFactory.getLogger(ElanDpnInterfaceClusteredListener.class); + private static final Logger EVENT_LOGGER = LoggerFactory.getLogger("NetvirtEventLogger"); private final DataBroker broker; private final EntityOwnershipUtils entityOwnershipUtils; @@ -153,7 +154,7 @@ public class ElanDpnInterfaceClusteredListener @Override public void add(InstanceIdentifier identifier, final DpnInterfaces dpnInterfaces) { final String elanName = getElanName(identifier); - + EVENT_LOGGER.debug("ELAN-DpnInterface, ADD DPN {} Instance {}", dpnInterfaces.getDpId(), elanName); jobCoordinator.enqueueJob(elanName + ":l2gw", () -> { elanInstanceDpnsCache.add(getElanName(identifier), dpnInterfaces); if (entityOwnershipUtils.isEntityOwner(HwvtepSouthboundConstants.ELAN_ENTITY_TYPE, diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInstanceManager.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInstanceManager.java index 925b28802e..f14edc1845 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInstanceManager.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInstanceManager.java @@ -114,8 +114,9 @@ public class ElanInstanceManager extends AsyncDataTreeChangeListenerBase LoggingFutures.addErrorLogging( txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, confTx -> ElanUtils.updateOperationalDataStore(idManager, update, new ArrayList<>(), confTx, - operTx)), LOG, "Error updating ELAN tag in ELAN instance")), LOG, - "Error updating ELAN tag in ELAN instance"); + operTx)), LOG, "Error updating ELAN tag in ELAN instance for config " + + "transaction")), LOG, + "Error updating ELAN tag in ELAN instance for operational transaction"); } else { jobCoordinator.enqueueJob(elanName, () -> elanInterfaceManager.handleunprocessedElanInterfaces(update), ElanConstants.JOB_MAX_RETRIES); @@ -132,9 +133,9 @@ public class ElanInstanceManager extends AsyncDataTreeChangeListenerBase ElanUtils.updateOperationalDataStore(idManager, elanInstanceAdded, new ArrayList<>(), - confTx, operTx)), LOG, "Error adding an ELAN instance"); + confTx, operTx)), LOG, "Error adding an ELAN instance for config transaction"); } - }), LOG, "Error adding an ELAN instance"); + }), LOG, "Error adding an ELAN instance for operational transaction"); } @Override diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceManager.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceManager.java index 978a75b79d..99c27429f4 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceManager.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceManager.java @@ -637,6 +637,8 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase macTimeStamp + 1000) { InstanceIdentifier macEntryId = ElanUtils - .getInterfaceMacEntriesIdentifierOperationalDataPath(interfaceName, + .getInterfaceMacEntriesIdentifierOperationalDataPath(oldMacEntry.getInterface(), physAddress); tx.delete(macEntryId); } else { diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanUtils.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanUtils.java index 6ca73236fa..cef193f439 100755 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanUtils.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanUtils.java @@ -1160,6 +1160,11 @@ public class ElanUtils { if (elanTag == null || elanTag.longValue() == 0L) { elanTag = retrieveNewElanTag(idManager, elanInstanceName); } + if (elanTag.longValue() == 0L) { + LOG.error("ELAN tag creation failed for elan instance {}. Not updating the ELAN DS. " + + "Recreate network for recovery", elanInstanceName); + return null; + } Elan elanInfo = new ElanBuilder().setName(elanInstanceName).setElanInterfaces(elanInterfaces) .withKey(new ElanKey(elanInstanceName)).build(); -- 2.36.6