From 9b50c69a6daa839289e9fd9a1e4649c2710349be Mon Sep 17 00:00:00 2001 From: Michal Rehak Date: Wed, 24 Sep 2014 18:21:38 +0200 Subject: [PATCH] BUG-2049: DataStore failure in StatisticsManager !WORKAROUND ONLY - during node reconciliation statsManager could join together 2 similar sets of statistics notifications and hit duplicate values during processing - here we just skip those duplicates in order not to loose stats working thread and finish actual multipart Change-Id: I526ab5439055ac565bfaa08e84e5043e8764846a Signed-off-by: Michal Rehak --- .../md/statistics/manager/impl/StatListenCommitFlow.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatListenCommitFlow.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatListenCommitFlow.java index c5aefcbf96..e54fcc6fa2 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatListenCommitFlow.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatListenCommitFlow.java @@ -82,7 +82,7 @@ import com.google.common.collect.HashBiMap; public class StatListenCommitFlow extends StatAbstractListenCommit implements OpendaylightFlowStatisticsListener { - private static final Logger LOG = LoggerFactory.getLogger(StatListenCommitFlow.class); + protected static final Logger LOG = LoggerFactory.getLogger(StatListenCommitFlow.class); private static final String ALIEN_SYSTEM_FLOW_ID = "#UF$TABLE*"; @@ -302,7 +302,11 @@ public class StatListenCommitFlow extends StatAbstractListenCommit flowHashMap = flowHashMapping.getFlowHashIdMap() != null ? flowHashMapping.getFlowHashIdMap() : Collections. emptyList(); for (final FlowHashIdMap flowHashId : flowHashMap) { - flowIdByHash.put(flowHashId.getKey(), flowHashId.getFlowId()); + try { + flowIdByHash.put(flowHashId.getKey(), flowHashId.getFlowId()); + } catch (Exception e) { + LOG.warn("flow hashing hit a duplicate for {} -> {}", flowHashId.getKey(), flowHashId.getFlowId()); + } } } } -- 2.36.6