import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
import org.opendaylight.openflowplugin.applications.statistics.manager.impl.helper.FlowComparator;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapListBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.statistics.FlowStatisticsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
try {
flowIdByHash.put(flowHashId.getKey(), flowHashId.getFlowId());
} catch (final Exception e) {
- LOG.warn("flow hashing hit a duplicate for {} -> {}", flowHashId.getKey(), flowHashId.getFlowId());
+ LOG.warn("flow hashing hit a duplicate for {} -> {}. Exception was raised: {}",
+ flowHashId.getKey(), flowHashId.getFlowId(), e.getMessage());
}
}
}
}
private FlowKey searchInConfiguration(final FlowAndStatisticsMapList flowStat, final ReadWriteTransaction trans) {
- initConfigFlows(trans);
+ initConfigFlows();
final Iterator<Flow> it = configFlows.iterator();
while(it.hasNext()) {
final Flow cfgFlow = it.next();
final FlowKey cfgKey = cfgFlow.getKey();
- if(flowIdByHash.inverse().containsKey(cfgKey)) {
- it.remove();
- } else if(FlowComparator.flowEquals(flowStat, cfgFlow)) {
- it.remove();
- return cfgKey;
+ final FlowId cfgFlowId = cfgKey.getId();
+
+ if(! flowIdByHash.inverse().containsKey(cfgFlowId)) {
+ if(FlowComparator.flowEquals(flowStat, cfgFlow)) {
+ return cfgKey;
+ }
}
}
return null;
}
- private void initConfigFlows(final ReadWriteTransaction trans) {
+ private void initConfigFlows() {
final Optional<Table> table = readLatestConfiguration(tableRef);
List<Flow> localList = null;
if(table.isPresent()) {
}
} else {
if (listMissingConfigFlows.remove(flowRef)) {
- break; // we probably lost some multipart msg
+ // it is probable that some multipart message was lost
+ break;
}
}
final InstanceIdentifier<FlowHashIdMap> flHashIdent =