void merge(Bucket other, boolean otherIsNewer) { LazySet<String> malformedMetrics = LazySet.newHashSet(); for (Map.Entry<Identifier, UntypedMetric> entry : other.values.entrySet()) { String metricName = entry.getKey().getName(); try { if (!malformedMetrics.contains(metricName)) { get(entry.getKey(), entry.getValue()).merge(entry.getValue(), otherIsNewer); } } catch (IllegalArgumentException e) { log.log(LogLevel.WARNING, "Problems merging metric " + metricName + ", possibly ignoring data."); // avoid spamming the log if there are a lot of mismatching // threads malformedMetrics.add(metricName); } } }
void put(Sample x) { UntypedMetric value = get(x); Measurement m = x.getMeasurement(); switch (x.getMetricType()) { case GAUGE: value.put(m.getMagnitude()); break; case COUNTER: value.add(m.getMagnitude()); break; default: throw new IllegalArgumentException("Unsupported metric type: " + x.getMetricType()); } }