From 41c7620f8b7f2d5bb6ee18ad4e274a5b1d25ad6d Mon Sep 17 00:00:00 2001 From: Michal Cmarada Date: Tue, 8 Aug 2017 17:16:42 +0200 Subject: [PATCH] update deprecated transform and addCallback methods - transform and addCallback methods are deprecated, replacement methods use Executor as param. To preserve the same functionality we will use MoreExecutors#directExecutor. Change-Id: Ia7f0b76c762e92124e62d7695924b4813269e873 Signed-off-by: Michal Cmarada --- .../BaseEndpointServiceImpl.java | 14 +- .../endpoint/EndpointRpcRegistry.java | 28 ++- .../groupbasedpolicy/util/EndpointUtils.java | 16 +- .../neutron/ovsdb/OvsdbNodeListener.java | 3 +- .../impl/IosXeRendererProviderImpl.java | 9 +- .../impl/manager/NodeManager.java | 5 +- .../impl/manager/PolicyManagerImpl.java | 10 +- .../iovisor/sf/ActionDefinitionListener.java | 13 +- .../sf/ClassifierDefinitionListener.java | 5 +- .../renderer/ofoverlay/OfWriter.java | 6 +- .../renderer/ofoverlay/PolicyManager.java | 7 +- .../renderer/ofoverlay/arp/ArpTasker.java | 9 +- .../sf/ActionDefinitionListener.java | 16 +- .../sf/ClassifierDefinitionListener.java | 21 ++- .../config/vpp_provider/impl/VppRenderer.java | 6 +- .../vpp/adapter/VppRpcServiceImpl.java | 9 +- .../renderer/vpp/iface/InterfaceManager.java | 3 +- .../renderer/vpp/manager/VppNodeManager.java | 5 +- .../vpp/policy/BridgeDomainManagerImpl.java | 159 +++++++++--------- .../vpp/policy/VppRendererPolicyManager.java | 1 - .../impl/IpSgtDistributionServiceImpl.java | 5 +- .../ep/provider/impl/EPToSgtMapperImpl.java | 5 +- .../provider/impl/SxpMapperReactorImpl.java | 6 +- .../impl/dao/EPForwardingTemplateDaoImpl.java | 8 +- .../dao/EPPolicyTemplateDaoFacadeImpl.java | 11 +- .../impl/dao/EPPolicyTemplateDaoImpl.java | 6 +- .../dao/MasterDatabaseBindingDaoImpl.java | 14 +- .../EPForwardingTemplateListenerImpl.java | 9 +- .../listen/EPPolicyTemplateListenerImpl.java | 108 ++++++------ .../MasterDatabaseBindingListenerImpl.java | 6 +- .../ep/provider/impl/util/EPTemplateUtil.java | 12 +- .../impl/EPPolicyTemplateProviderIseImpl.java | 8 +- .../impl/GbpIseConfigListenerImpl.java | 3 +- .../impl/GbpIseSgtHarvesterImpl.java | 5 +- 34 files changed, 290 insertions(+), 261 deletions(-) diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java index 38a78b5ce..d8e05be52 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java @@ -58,6 +58,7 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseable { @@ -65,13 +66,8 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab private final DataBroker dataProvider; private final EndpointAugmentorRegistryImpl epAugRegistry; - private static final Function> TO_SUCCESS_RPC_RESULT = new Function>() { - - @Override - public RpcResult apply(Void input) { - return RpcResultBuilder.success().build(); - } - }; + private static final Function> TO_SUCCESS_RPC_RESULT = + input -> RpcResultBuilder.success().build(); public BaseEndpointServiceImpl(DataBroker dataProvider, EndpointAugmentorRegistryImpl epAugRegistry) { this.epAugRegistry = Preconditions.checkNotNull(epAugRegistry); @@ -115,7 +111,7 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab addAddressEndpointToParents(t, endpoint); } - return Futures.transform(t.submit(), TO_SUCCESS_RPC_RESULT); + return Futures.transform(t.submit(), TO_SUCCESS_RPC_RESULT, MoreExecutors.directExecutor()); } private void addContainmentEndpointToChilds(ReadWriteTransaction t, ContainmentEndpoint endpoint) { @@ -265,7 +261,7 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab } ListenableFuture r = t.submit(); - return Futures.transform(r, TO_SUCCESS_RPC_RESULT); + return Futures.transform(r, TO_SUCCESS_RPC_RESULT, MoreExecutors.directExecutor()); } private void deleteAddressEndpointFromParents(ReadWriteTransaction t, AddressEndpoint endpoint) { diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java index c2e466250..8c2351db2 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java @@ -59,6 +59,7 @@ import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; /** * Endpoint registry provides a scalable store for accessing and updating @@ -66,12 +67,11 @@ import com.google.common.util.concurrent.ListenableFuture; */ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentationRegistry, AutoCloseable { - private static final Logger LOG = LoggerFactory.getLogger(EndpointRpcRegistry.class); - - private final DataBroker dataProvider; - final static ConcurrentMap registeredRenderers = new ConcurrentHashMap(); + private static final Logger LOG = LoggerFactory.getLogger(EndpointRpcRegistry.class); + private final DataBroker dataProvider; + private Function> futureTrans = input -> RpcResultBuilder.success().build(); /** * This method registers a renderer for endpoint RPC API. This method @@ -126,7 +126,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat public void onSuccess(Void result) { } - }); + }, MoreExecutors.directExecutor()); } // TODO Be alagalah - age out endpoint data and remove @@ -234,7 +234,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat } } ListenableFuture r = t.submit(); - return Futures.transform(r, futureTrans); + return Futures.transform(r, futureTrans, MoreExecutors.directExecutor()); } @Override @@ -272,7 +272,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat t.put(LogicalDatastoreType.OPERATIONAL, iid_l3prefix, epL3Prefix); ListenableFuture r = t.submit(); - return Futures.transform(r, futureTrans); + return Futures.transform(r, futureTrans, MoreExecutors.directExecutor()); } @Override @@ -304,7 +304,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat } ListenableFuture r = t.submit(); - return Futures.transform(r, futureTrans); + return Futures.transform(r, futureTrans, MoreExecutors.directExecutor()); } @Override @@ -323,7 +323,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat } ListenableFuture r = t.submit(); - return Futures.transform(r, futureTrans); + return Futures.transform(r, futureTrans, MoreExecutors.directExecutor()); } @Override @@ -343,14 +343,6 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat } ListenableFuture r = t.submit(); - return Futures.transform(r, futureTrans); + return Futures.transform(r, futureTrans, MoreExecutors.directExecutor()); } - - Function> futureTrans = new Function>() { - - @Override - public RpcResult apply(Void input) { - return RpcResultBuilder.success().build(); - } - }; } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/EndpointUtils.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/EndpointUtils.java index f4bf7c76d..a50497cbd 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/EndpointUtils.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/EndpointUtils.java @@ -28,13 +28,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpo import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.containment.endpoint._case.ParentContainmentEndpoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.endpoint._case.ParentEndpoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ExternalImplicitGroup; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; public class EndpointUtils { @@ -78,16 +77,9 @@ public class EndpointUtils { return false; } for (EndpointGroupId epgId : addrEp.getEndpointGroup()) { - results.add(Futures.transform( - rTx.read(LogicalDatastoreType.CONFIGURATION, - IidFactory.externalImplicitGroupIid(addrEp.getTenant(), epgId)), - new Function, Boolean>() { - - @Override - public Boolean apply(Optional input) { - return input.isPresent(); - } - })); + results.add(Futures.transform( rTx.read(LogicalDatastoreType.CONFIGURATION, + IidFactory.externalImplicitGroupIid(addrEp.getTenant(), epgId)), Optional::isPresent, + MoreExecutors.directExecutor())); } try { List list = Futures.allAsList(results).get(); diff --git a/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java b/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java index 14f953c5d..18018fe1c 100644 --- a/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java +++ b/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java @@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; @@ -126,7 +127,7 @@ public class OvsdbNodeListener extends DataTreeChangeHandler { LOG.error("Failed to write bridge {}. Message: {}" + bridge.getNodeId().getValue(), t.getMessage()); } - }); + }, MoreExecutors.directExecutor()); } } OvsdbBridgeAugmentation ovsdbBridge = node.getAugmentation(OvsdbBridgeAugmentation.class); diff --git a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/IosXeRendererProviderImpl.java b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/IosXeRendererProviderImpl.java index 1e19a8df0..88cb85e75 100644 --- a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/IosXeRendererProviderImpl.java +++ b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/IosXeRendererProviderImpl.java @@ -13,8 +13,13 @@ import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.List; import java.util.Optional; + +import javax.annotation.Nonnull; + import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; @@ -145,7 +150,7 @@ public class IosXeRendererProviderImpl implements BindingAwareProvider, AutoClos Futures.addCallback(future, new FutureCallback() { @Override - public void onFailure(Throwable throwable) { + public void onFailure(@Nonnull Throwable throwable) { LOG.error("Could not register renderer {}: {}", renderer, throwable); } @@ -153,6 +158,6 @@ public class IosXeRendererProviderImpl implements BindingAwareProvider, AutoClos public void onSuccess(Void result) { LOG.debug("Renderer {} successfully registered.", renderer); } - }); + }, MoreExecutors.directExecutor()); } } diff --git a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java index 360207380..8eea628d4 100644 --- a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java +++ b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java @@ -56,6 +56,7 @@ import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; public class NodeManager { @@ -154,7 +155,7 @@ public class NodeManager { public void onFailure(@Nullable Throwable throwable) { LOG.warn("Exception thrown when removing node... {}", throwable); } - }); + }, MoreExecutors.directExecutor()); } /** @@ -194,7 +195,7 @@ public class NodeManager { public void onFailure(@Nullable Throwable throwable) { LOG.warn("Exception thrown when resolving node... {}", throwable); } - }); + }, MoreExecutors.directExecutor()); } /** diff --git a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java index b1d6e3ccc..37acaa302 100644 --- a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java +++ b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java @@ -17,6 +17,8 @@ import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -93,7 +95,7 @@ public class PolicyManagerImpl implements PolicyManager { } return syncEndpoints(dataAfter, Create); } - }); + }, MoreExecutors.directExecutor()); } return Futures.transformAsync(creationResult, new AsyncFunction, Boolean>() { @Override @@ -104,9 +106,9 @@ public class PolicyManagerImpl implements PolicyManager { public Boolean apply(@Nullable final Void input) { return Boolean.TRUE; } - }); + }, MoreExecutors.directExecutor()); } - }); + }, MoreExecutors.directExecutor()); } /** @@ -225,7 +227,7 @@ public class PolicyManagerImpl implements PolicyManager { return Optional.of(status); } - }); + }, MoreExecutors.directExecutor()); } private CheckedFuture reportPolicy(final long version, diff --git a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/sf/ActionDefinitionListener.java b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/sf/ActionDefinitionListener.java index efc1c7a67..88efea7f7 100644 --- a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/sf/ActionDefinitionListener.java +++ b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/sf/ActionDefinitionListener.java @@ -10,6 +10,8 @@ package org.opendaylight.groupbasedpolicy.renderer.iovisor.sf; import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nonnull; + import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; @@ -32,6 +34,7 @@ import org.slf4j.LoggerFactory; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; public class ActionDefinitionListener extends DataTreeChangeHandler { @@ -40,8 +43,8 @@ public class ActionDefinitionListener extends DataTreeChangeHandler { @@ -97,7 +98,7 @@ public class ClassifierDefinitionListener extends DataTreeChangeHandler apply(List readyToSubmit) { return rwTx.submit(); } - }); + }, MoreExecutors.directExecutor()); } private List getTableIDs() { @@ -244,7 +245,7 @@ public class PolicyManager } return null; } - }); + }, MoreExecutors.directExecutor()); } // ************** diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java index ccec078cc..09cfb44b7 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.Future; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -105,6 +106,7 @@ import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.JdkFutureAdapters; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; public class ArpTasker implements PacketProcessingListener { @@ -279,7 +281,6 @@ public class ArpTasker implements PacketProcessingListener { if (!addFlowResult.isSuccessful()) { LOG.warn("An ARP Reply to Controller flow was not created on node {} \nErrors: {}", node.getId().getValue(), addFlowResult.getErrors()); - continue; } } LOG.debug("ARP Reply to Controller flows were created on node {}", node.getId().getValue()); @@ -288,17 +289,17 @@ public class ArpTasker implements PacketProcessingListener { senderIpAddress); ListenableFuture> futureSendArpResult = arpSender.sendArp(senderAddress, tpa, extNcIidAndMac.getLeft()); - Futures.addCallback(futureSendArpResult, logResult(tpa, extNcIidAndMac.getLeft())); + Futures.addCallback(futureSendArpResult, logResult(tpa, extNcIidAndMac.getLeft()), MoreExecutors.directExecutor()); } } @Override - public void onFailure(Throwable t) { + public void onFailure(@Nonnull Throwable t) { LOG.error( "Illegal state - Installation of ARP flows on node {} failed. Node can contain just some ARP flows.", node.getId(), t); } - }); + }, MoreExecutors.directExecutor()); } } diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ActionDefinitionListener.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ActionDefinitionListener.java index 2040ed3f0..4eee18f89 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ActionDefinitionListener.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ActionDefinitionListener.java @@ -12,6 +12,8 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; +import javax.annotation.Nonnull; + import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; @@ -36,6 +38,7 @@ import org.slf4j.LoggerFactory; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; public class ActionDefinitionListener implements ClusteredDataTreeChangeListener, AutoCloseable { @@ -44,8 +47,8 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener .child(Renderer.class, new RendererKey(OFOverlayRenderer.RENDERER_NAME)) .child(Capabilities.class) .build(); - private static String PUT = "stored"; - private static String DELETED = "removed"; + private static final String PUT = "stored"; + private static final String DELETED = "removed"; private final DataBroker dataProvider; private final ListenerRegistration registration; @@ -59,7 +62,7 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener } @Override - public void onDataTreeChanged(Collection> changes) { + public void onDataTreeChanged(@Nonnull Collection> changes) { for (DataTreeModification change : changes) { DataObjectModification rootNode = change.getRootNode(); @@ -75,7 +78,8 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener wTx.put(LogicalDatastoreType.OPERATIONAL, CAPABILITIES_IID .child(SupportedActionDefinition.class, supportedActionDefinition.getKey()), supportedActionDefinition, true); - Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinition.getKey(), PUT)); + Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinition.getKey(), PUT), MoreExecutors + .directExecutor()); } break; @@ -88,7 +92,7 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); wTx.delete(LogicalDatastoreType.OPERATIONAL, CAPABILITIES_IID.child(SupportedActionDefinition.class, supportedActionDefinitionKey)); - Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinitionKey, DELETED)); + Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinitionKey, DELETED), MoreExecutors.directExecutor()); } break; } @@ -113,7 +117,7 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener } @Override - public void onFailure(Throwable t) { + public void onFailure(@Nonnull Throwable t) { LOG.error("Capability of renderer {} was NOT {}: {}", OFOverlayRenderer.RENDERER_NAME.getValue(), putOrDeleted, supportedActionDefinitionKey, t); } diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ClassifierDefinitionListener.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ClassifierDefinitionListener.java index 7cb4da564..de086380d 100755 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ClassifierDefinitionListener.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ClassifierDefinitionListener.java @@ -12,6 +12,8 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; +import javax.annotation.Nonnull; + import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; @@ -36,16 +38,18 @@ import org.slf4j.LoggerFactory; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; public class ClassifierDefinitionListener implements ClusteredDataTreeChangeListener, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(ClassifierDefinitionListener.class); - private static final InstanceIdentifier RENDERER_CAPABILITIES_IID = InstanceIdentifier.builder(Renderers.class) + private static final InstanceIdentifier RENDERER_CAPABILITIES_IID = InstanceIdentifier + .builder(Renderers.class) .child(Renderer.class, new RendererKey(OFOverlayRenderer.RENDERER_NAME)) .child(Capabilities.class) .build(); - private static String PUT = "stored"; - private static String DELETED = "removed"; + private static final String PUT = "stored"; + private static final String DELETED = "removed"; private final DataBroker dataProvider; private final ListenerRegistration registration; @@ -61,7 +65,7 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList } @Override - public void onDataTreeChanged(Collection> changes) { + public void onDataTreeChanged(@Nonnull Collection> changes) { for (DataTreeModification change : changes) { DataObjectModification rootNode = change.getRootNode(); @@ -77,7 +81,8 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList wTx.put(LogicalDatastoreType.OPERATIONAL, RENDERER_CAPABILITIES_IID .child(SupportedClassifierDefinition.class, supportedClassifierDefinition.getKey()), supportedClassifierDefinition, true); - Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinition.getKey(), PUT)); + Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinition.getKey(), PUT), + MoreExecutors.directExecutor()); } break; @@ -90,11 +95,11 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); wTx.delete(LogicalDatastoreType.OPERATIONAL, RENDERER_CAPABILITIES_IID .child(SupportedClassifierDefinition.class, supportedClassifierDefinitionKey)); - Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinitionKey, DELETED)); + Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinitionKey, DELETED), + MoreExecutors.directExecutor()); } break; } - } } @@ -119,7 +124,7 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList } @Override - public void onFailure(Throwable t) { + public void onFailure(@Nonnull Throwable t) { LOG.error("Capability of renderer {} was NOT {}: {}", OFOverlayRenderer.RENDERER_NAME.getValue(), putOrDeleted, supportedClassifierDefinitionKey, t); } diff --git a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/VppRenderer.java b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/VppRenderer.java index c6fbf4481..5e4e99596 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/VppRenderer.java +++ b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/VppRenderer.java @@ -14,6 +14,8 @@ import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import com.google.common.util.concurrent.MoreExecutors; + import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.MountPointService; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; @@ -195,7 +197,7 @@ public class VppRenderer implements AutoCloseable, BindingAwareProvider { public void onSuccess(Void result) { LOG.debug("Renderer {} successfully registered.", renderer); } - }); + }, MoreExecutors.directExecutor()); } private void unregisterFromRendererManager() { @@ -215,7 +217,7 @@ public class VppRenderer implements AutoCloseable, BindingAwareProvider { public void onSuccess(Void result) { LOG.debug("Renderer {} successfully unregistered.", VppRenderer.NAME); } - }); + }, MoreExecutors.directExecutor()); } public MountedDataBrokerProvider getMountedDataBroker() { diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/adapter/VppRpcServiceImpl.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/adapter/VppRpcServiceImpl.java index 757659e44..e529468e4 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/adapter/VppRpcServiceImpl.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/adapter/VppRpcServiceImpl.java @@ -45,6 +45,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_adapte import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes.InterfaceTypeChoice; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes._interface.type.choice.TapCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes._interface.type.choice.VhostUserCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.bridge.domain.base.attributes.PhysicalLocationRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VhostUserRole; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VxlanVni; @@ -113,7 +114,7 @@ public class VppRpcServiceImpl implements VppAdapterService, AutoCloseable { futures.add(bridgeDomainManager.createVlanBridgeDomainOnVppNode(input.getId(), vlanId, nodeId)); }); } - return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult()); + return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult(), MoreExecutors.directExecutor()); } public Future> deleteVirtualBridgeDomainFromNodes(DeleteVirtualBridgeDomainFromNodesInput input) { @@ -122,7 +123,7 @@ public class VppRpcServiceImpl implements VppAdapterService, AutoCloseable { input.getBridgeDomainNode().forEach(nodeId -> { futures.add(bridgeDomainManager.removeBridgeDomainFromVppNode(input.getBridgeDomainId(), nodeId)); }); - return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult()); + return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult(), MoreExecutors.directExecutor()); } public ListenableFuture> cloneVirtualBridgeDomainOnNodes(CloneVirtualBridgeDomainOnNodesInput input) { @@ -175,9 +176,9 @@ public class VppRpcServiceImpl implements VppAdapterService, AutoCloseable { input.getBridgeDomainId(), vlanId, nodeId)); }); } - return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult()); + return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult(), MoreExecutors.directExecutor()); } - }); + }, MoreExecutors.directExecutor()); } public ListenableFuture> createInterfaceOnNode(CreateInterfaceOnNodeInput input) { diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java index dcab1de4d..e0e7b4252 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java @@ -68,6 +68,7 @@ import com.google.common.base.Strings; import com.google.common.collect.HashMultimap; import com.google.common.collect.SetMultimap; import com.google.common.eventbus.Subscribe; +import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -217,7 +218,7 @@ public class InterfaceManager implements AutoCloseable { if(!oldVppEndpoint.equals(newVppEndpoint)) { LOG.debug("Updating vpp endpoint, old EP: {} new EP: {}", oldVppEndpoint, newVppEndpoint); return Futures.transformAsync(vppEndpointDeleted(oldVppEndpoint), - (AsyncFunction) input -> vppEndpointCreated(newVppEndpoint)); + input -> vppEndpointCreated(newVppEndpoint), MoreExecutors.directExecutor()); } LOG.debug("Update skipped, provided before/after vpp endpoints are equal"); return Futures.immediateFuture(null); diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/manager/VppNodeManager.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/manager/VppNodeManager.java index 90362c5cd..c2bfe42b6 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/manager/VppNodeManager.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/manager/VppNodeManager.java @@ -77,6 +77,7 @@ import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; public class VppNodeManager { @@ -156,7 +157,7 @@ public class VppNodeManager { public void onFailure(@Nonnull Throwable t) { LOG.warn("Node synchronization failed. Data before: {} after {}", dataBefore, dataAfter); } - }); + }, MoreExecutors.directExecutor()); } private boolean isControllerConfigNode(final Node dataAfter, final Node dataBefore) { @@ -420,7 +421,7 @@ public class VppNodeManager { java.util.Optional pubInt = rn.getAugmentation(VppInterfaceAugmentation.class) .getPhysicalInterface() .stream() - .filter(phInt -> phInt.isExternal()) + .filter(PhysicalInterface::isExternal) .findFirst(); if (pubInt.isPresent()) { nodes.put(rn.getNodePath().firstKeyOf(Node.class).getNodeId(), pubInt.get().getInterfaceName()); diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java index 10c126ae0..d653bc532 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java @@ -10,7 +10,6 @@ package org.opendaylight.groupbasedpolicy.renderer.vpp.policy; import java.util.Collection; import java.util.Collections; -import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; import javax.annotation.Nonnull; @@ -73,11 +72,11 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; public class BridgeDomainManagerImpl implements BridgeDomainManager { @@ -206,29 +205,26 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager { CheckedFuture, ReadFailedException> futureTopology = rTx.read(LogicalDatastoreType.CONFIGURATION, bridgeDomainConfigIid); rTx.close(); - return Futures.transformAsync(futureTopology, new AsyncFunction, Void>() { - - @Override - public ListenableFuture apply(@Nonnull Optional optBridgeDomainConf) throws Exception { - if (optBridgeDomainConf.isPresent() && optBridgeDomainConf.get().getPhysicalLocationRef() != null) { - for (PhysicalLocationRef ref : optBridgeDomainConf.get().getPhysicalLocationRef()) { - if (!ref.getNodeId().equals(vppNodeId)) { - LOG.debug("Node {} is not referenced node, skipping", ref.getNodeId()); - continue; - } - if (ref.getInterface() != null && ref.getInterface().size() > 0) { - NodeVbridgeVlanAugment vppNodeVlanAug = new NodeVbridgeVlanAugmentBuilder() - .setSuperInterface(ref.getInterface().get(0)).build(); - Node vppNode = createBasicVppNodeBuilder(vppNodeId) - .addAugmentation(NodeVbridgeVlanAugment.class, vppNodeVlanAug).build(); - return createBridgeDomainOnVppNode(bridgeDomainName, topologyAug, vppNode); - } + return Futures.transformAsync(futureTopology, optBridgeDomainConf -> { + if (optBridgeDomainConf != null && optBridgeDomainConf.isPresent() + && optBridgeDomainConf.get().getPhysicalLocationRef() != null) { + for (PhysicalLocationRef ref : optBridgeDomainConf.get().getPhysicalLocationRef()) { + if (!ref.getNodeId().equals(vppNodeId)) { + LOG.debug("Node {} is not referenced node, skipping", ref.getNodeId()); + continue; + } + if (ref.getInterface() != null && ref.getInterface().size() > 0) { + NodeVbridgeVlanAugment vppNodeVlanAug = new NodeVbridgeVlanAugmentBuilder() + .setSuperInterface(ref.getInterface().get(0)).build(); + Node vppNode = createBasicVppNodeBuilder(vppNodeId) + .addAugmentation(NodeVbridgeVlanAugment.class, vppNodeVlanAug).build(); + return createBridgeDomainOnVppNode(bridgeDomainName, topologyAug, vppNode); } } - return Futures.immediateFailedFuture( - new Throwable("Failed to apply config for VLAN bridge domain " + bridgeDomainName)); } - }); + return Futures.immediateFailedFuture( + new Throwable("Failed to apply config for VLAN bridge domain " + bridgeDomainName)); + }, MoreExecutors.directExecutor()); } /** @@ -259,73 +255,68 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager { final CheckedFuture, ReadFailedException> optTopology = rTx.read(LogicalDatastoreType.CONFIGURATION, topologyIid); rTx.close(); - return Futures.transformAsync(optTopology, new AsyncFunction, Void>() { - @Override - public ListenableFuture apply(@Nonnull final Optional optTopology) - throws InterruptedException, ExecutionException { - // Topology - final SettableFuture topologyFuture = SettableFuture.create(); - if (!optTopology.isPresent()) { - final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); - final Topology topology = new TopologyBuilder().setKey(topologyKey) - .setTopologyTypes(VBRIDGE_TOPOLOGY_TYPE) - .addAugmentation(TopologyVbridgeAugment.class, vBridgeAug) - .build(); - wTx.put(LogicalDatastoreType.CONFIGURATION, topologyIid, topology, true); - Futures.addCallback(wTx.submit(), new FutureCallback() { + return Futures.transformAsync(optTopology, topologyOptional -> { + // Topology + Preconditions.checkNotNull(topologyOptional, + "TopologyOptional with topologyIiD: " + topologyIid + " must not be null when creating BD"); + final SettableFuture topologyFuture = SettableFuture.create(); + if (!topologyOptional.isPresent()) { + final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); + final Topology topology = new TopologyBuilder().setKey(topologyKey) + .setTopologyTypes(VBRIDGE_TOPOLOGY_TYPE) + .addAugmentation(TopologyVbridgeAugment.class, vBridgeAug) + .build(); + wTx.put(LogicalDatastoreType.CONFIGURATION, topologyIid, topology, true); + Futures.addCallback(wTx.submit(), new FutureCallback() { - @Override - public void onSuccess(@Nullable final Void result) { - final InstanceIdentifier bridgeDomainStateIid = - VppIidFactory.getBridgeDomainStateIid(new BridgeDomainKey(bridgeDomainName)); - LOG.debug("Adding a listener on bridge domain state", bridgeDomainName); - final DataTreeIdentifier bridgeDomainStateIidDTI = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, - bridgeDomainStateIid); - new ListenableFutureSetter<>(dataProvider, topologyFuture, bridgeDomainStateIidDTI, ModificationType.WRITE); - } + @Override + public void onSuccess(@Nullable final Void result) { + final InstanceIdentifier bridgeDomainStateIid = + VppIidFactory.getBridgeDomainStateIid(new BridgeDomainKey(bridgeDomainName)); + LOG.debug("Adding a listener on bridge domain state", bridgeDomainName); + final DataTreeIdentifier bridgeDomainStateIidDTI = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, + bridgeDomainStateIid); + new ListenableFutureSetter<>(dataProvider, topologyFuture, bridgeDomainStateIidDTI, ModificationType.WRITE); + } - @Override - public void onFailure(@Nonnull Throwable t) { - LOG.warn("Request create topology for VBD was not stored to CONF DS. {}", topologyIid, t); - topologyFuture.setException(new Exception("Cannot send request to VBD.")); - } - }); - } else { - topologyFuture.set(null); - LOG.info("Bridge domain {} already exists", optTopology.get().getTopologyId()); - } - return Futures.transformAsync(topologyFuture, new AsyncFunction() { @Override - public ListenableFuture apply(@Nonnull Void topologyInput) throws Exception { - // Bridge member - final SettableFuture futureBridgeMember = SettableFuture.create(); - final InstanceIdentifier nodeIid = VppIidFactory.getNodeIid(topologyKey, vppNode.getKey()); - LOG.debug("Adding node {} to bridge domain {}", vppNode.getKey(), topologyKey.getTopologyId()); - final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); - wTx.put(LogicalDatastoreType.CONFIGURATION, nodeIid, vppNode); - Futures.addCallback(wTx.submit(), new FutureCallback() { + public void onFailure(@Nonnull Throwable t) { + LOG.warn("Request create topology for VBD was not stored to CONF DS. {}", topologyIid, t); + topologyFuture.setException(new Exception("Cannot send request to VBD.")); + } + }, MoreExecutors.directExecutor()); + } else { + topologyFuture.set(null); + LOG.info("Bridge domain {} already exists", topologyOptional.get().getTopologyId()); + } + return Futures.transformAsync(topologyFuture, topologyInput -> { + // Bridge member + final SettableFuture futureBridgeMember = SettableFuture.create(); + final InstanceIdentifier nodeIid = VppIidFactory.getNodeIid(topologyKey, vppNode.getKey()); + LOG.debug("Adding node {} to bridge domain {}", vppNode.getKey(), topologyKey.getTopologyId()); + final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); + wTx.put(LogicalDatastoreType.CONFIGURATION, nodeIid, vppNode); + Futures.addCallback(wTx.submit(), new FutureCallback() { - @Override - public void onSuccess(@Nullable final Void _void) { - final DataTreeIdentifier bridgeMemberIid = - new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, - nodeIid.augmentation(NodeVbridgeAugment.class).child(BridgeMember.class)); - LOG.debug("Request create node in topology for VBD was stored to CONF DS. {}", nodeIid); - new ListenableFutureSetter<>(dataProvider, futureBridgeMember, bridgeMemberIid, - ModificationType.WRITE); - } + @Override + public void onSuccess(@Nullable final Void _void) { + final DataTreeIdentifier bridgeMemberIid = + new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, + nodeIid.augmentation(NodeVbridgeAugment.class).child(BridgeMember.class)); + LOG.debug("Request create node in topology for VBD was stored to CONF DS. {}", nodeIid); + new ListenableFutureSetter<>(dataProvider, futureBridgeMember, bridgeMemberIid, + ModificationType.WRITE); + } - @Override - public void onFailure(@Nonnull final Throwable t) { - LOG.warn("Request create node in topology for VBD was not stored to CONF DS. {}", nodeIid, t); - futureBridgeMember.setException(new Exception("Cannot send request to VBD.")); - } - }); - return futureBridgeMember; + @Override + public void onFailure(@Nonnull final Throwable t) { + LOG.warn("Request create node in topology for VBD was not stored to CONF DS. {}", nodeIid, t); + futureBridgeMember.setException(new Exception("Cannot send request to VBD.")); } - }); - } - }); + }, MoreExecutors.directExecutor()); + return futureBridgeMember; + }, MoreExecutors.directExecutor()); + }, MoreExecutors.directExecutor()); } @Override @@ -364,7 +355,7 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager { LOG.warn("Request delete node in topology for VBD was not stored to CONF DS. {}", nodeIid, t); future.setException(new Exception("Cannot send request to VBD.")); } - }); + }, MoreExecutors.directExecutor()); return future; } } diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java index 396ba6617..7fa28fe02 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java @@ -51,7 +51,6 @@ import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; import com.google.common.eventbus.Subscribe; - public class VppRendererPolicyManager { private static final Logger LOG = LoggerFactory.getLogger(VppRendererPolicyManager.class); diff --git a/sxp-integration/ip-sgt-distribution-service/src/main/java/org/opendaylight/groupbasedpolicy/ip/sgt/distribution/service/impl/IpSgtDistributionServiceImpl.java b/sxp-integration/ip-sgt-distribution-service/src/main/java/org/opendaylight/groupbasedpolicy/ip/sgt/distribution/service/impl/IpSgtDistributionServiceImpl.java index 8a405d4f4..885175dc3 100644 --- a/sxp-integration/ip-sgt-distribution-service/src/main/java/org/opendaylight/groupbasedpolicy/ip/sgt/distribution/service/impl/IpSgtDistributionServiceImpl.java +++ b/sxp-integration/ip-sgt-distribution-service/src/main/java/org/opendaylight/groupbasedpolicy/ip/sgt/distribution/service/impl/IpSgtDistributionServiceImpl.java @@ -14,6 +14,7 @@ import com.google.common.collect.Multimap; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import java.util.HashMap; import java.util.Map; @@ -131,7 +132,7 @@ public class IpSgtDistributionServiceImpl implements AutoCloseable, IpSgtDistrib } - }); + }, MoreExecutors.directExecutor()); return future; } @@ -219,7 +220,7 @@ public class IpSgtDistributionServiceImpl implements AutoCloseable, IpSgtDistrib } - }); + }, MoreExecutors.directExecutor()); return future; } diff --git a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/EPToSgtMapperImpl.java b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/EPToSgtMapperImpl.java index 3ec8e5ecf..c1134a8e0 100644 --- a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/EPToSgtMapperImpl.java +++ b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/EPToSgtMapperImpl.java @@ -11,6 +11,8 @@ package org.opendaylight.groupbasedpolicy.sxp.ep.provider.impl; import com.google.common.base.Function; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.Collection; import java.util.HashSet; import javax.annotation.Nullable; @@ -55,6 +57,7 @@ public class EPToSgtMapperImpl implements EPToSgtMapper { public ListenableFuture> findSgtForEP(final AddressEndpointWithLocation endpointWithLocation) { final EpPolicyTemplateValueKey rawKey = new EpPolicyTemplateValueKey(endpointWithLocation); final EpPolicyTemplateValueKey key = keyFactory.sortValueKeyLists(rawKey); - return Futures.transform(epPolicyTemplateReader.readBy(key), TRANSFORM_TEMPLATE_TO_SGT); + return Futures.transform(epPolicyTemplateReader.readBy(key), TRANSFORM_TEMPLATE_TO_SGT, + MoreExecutors.directExecutor()); } } diff --git a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/SxpMapperReactorImpl.java b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/SxpMapperReactorImpl.java index 71e6a5aeb..3cfeddeba 100644 --- a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/SxpMapperReactorImpl.java +++ b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/SxpMapperReactorImpl.java @@ -15,6 +15,8 @@ import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.JdkFutureAdapters; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.Collections; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; @@ -101,7 +103,7 @@ public class SxpMapperReactorImpl implements SxpMapperReactor { final ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction(); final CheckedFuture, ReadFailedException> read = rTx.read( LogicalDatastoreType.OPERATIONAL, addressEndpointPath); - Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx)); + Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor()); return read; } @@ -124,7 +126,7 @@ public class SxpMapperReactorImpl implements SxpMapperReactor { } return nextResult; } - }); + }, MoreExecutors.directExecutor()); } private boolean isSameEpg(RegisterEndpointInput epInput, AddressEndpoint input) { diff --git a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPForwardingTemplateDaoImpl.java b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPForwardingTemplateDaoImpl.java index 245a3bb55..73b28bf3d 100644 --- a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPForwardingTemplateDaoImpl.java +++ b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPForwardingTemplateDaoImpl.java @@ -12,6 +12,8 @@ import com.google.common.base.Optional; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -56,13 +58,13 @@ public class EPForwardingTemplateDaoImpl implements DSAsyncDao, ReadFailedException> read = rTx.read(LogicalDatastoreType.CONFIGURATION, buildReadPath(key)); - Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx)); + Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor()); readResult = Futures.transform(read, new Function, Optional>() { @Nullable @Override public Optional apply(@Nullable final Optional input) { - if (input.isPresent()) { + if (input!=null && input.isPresent()) { // clean cache cachedDao.invalidateCache(); @@ -78,7 +80,7 @@ public class EPForwardingTemplateDaoImpl implements DSAsyncDao ListenableFuture> rewrapOptionalToGuavaOptional(final ListenableFuture> templateFu) { @@ -94,8 +96,8 @@ public class EPPolicyTemplateDaoFacadeImpl implements EPPolicyTemplateDaoFacade .map(origNonnullInput -> Optional.fromNullable(origNonnullInput.orElse(null))) .orElse(Optional.absent()); } - } - ); + }, + MoreExecutors.directExecutor()); } @@ -138,7 +140,8 @@ public class EPPolicyTemplateDaoFacadeImpl implements EPPolicyTemplateDaoFacade .child(EndpointPolicyTemplateBySgt.class, new EndpointPolicyTemplateBySgtKey(sgt)); wTx.put(LogicalDatastoreType.CONFIGURATION, epPolicyTemplatePath, template, true); - return Futures.transform(wTx.submit(), createStoreOutcomeHandlerToCollection(template)); + return Futures.transform(wTx.submit(), createStoreOutcomeHandlerToCollection(template), + MoreExecutors.directExecutor()); } private EndpointPolicyTemplateBySgt buildEpPolicyTemplate(final EpPolicyTemplateValueKey templateLookupKey, final Sgt sgt) { diff --git a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPPolicyTemplateDaoImpl.java b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPPolicyTemplateDaoImpl.java index 3e028c9ad..af787ffbd 100644 --- a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPPolicyTemplateDaoImpl.java +++ b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPPolicyTemplateDaoImpl.java @@ -15,6 +15,8 @@ import com.google.common.base.Predicates; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.ArrayList; import java.util.Collection; import javax.annotation.Nonnull; @@ -66,7 +68,7 @@ public class EPPolicyTemplateDaoImpl implements DSAsyncDao, ReadFailedException> read = rTx.read(LogicalDatastoreType.CONFIGURATION, buildReadPath(key)); - Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx)); + Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor()); return Futures.transform(read, new Function, Optional>() { @Nullable @@ -77,7 +79,7 @@ public class EPPolicyTemplateDaoImpl implements DSAsyncDao { private static final Logger LOG = LoggerFactory.getLogger(MasterDatabaseBindingDaoImpl.class); - private static final ListenableFuture> READ_FUTURE_ABSENT = Futures.immediateFuture(Optional.absent()); + private static final ListenableFuture> + READ_FUTURE_ABSENT = Futures.immediateFuture(Optional.absent()); private final DataBroker dataBroker; private final SimpleCachedDao cachedDao; @@ -75,7 +79,7 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao apply(@Nullable final Void input) { return lookup(cachedDao, key); } - }); + }, MoreExecutors.directExecutor()); } } @@ -84,7 +88,7 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao, ReadFailedException> read = rTx.read(LogicalDatastoreType.CONFIGURATION, buildReadPath(null)); - Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx)); + Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor()); return Futures.transform(read, new Function, Void>() { @Nullable @@ -130,7 +134,7 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao buildReadPath(final Sgt key) { @@ -163,6 +167,6 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao>> searchResult = - Futures.transformAsync(sxpMasterDbItemRead, createReadAndPairTemplateToBindingFunction(epForwardingTemplate)); + Futures.transformAsync(sxpMasterDbItemRead, createReadAndPairTemplateToBindingFunction(epForwardingTemplate), MoreExecutors + .directExecutor()); // invoke sxpMapperReactor.process for every valid combination of sxpMasterDBBinding, epPolicyTemplate, epForwardingTemplate final ListenableFuture> rpcResult = - Futures.transformAsync(searchResult, createProcessAllFunction(epForwardingTemplate)); + Futures.transformAsync(searchResult, createProcessAllFunction(epForwardingTemplate), MoreExecutors.directExecutor()); - Futures.addCallback(rpcResult, ANY_RPC_FUTURE_CALLBACK); + Futures.addCallback(rpcResult, ANY_RPC_FUTURE_CALLBACK, MoreExecutors.directExecutor()); } private AsyncFunction>, RpcResult> diff --git a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/EPPolicyTemplateListenerImpl.java b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/EPPolicyTemplateListenerImpl.java index 31ad41b25..5924d9878 100644 --- a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/EPPolicyTemplateListenerImpl.java +++ b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/EPPolicyTemplateListenerImpl.java @@ -13,6 +13,8 @@ import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -105,76 +107,74 @@ public class EPPolicyTemplateListenerImpl implements EPTemplateListener>> epForwardingTemplatesRead = - Futures.transformAsync(sxpMasterDbItemsRead, createReadAndPairTemplateToBindingFunction(epPolicyTemplate)); + final ListenableFuture>> + epForwardingTemplatesRead = Futures.transformAsync(sxpMasterDbItemsRead, + createReadAndPairTemplateToBindingFunction(epPolicyTemplate), MoreExecutors.directExecutor()); // invoke sxpMapperReactor.process for every valid combination of sxpMasterDBBinding, epPolicyTemplate, epForwardingTemplate final ListenableFuture>> rpcResult = - Futures.transformAsync(epForwardingTemplatesRead, createProcessAllFunction(epPolicyTemplate)); + Futures.transformAsync(epForwardingTemplatesRead, createProcessAllFunction(epPolicyTemplate), + MoreExecutors.directExecutor()); - Futures.addCallback(rpcResult, RPC_RESULT_FUTURE_CALLBACK); + Futures.addCallback(rpcResult, RPC_RESULT_FUTURE_CALLBACK, MoreExecutors.directExecutor()); } private AsyncFunction>, List>> createProcessAllFunction(final EndpointPolicyTemplateBySgt epPolicyTemplate) { - return new AsyncFunction>, List>>() { - @Override - public ListenableFuture>> - apply(final List> input) throws Exception { - final ListenableFuture>> result; - if (input == null || input.isEmpty()) { - LOG.debug("no pair [epForwardingTemplate, ip-sgt-binding] available for sgt: {}", epPolicyTemplate.getSgt()); - result = Futures.immediateFuture(Collections.singletonList( - RpcResultBuilder.failed() - .withError(RpcError.ErrorType.APPLICATION, - "no pair [epForwardingTemplate, ip-sgt-binding] available for sgt " + epPolicyTemplate.getSgt()) - .build())); - } else { - LOG.trace("processing epPolicyTemplate event for sgt: {}", epPolicyTemplate.getSgt()); - List>> allResults = new ArrayList<>(input.size()); - for (Pair pair : input) { - final MasterDatabaseBinding sxpMasterDBBinding = pair.getLeft(); - final EndpointForwardingTemplateBySubnet epForwardingTemplate = pair.getRight(); - if (epForwardingTemplate != null) { - LOG.trace("processing epPolicyTemplate event with resolved sxpMasterDb entry and " + - "epForwardingTemplate for sgt/ip-prefix: {}/{}", - sxpMasterDBBinding.getSecurityGroupTag(), sxpMasterDBBinding.getImplementedInterface()); - allResults.add(sxpMapperReactor.processTemplatesAndSxpMasterDB( - epPolicyTemplate, epForwardingTemplate, sxpMasterDBBinding)); - } + return input -> { + final ListenableFuture>> result; + if (input == null || input.isEmpty()) { + LOG.debug("no pair [epForwardingTemplate, ip-sgt-binding] available for sgt: {}", + epPolicyTemplate.getSgt()); + result = + Futures.immediateFuture(Collections.singletonList( + RpcResultBuilder.failed().withError(RpcError.ErrorType.APPLICATION, + "no pair [epForwardingTemplate, ip-sgt-binding] available for sgt " + + epPolicyTemplate.getSgt()).build())); + } else { + LOG.trace("processing epPolicyTemplate event for sgt: {}", epPolicyTemplate.getSgt()); + List>> allResults = new ArrayList<>(input.size()); + for (Pair pair : input) { + final MasterDatabaseBinding sxpMasterDBBinding = pair.getLeft(); + final EndpointForwardingTemplateBySubnet epForwardingTemplate = pair.getRight(); + if (epForwardingTemplate != null) { + LOG.trace("processing epPolicyTemplate event with resolved sxpMasterDb entry and " + + "epForwardingTemplate for sgt/ip-prefix: {}/{}", sxpMasterDBBinding.getSecurityGroupTag(), + sxpMasterDBBinding.getImplementedInterface()); + allResults.add( + sxpMapperReactor.processTemplatesAndSxpMasterDB(epPolicyTemplate, epForwardingTemplate, + sxpMasterDBBinding)); } - result = Futures.successfulAsList(allResults); } - - return result; + result = Futures.successfulAsList(allResults); } + + return result; }; } - private AsyncFunction, List>> - createReadAndPairTemplateToBindingFunction(final EndpointPolicyTemplateBySgt epPolicyTemplate) { - return new AsyncFunction, List>>() { - @Override - public ListenableFuture>> - apply(final Collection input) throws Exception { - final ListenableFuture>> result; - if (input == null || input.isEmpty()) { - LOG.debug("no sxpMasterDB entry available for sgt: {}", epPolicyTemplate.getSgt()); - result = Futures.immediateFuture(Collections.emptyList()); - } else { - LOG.trace("processing sxpMasterDB entries for sgt: {}", epPolicyTemplate.getSgt()); - List>> allResults = - new ArrayList<>(input.size()); - for (MasterDatabaseBinding masterDBItem : input) { - final ListenableFuture> epForwardingTemplateRead = - epForwardingTemplateDao.read(masterDBItem.getIpPrefix()); - allResults.add(EPTemplateUtil.wrapToPair(masterDBItem, epForwardingTemplateRead)); - } - result = Futures.successfulAsList(allResults); + private AsyncFunction, List>> createReadAndPairTemplateToBindingFunction( + final EndpointPolicyTemplateBySgt epPolicyTemplate) { + return input -> { + final ListenableFuture>> result; + if (input == null || input.isEmpty()) { + LOG.debug("no sxpMasterDB entry available for sgt: {}", epPolicyTemplate.getSgt()); + result = Futures.immediateFuture(Collections.emptyList()); + } else { + LOG.trace("processing sxpMasterDB entries for sgt: {}", epPolicyTemplate.getSgt()); + List>> + allResults = + new ArrayList<>(input.size()); + for (MasterDatabaseBinding masterDBItem : input) { + final ListenableFuture> + epForwardingTemplateRead = + epForwardingTemplateDao.read(masterDBItem.getIpPrefix()); + allResults.add(EPTemplateUtil.wrapToPair(masterDBItem, epForwardingTemplateRead)); } - - return result; + result = Futures.successfulAsList(allResults); } + + return result; }; } diff --git a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/MasterDatabaseBindingListenerImpl.java b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/MasterDatabaseBindingListenerImpl.java index c7410288e..27684135f 100644 --- a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/MasterDatabaseBindingListenerImpl.java +++ b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/MasterDatabaseBindingListenerImpl.java @@ -14,6 +14,8 @@ import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.Collection; import javax.annotation.Nonnull; import org.opendaylight.controller.md.sal.binding.api.DataBroker; @@ -156,9 +158,9 @@ public class MasterDatabaseBindingListenerImpl implements MasterDatabaseBindingL } return result; } - }); + }, MoreExecutors.directExecutor()); - Futures.addCallback(rpcResult, RPC_POLICY_RESULT_FUTURE_CALLBACK); + Futures.addCallback(rpcResult, RPC_POLICY_RESULT_FUTURE_CALLBACK, MoreExecutors.directExecutor()); } @Override diff --git a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/util/EPTemplateUtil.java b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/util/EPTemplateUtil.java index 300ef8d36..ea9006038 100644 --- a/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/util/EPTemplateUtil.java +++ b/sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/util/EPTemplateUtil.java @@ -13,6 +13,8 @@ import com.google.common.base.Optional; import com.google.common.collect.Ordering; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.ArrayList; import java.util.List; import javax.annotation.Nonnull; @@ -60,7 +62,7 @@ public final class EPTemplateUtil { compositeResult.setLeft(input); return compositeResult; } - })); + }, MoreExecutors.directExecutor())); results.add(Futures.transform(rightRead, new Function, OptionalMutablePair>() { @Nullable @@ -69,7 +71,7 @@ public final class EPTemplateUtil { compositeResult.setRight(input); return compositeResult; } - })); + }, MoreExecutors.directExecutor())); return Futures.transform(Futures.successfulAsList(results), new Function, OptionalMutablePair>() { @@ -78,7 +80,7 @@ public final class EPTemplateUtil { public OptionalMutablePair apply(@Nullable final List input) { return compositeResult; } - }); + }, MoreExecutors.directExecutor()); } public static ListenableFuture> wrapToPair( @@ -90,7 +92,7 @@ public final class EPTemplateUtil { public Pair apply(@Nullable final Optional input) { return new MutablePair<>(keyItem, input.orNull()); } - }); + }, MoreExecutors.directExecutor()); } public static ListenableFuture> wrapToOptional(final ListenableFuture value) { @@ -100,7 +102,7 @@ public final class EPTemplateUtil { public Optional apply(@Nullable final V input) { return Optional.fromNullable(input); } - }); + }, MoreExecutors.directExecutor()); } public static Ordering createEndpointGroupIdOrdering() { diff --git a/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/EPPolicyTemplateProviderIseImpl.java b/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/EPPolicyTemplateProviderIseImpl.java index 1e5c7fa7b..17e09840c 100644 --- a/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/EPPolicyTemplateProviderIseImpl.java +++ b/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/EPPolicyTemplateProviderIseImpl.java @@ -13,6 +13,8 @@ import com.google.common.collect.Range; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.Collection; import java.util.Collections; import java.util.Optional; @@ -53,7 +55,7 @@ public class EPPolicyTemplateProviderIseImpl implements EPPolicyTemplateProvider return Optional.ofNullable(input) .flatMap(i -> i.map(sgtName -> buildTemplate(sgt, iseContext.getIseSourceConfig().getTenant(), sgtName))); } - }); + }, MoreExecutors.directExecutor()); } private EndpointPolicyTemplateBySgt buildTemplate(final @Nonnull Sgt sgt, final @Nonnull TenantId tenantId, @@ -81,7 +83,7 @@ public class EPPolicyTemplateProviderIseImpl implements EPPolicyTemplateProvider public void onFailure(final Throwable t) { LOG.debug("[epPolicyTemplateProvider] harvestAll FAILED: {}", t.getMessage()); } - }); + }, MoreExecutors.directExecutor()); return Futures.transform(sgtUpdateFu, new Function, Optional>() { @Nullable @@ -93,7 +95,7 @@ public class EPPolicyTemplateProviderIseImpl implements EPPolicyTemplateProvider .filter(sgtInfo -> sgt.equals(sgtInfo.getSgt())).findFirst() .map(SgtInfo::getName)); } - }); + }, MoreExecutors.directExecutor()); } private Optional findIseSourceConfigBySgt(final Sgt sgt) { diff --git a/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseConfigListenerImpl.java b/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseConfigListenerImpl.java index 0c18a4ef9..ae15aa5fd 100644 --- a/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseConfigListenerImpl.java +++ b/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseConfigListenerImpl.java @@ -12,6 +12,7 @@ import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.text.SimpleDateFormat; import java.util.Collection; @@ -96,7 +97,7 @@ public class GbpIseConfigListenerImpl implements GbpIseConfigListener { LOG.debug("ise harvest failed", t); storeOutcome(false, 0, t.getMessage()); } - }); + }, MoreExecutors.directExecutor()); try { harvestResult.get(30, TimeUnit.SECONDS); diff --git a/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseSgtHarvesterImpl.java b/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseSgtHarvesterImpl.java index 67e2cef3a..833fd03b8 100644 --- a/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseSgtHarvesterImpl.java +++ b/sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseSgtHarvesterImpl.java @@ -12,6 +12,7 @@ import com.google.common.base.Function; import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource; @@ -84,7 +85,7 @@ public class GbpIseSgtHarvesterImpl implements GbpIseSgtHarvester { LOG.debug("entering stg-info processor {}", processor.getClass().getSimpleName()); return processor.processSgtInfo(iseSourceConfig.getTenant(), sgtInfos); } - }); + }, MoreExecutors.directExecutor()); } result = Futures.transform(processingResult, new Function>() { @Nullable @@ -98,7 +99,7 @@ public class GbpIseSgtHarvesterImpl implements GbpIseSgtHarvester { // always success, otherwise there will be TransactionCommitFailedException thrown return sgtInfos; } - }); + }, MoreExecutors.directExecutor()); } catch (Exception e) { LOG.debug("failed to harvest ise", e); result = Futures.immediateFailedFuture(e); -- 2.36.6