X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=vpnmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Fvpnmanager%2FVpnServiceElanDpnInterfacesListener.java;h=bae3689e880d6156c8c902a322c80d1473c24319;hb=fa75e6796be12e0ac0a02b6e5785c12649e46cab;hp=642241dbe27d4e672e2e1b7654e738853b5aa882;hpb=2200318006dc115650ee160bfaf1660ece28fa1c;p=netvirt.git diff --git a/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java b/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java index 642241dbe2..bae3689e88 100644 --- a/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java +++ b/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java @@ -9,6 +9,7 @@ package org.opendaylight.netvirt.vpnmanager; import com.google.common.base.Optional; +import com.google.common.util.concurrent.ListenableFuture; import java.math.BigInteger; import java.util.ArrayList; @@ -19,13 +20,16 @@ import java.util.List; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.inject.Singleton; + import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase; +import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.infrautils.utils.concurrent.ListenableFutures; import org.opendaylight.netvirt.fibmanager.api.IFibManager; import org.opendaylight.netvirt.vpnmanager.api.VpnHelper; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanDpnInterfaces; @@ -89,15 +93,15 @@ public class VpnServiceElanDpnInterfacesListener String primaryRd = VpnUtil.getPrimaryRd(dataBroker, vpnName); if (elanInstance != null && !elanInstance.isExternal() && VpnUtil.isVlan(elanInstance)) { jobCoordinator.enqueueJob(elanInstance.getElanInstanceName(), () -> { - return Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(writeConfigTxn -> { + ListenableFuture future = txRunner.callWithNewWriteOnlyTransactionAndSubmit(writeConfigTxn -> { List addedInterfaces = getUpdatedInterfaceList(update.getInterfaces(), original.getInterfaces()); for (String addedInterface: addedInterfaces) { if (interfaceManager.isExternalInterface(addedInterface)) { - - InstanceIdentifier id = VpnHelper.getVpnToDpnListIdentifier(primaryRd, dpnId); - Optional dpnInVpn = VpnUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, - id); + InstanceIdentifier id = VpnHelper.getVpnToDpnListIdentifier(primaryRd, + dpnId); + Optional dpnInVpn = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, id); if (!dpnInVpn.isPresent() || (dpnInVpn.get().getVpnInterfaces() != null && dpnInVpn.get().getVpnInterfaces().size() != 1)) { return; @@ -119,10 +123,12 @@ public class VpnServiceElanDpnInterfacesListener VpnUtil.removeRouterPortFromElanForVlanInDpn(vpnName, dpnId, dataBroker); } } - })); + }); + ListenableFutures.addErrorLogging(future, LOG, "Failed to process DpnInterfaces update event for" + + "dpn {} elan {} vpn {}", dpnId, elanInstanceName, vpnName); + return Collections.singletonList(future); }); } - } @Override