final VpnInstanceOpDataEntry vpnInstance = getVpnInstance(vrfTableKey.getRouteDistinguisher());
Preconditions.checkNotNull(vpnInstance, "Vpn Instance not available " + vrfTableKey.getRouteDistinguisher());
Preconditions.checkNotNull(vpnInstance.getVpnId(), "Vpn Instance with rd " + vpnInstance.getVrfId()
- + " has null vpnId!");
+ + " has null vpnId!");
final Collection<VpnToDpnList> vpnToDpnList = vpnInstance.getVpnToDpnList();
final Long vpnId = vpnInstance.getVpnId();
if (subnetRoute != null) {
final long elanTag = subnetRoute.getElantag();
LOG.trace("SubnetRoute augmented vrfentry found for rd {} prefix {} with elantag {}",
- rd, vrfEntry.getDestPrefix(), elanTag);
+ rd, vrfEntry.getDestPrefix(), elanTag);
if (vpnToDpnList != null) {
DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance();
- dataStoreCoordinator.enqueueJob("FIB-" + rd + "-" + vrfEntry.getDestPrefix(),
- () -> {
- WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
- for (final VpnToDpnList curDpn : vpnToDpnList) {
- if (curDpn.getDpnState() == VpnToDpnList.DpnState.Active) {
- installSubnetRouteInFib(curDpn.getDpnId(), elanTag, rd, vpnId, vrfEntry, tx);
- }
+ dataStoreCoordinator.enqueueJob("FIB-" + rd + "-" + vrfEntry.getDestPrefix(), () -> {
+ WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
+ for (final VpnToDpnList curDpn : vpnToDpnList) {
+ if (curDpn.getDpnState() == VpnToDpnList.DpnState.Active) {
+ installSubnetRouteInFib(curDpn.getDpnId(), elanTag, rd, vpnId, vrfEntry, tx);
}
- List<ListenableFuture<Void>> futures = new ArrayList<>();
- futures.add(tx.submit());
- return futures;
- });
+ }
+ List<ListenableFuture<Void>> futures = new ArrayList<>();
+ futures.add(tx.submit());
+ return futures;
+ });
}
return;
}
final List<BigInteger> localDpnIdList = createLocalFibEntry(vpnInstance.getVpnId(), rd, vrfEntry);
- if (vpnToDpnList != null) {
- DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance();
- dataStoreCoordinator.enqueueJob("FIB-" + rd + "-" + vrfEntry.getDestPrefix(),
- () -> {
+ if (!localDpnIdList.isEmpty()) {
+ if (vpnToDpnList != null) {
+ DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance();
+ dataStoreCoordinator.enqueueJob("FIB-" + rd + "-" + vrfEntry.getDestPrefix(), () -> {
WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
for (VpnToDpnList vpnDpn : vpnToDpnList) {
if (!localDpnIdList.contains(vpnDpn.getDpnId())) {
if (vpnDpn.getDpnState() == VpnToDpnList.DpnState.Active) {
- createRemoteFibEntry(vpnDpn.getDpnId(), vpnInstance.getVpnId(),
- vrfTableKey, vrfEntry, tx);
+ createRemoteFibEntry(vpnDpn.getDpnId(), vpnInstance.getVpnId(), vrfTableKey, vrfEntry,
+ tx);
}
}
}
futures.add(tx.submit());
return futures;
});
+ }
}
Optional<String> optVpnUuid = FibUtil.getVpnNameFromRd(dataBroker, rd);
}
}
}
+ if (returnLocalDpnId.isEmpty()) {
+ LOG.error("Local DPNID is empty for rd {}, vpnId {}, vrfEntry {}", rd, vpnId, vrfEntry);
+ }
} else {
BigInteger dpnId = checkCreateLocalFibEntry(localNextHopInfo, localNextHopIP, vpnId,
rd, vrfEntry, vpnId, /*routes*/ null, /*vpnExtraRoutes*/ null);
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledThreadPoolExecutor;
delAdjFromVpnInterface(identifier, adj, dpnId, writeOperTxn, writeConfigTxn);
}
}
+ ListenableFuture<Void> operFuture = writeOperTxn.submit();
+ try {
+ operFuture.get();
+ } catch (ExecutionException e) {
+ LOG.error("Exception encountered while submitting operational future for addVpnInterface {}: "
+ + "{}", vpnInterface.getName(), e);
+ return null;
+ }
List<ListenableFuture<Void>> futures = new ArrayList<>();
- futures.add(writeOperTxn.submit());
futures.add(writeConfigTxn.submit());
futures.add(writeInvTxn.submit());
return futures;
processVpnInterfaceDown(dpnId.equals(BigInteger.ZERO) ? vpnOpInterface.getDpnId() : dpnId,
interfaceName, ifIndex, false, true, writeConfigTxn, writeOperTxn,
writeInvTxn, interfaceState);
- futures.add(writeOperTxn.submit());
+ ListenableFuture<Void> operFuture = writeOperTxn.submit();
+ try {
+ operFuture.get();
+ } catch (ExecutionException e) {
+ LOG.error("Exception encountered while submitting operational future for remove "
+ + "VpnInterface {}: {}", vpnInterface.getName(), e);
+ return null;
+ }
futures.add(writeConfigTxn.submit());
futures.add(writeInvTxn.submit());
} else {
final VpnInterface update) {
LOG.trace("Updating VPN Interface : key {}, original value={}, update value={}", identifier, original, update);
LOG.info("VPN Interface update event - intfName {}", update.getName());
+ final String vpnInterfaceName = update.getName();
final String oldVpnName = original.getVpnInstanceName();
final String newVpnName = update.getVpnInstanceName();
- final BigInteger dpnId = InterfaceUtils.getDpnForInterface(ifaceMgrRpcService, update.getName());
+ final BigInteger dpnId = InterfaceUtils.getDpnForInterface(ifaceMgrRpcService, vpnInterfaceName);
final UpdateData updateData = new UpdateData(identifier, original, update);
final Adjacencies origAdjs = original.getAugmentation(Adjacencies.class);
final List<Adjacency> oldAdjs = (origAdjs != null && origAdjs.getAdjacency()
return;
}
final DataStoreJobCoordinator vpnInfAdjUpdateDataStoreCoordinator = DataStoreJobCoordinator.getInstance();
- vpnInfAdjUpdateDataStoreCoordinator.enqueueJob("VPNINTERFACE-" + update.getName(),
+ vpnInfAdjUpdateDataStoreCoordinator.enqueueJob("VPNINTERFACE-" + vpnInterfaceName,
() -> {
WriteTransaction writeConfigTxn = dataBroker.newWriteOnlyTransaction();
WriteTransaction writeOperTxn = dataBroker.newWriteOnlyTransaction();
- List<ListenableFuture<Void>> futures = new ArrayList<>();
//handle both addition and removal of adjacencies
//currently, new adjacency may be an extra route
if (!oldAdjs.equals(newAdjs)) {
delAdjFromVpnInterface(identifier, adj, dpnId, writeOperTxn, writeConfigTxn);
}
}
- futures.add(writeOperTxn.submit());
+ ListenableFuture<Void> operFuture = writeOperTxn.submit();
+ try {
+ operFuture.get();
+ } catch (ExecutionException e) {
+ LOG.error("Exception encountered while submitting operational future for update VpnInterface {}: "
+ + "{}", vpnInterfaceName, e);
+ return null;
+ }
+ List<ListenableFuture<Void>> futures = new ArrayList<>();
futures.add(writeConfigTxn.submit());
return futures;
});