From 9a4730df08cb738c4534e784201518ebb8238e18 Mon Sep 17 00:00:00 2001 From: Arne H Juul Date: Tue, 8 Nov 2016 12:20:52 +0100 Subject: add logging of key clashes --- .../yahoo/metrics/simple/jdisc/SnapshotConverter.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java') diff --git a/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java b/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java index bb0989ae127..466b86e790b 100644 --- a/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java +++ b/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java @@ -4,6 +4,7 @@ package com.yahoo.metrics.simple.jdisc; import java.io.PrintStream; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.logging.Logger; import org.HdrHistogram.DoubleHistogram; @@ -23,6 +24,8 @@ import com.yahoo.text.JSON; */ class SnapshotConverter { + private static Logger log = Logger.getLogger(SnapshotConverter.class.getName()); + final Bucket snapshot; final Map> perPointData = new HashMap<>(); private static final char[] DIGITS = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; @@ -85,7 +88,16 @@ class SnapshotConverter { } Map data = new HashMap<>(); for (Map.Entry> entry : perPointData.entrySet()) { - data.put(convert(entry.getKey()), new MetricSet(entry.getValue())); + MetricDimensions key = convert(entry.getKey()); + MetricSet newval = new MetricSet(entry.getValue()); + MetricSet old = data.get(key); + if (old != null) { + // should not happen, this is bad + // TODO: consider merging the two MetricSet instances + log.warning("losing MetricSet when converting for: "+entry.getKey()); + } else { + data.put(key, newval); + } } return new MetricSnapshot(snapshot.getFromMillis(), snapshot.getToMillis(), @@ -95,7 +107,7 @@ class SnapshotConverter { private Map getMap(Point point) { if (point == null) { - point = new Point(new HashMap<>()); + point = Point.emptyPoint(); } if (! perPointData.containsKey(point)) { perPointData.put(point, new HashMap<>()); -- cgit v1.2.3