From: Shashidhar Raja Date: Tue, 7 Jan 2020 07:11:07 +0000 (+0530) Subject: NETVIRT-1643: Added checkes to resolve NPE X-Git-Tag: release/magnesium~29 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=5144c1827bce5b027241ced92fe187142a65355e;p=netvirt.git NETVIRT-1643: Added checkes to resolve NPE Change-Id: I728a4757d10bbf6465409181f7dd2561bd176821 Signed-off-by: Shashidhar Raja --- diff --git a/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractAclServiceImpl.java b/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractAclServiceImpl.java index dda7afd35d..42fc2bd260 100644 --- a/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractAclServiceImpl.java +++ b/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractAclServiceImpl.java @@ -735,16 +735,27 @@ public abstract class AbstractAclServiceImpl implements AclServiceListener { List addFlowEntries = new ArrayList<>(); List deleteFlowEntries = new ArrayList<>(); if (!remoteAclsAdded.isEmpty() || !remoteAclsDeleted.isEmpty()) { - // delete and add flows in ACL dispatcher table for all applicable - // ports + // delete and add flows in ACL dispatcher table for all applicable ports for (AclInterface portBefore : portsBefore) { - programAclDispatcherTable(deleteFlowEntries, portBefore, NwConstants.DEL_FLOW); + if (portBefore.getDpId() != null) { + programAclDispatcherTable(deleteFlowEntries, portBefore, NwConstants.DEL_FLOW); + } else { + LOG.debug("Skip ACL dispatcher table update as DP ID for interface {} is not present.", + portBefore.getInterfaceId()); + } } for (AclInterface port : interfaceList) { programAclDispatcherTable(addFlowEntries, port, NwConstants.ADD_FLOW); } } - Set dpns = interfaceList.stream().map(AclInterface::getDpId).collect(Collectors.toSet()); + Set dpns = interfaceList.stream().filter(port -> { + if (port.getDpId() == null) { + LOG.debug("Skip remote ACL table update as DP ID for interface {} is not present.", + port.getInterfaceId()); + return false; + } + return true; + }).map(AclInterface::getDpId).collect(Collectors.toSet()); programRemoteAclTable(deleteFlowEntries, aclName, remoteAclsDeleted, dpns, NwConstants.DEL_FLOW); programRemoteAclTable(addFlowEntries, aclName, remoteAclsAdded, dpns, NwConstants.ADD_FLOW); diff --git a/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListener.java b/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListener.java index 6b7ce297ed..bbe44e0814 100644 --- a/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListener.java +++ b/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListener.java @@ -8,6 +8,8 @@ package org.opendaylight.netvirt.aclservice.listeners; import com.google.common.collect.ImmutableSet; + +import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -147,8 +149,15 @@ public class AclEventListener extends AsyncDataTreeChangeListenerBase