- MacEntry macEntry = elanUtils.getInterfaceMacEntriesOperationalDataPath(interfaceName, physAddress);
- InterfaceInfo interfaceInfo = interfaceManager.getInterfaceInfo(interfaceName);
- String elanInstanceName = elanTagInfo.getName();
- if (macEntry != null && interfaceInfo != null) {
- WriteTransaction deleteFlowTx = broker.newWriteOnlyTransaction();
- elanUtils.deleteMacFlows(ElanUtils.getElanInstanceByName(broker, elanInstanceName), interfaceInfo,
- macEntry, deleteFlowTx);
- ListenableFuture<Void> result = deleteFlowTx.submit();
- addCallBack(result, srcMacAddress);
- }
- InstanceIdentifier<MacEntry> macEntryIdForElanInterface = ElanUtils
- .getInterfaceMacEntriesIdentifierOperationalDataPath(interfaceName, physAddress);
- WriteTransaction tx = broker.newWriteOnlyTransaction();
- Optional<MacEntry> existingInterfaceMacEntry = elanUtils.read(broker,
- LogicalDatastoreType.OPERATIONAL, macEntryIdForElanInterface);
- if (existingInterfaceMacEntry.isPresent()) {
- tx.delete(LogicalDatastoreType.OPERATIONAL, macEntryIdForElanInterface);
- MacEntry macEntryInElanInstance = elanUtils.getMacEntryForElanInstance(elanInstanceName,
- physAddress).orNull();
- if (macEntryInElanInstance != null
- && macEntryInElanInstance.getInterface().equals(interfaceName)) {
- InstanceIdentifier<MacEntry> macEntryIdForElanInstance = ElanUtils
- .getMacEntryOperationalDataPath(elanInstanceName, physAddress);
- tx.delete(LogicalDatastoreType.OPERATIONAL, macEntryIdForElanInstance);
+ //DataStoreJobCoordinate
+ DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
+ coordinator.enqueueJob(ElanUtils.getElanInterfaceJobKey(interfaceName), () -> {
+ List<ListenableFuture<Void>> elanFutures = new ArrayList<>();
+ MacEntry macEntry = elanUtils.getInterfaceMacEntriesOperationalDataPath(interfaceName, physAddress);
+ InterfaceInfo interfaceInfo = interfaceManager.getInterfaceInfo(interfaceName);
+ String elanInstanceName = elanTagInfo.getName();
+ LOG.info("Deleting the Mac-Entry:{} present on ElanInstance:{}", macEntry, elanInstanceName);
+ if (macEntry != null && interfaceInfo != null) {
+ WriteTransaction deleteFlowTx = broker.newWriteOnlyTransaction();
+ elanUtils.deleteMacFlows(ElanUtils.getElanInstanceByName(broker, elanInstanceName), interfaceInfo,
+ macEntry, deleteFlowTx);
+ ListenableFuture<Void> result = deleteFlowTx.submit();
+ elanFutures.add(result);
+ addCallBack(result, srcMacAddress);