*/
package org.opendaylight.netvirt.aclservice.listeners;
+import java.util.Collections;
import java.util.List;
import java.util.SortedSet;
import javax.annotation.PostConstruct;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase;
import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
+import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
import org.opendaylight.netvirt.aclservice.api.AclInterfaceCache;
import org.opendaylight.netvirt.aclservice.api.AclServiceManager;
import org.opendaylight.netvirt.aclservice.api.AclServiceManager.Action;
private final IInterfaceManager interfaceManager;
private final AclInterfaceCache aclInterfaceCache;
private final AclServiceUtils aclServiceUtils;
+ protected final JobCoordinator jobCoordinator;
@Inject
public AclInterfaceStateListener(AclServiceManager aclServiceManger, AclClusterUtil aclClusterUtil,
DataBroker dataBroker, AclDataUtil aclDataUtil, IInterfaceManager interfaceManager,
- AclInterfaceCache aclInterfaceCache, AclServiceUtils aclServicUtils,
+ AclInterfaceCache aclInterfaceCache, AclServiceUtils aclServicUtils, JobCoordinator jobCoordinator,
ServiceRecoveryRegistry serviceRecoveryRegistry) {
super(Interface.class, AclInterfaceStateListener.class);
this.aclServiceManger = aclServiceManger;
this.interfaceManager = interfaceManager;
this.aclInterfaceCache = aclInterfaceCache;
this.aclServiceUtils = aclServicUtils;
+ this.jobCoordinator = jobCoordinator;
serviceRecoveryRegistry.addRecoverableListener(AclServiceUtils.getRecoverServiceRegistryKey(), this);
}
}
}
if (aclList != null) {
- aclDataUtil.removeAclInterfaceMap(aclList, aclInterface);
+ for (Uuid acl : aclList) {
+ jobCoordinator.enqueueJob(acl.getValue().intern(), () -> {
+ aclDataUtil.removeAclInterfaceMap(acl, aclInterface);
+ return Collections.emptyList();
+ });
+ }
}
}
}
public void removeAclInterfaceMap(List<Uuid> aclList, AclInterface port) {
for (Uuid acl : aclList) {
- ConcurrentMap<String, AclInterface> interfaceMap = aclInterfaceMap.get(acl);
- if (interfaceMap != null) {
- interfaceMap.remove(port.getInterfaceId());
- }
+ removeAclInterfaceMap(acl, port);
+ }
+ }
+
+ public void removeAclInterfaceMap(Uuid acl, AclInterface port) {
+ ConcurrentMap<String, AclInterface> interfaceMap = aclInterfaceMap.get(acl);
+ if (interfaceMap != null) {
+ interfaceMap.remove(port.getInterfaceId());
}
}