void removeUnreportedFlows(final ReadWriteTransaction tx) { final InstanceIdentifier<Node> nodeIdent = tableRef.firstIdentifierOf(Node.class); final List<InstanceIdentifier<Flow>> listMissingConfigFlows = notStatReportedConfigFlows(); final Map<InstanceIdentifier<Flow>, Integer> nodeDeleteMap = mapNodesForDelete.get(nodeIdent); final Map<FlowHashIdMapKey, FlowId> listForRemove = getRemovalList(); for (final Entry<FlowHashIdMapKey, FlowId> entryForRemove : listForRemove.entrySet()) { final FlowKey flowKey = new FlowKey(entryForRemove.getValue()); final InstanceIdentifier<Flow> flowRef = tableRef.child(Flow.class, flowKey); if (nodeDeleteMap != null && flowKey.getId().getValue().startsWith(ALIEN_SYSTEM_FLOW_ID)) { final Integer lifeIndex = nodeDeleteMap.get(flowRef); if (lifeIndex > 0) { break; } else { nodeDeleteMap.remove(flowRef); } } else { if (listMissingConfigFlows.remove(flowRef)) { break; // we probably lost some multipart msg } } final InstanceIdentifier<FlowHashIdMap> flHashIdent = tableRef.augmentation(FlowHashIdMapping.class).child(FlowHashIdMap.class, entryForRemove.getKey()); tx.delete(LogicalDatastoreType.OPERATIONAL, flowRef); tx.delete(LogicalDatastoreType.OPERATIONAL, flHashIdent); } }
void removeUnreportedFlows(final ReadWriteTransaction tx) { final InstanceIdentifier<Node> nodeIdent = tableRef.firstIdentifierOf(Node.class); final List<InstanceIdentifier<Flow>> listMissingConfigFlows = notStatReportedConfigFlows(); final Map<InstanceIdentifier<Flow>, Integer> nodeDeleteMap = mapNodesForDelete.get(nodeIdent); final Map<FlowHashIdMapKey, FlowId> listForRemove = getRemovalList(); for (final Entry<FlowHashIdMapKey, FlowId> entryForRemove : listForRemove.entrySet()) { final FlowKey flowKey = new FlowKey(entryForRemove.getValue()); final InstanceIdentifier<Flow> flowRef = tableRef.child(Flow.class, flowKey); if (nodeDeleteMap != null && flowKey.getId().getValue().startsWith(ALIEN_SYSTEM_FLOW_ID)) { final Integer lifeIndex = nodeDeleteMap.get(flowRef); if (lifeIndex != null && lifeIndex > 0) { break; } else { nodeDeleteMap.remove(flowRef); } } else { if (listMissingConfigFlows.remove(flowRef)) { // it is probable that some multipart message was lost break; } } final InstanceIdentifier<FlowHashIdMap> flHashIdent = tableRef.augmentation(FlowHashIdMapping.class).child(FlowHashIdMap.class, entryForRemove.getKey()); tx.delete(LogicalDatastoreType.OPERATIONAL, flowRef); tx.delete(LogicalDatastoreType.OPERATIONAL, flHashIdent); } }