diff options
author | Ola Aunrønning <olaa@oath.com> | 2019-02-05 12:09:13 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@oath.com> | 2019-02-05 12:10:04 +0100 |
commit | a2ffe0ca7d44c58f90857363797bf9f8f7939793 (patch) | |
tree | b789862daf8af5812754f9da96b06a38219d8739 /docker-api | |
parent | 25cca34e9a5de329abe6a6e4b789457581ac74b2 (diff) |
Use synchronized. Handle non-existing keys differently
Diffstat (limited to 'docker-api')
-rw-r--r-- | docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java index 7e8f3704fa0..58126a59cbb 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java @@ -6,11 +6,13 @@ import com.yahoo.metrics.simple.MetricReceiver; import com.yahoo.metrics.simple.Point; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -107,24 +109,22 @@ public class MetricReceiverWrapper { } public void deleteMetricByDimension(String name, Dimensions dimensionsToRemove, DimensionType type) { - try{ - metrics.get(type) - .get(name) - .metricsByDimensions() - .remove(dimensionsToRemove); - } catch (NullPointerException e) {} + synchronized (monitor) { + Optional.ofNullable(metrics.get(type)) + .map(m -> m.get(name)) + .map(ApplicationMetrics::metricsByDimensions) + .ifPresent(m -> m.remove(dimensionsToRemove)); + } } // For testing Map<String, Number> getMetricsForDimension(String application, Dimensions dimensions) { synchronized (monitor) { Map<Dimensions, Map<String, MetricValue>> metricsByDimensions = getOrCreateApplicationMetrics(application, DimensionType.DEFAULT); - try { - return metricsByDimensions.get(dimensions).entrySet().stream().collect( - Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getValue())); - } catch (NullPointerException e) { - return new HashMap<>(); - } + return metricsByDimensions.getOrDefault(dimensions, Collections.emptyMap()) + .entrySet() + .stream() + .collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getValue())); } } |