diff options
author | valerijf <valerijf@yahoo-inc.com> | 2016-09-29 09:16:13 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2016-09-29 09:45:47 +0200 |
commit | b29108db8c2cbb0bd537ab33500d88b49010f5a9 (patch) | |
tree | f1fb5049cdbff24cdb802554ba964b3dbfde7e75 /docker-api | |
parent | 1a80d176855b0b45d79e1c081d3cccae7c008e2d (diff) |
Fixed synchronization and added copyright
Diffstat (limited to 'docker-api')
5 files changed, 19 insertions, 8 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/CounterWrapper.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/CounterWrapper.java index 59fd6a82682..f6b398e83a2 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/CounterWrapper.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/CounterWrapper.java @@ -1,3 +1,4 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi.metrics; import com.yahoo.metrics.simple.Counter; @@ -9,6 +10,8 @@ import com.yahoo.metrics.simple.Counter; * @author valerijf */ public class CounterWrapper implements MetricValue { + private final Object lock = new Object(); + private final Counter counter; private long value = 0; @@ -21,7 +24,7 @@ public class CounterWrapper implements MetricValue { } public void add(long n) { - synchronized (counter) { + synchronized (lock) { counter.add(n); value += n; } @@ -29,7 +32,7 @@ public class CounterWrapper implements MetricValue { @Override public Number getValue() { - synchronized (counter) { + synchronized (lock) { return value; } } diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/GaugeWrapper.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/GaugeWrapper.java index aae841b24fc..db0670c2f87 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/GaugeWrapper.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/GaugeWrapper.java @@ -1,6 +1,6 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi.metrics; - import com.yahoo.metrics.simple.Gauge; /** @@ -10,6 +10,8 @@ import com.yahoo.metrics.simple.Gauge; * @author valerijf */ public class GaugeWrapper implements MetricValue { + private final Object lock = new Object(); + private final Gauge gauge; private double value; @@ -18,7 +20,7 @@ public class GaugeWrapper implements MetricValue { } public void sample(double x) { - synchronized (gauge) { + synchronized (lock) { gauge.sample(x); this.value = x; } @@ -26,6 +28,8 @@ public class GaugeWrapper implements MetricValue { @Override public Number getValue() { - return value; + synchronized (lock) { + return value; + } } } 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 851af65dfb3..a670c29a983 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 @@ -1,12 +1,13 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi.metrics; import com.google.inject.Inject; import com.yahoo.metrics.simple.MetricReceiver; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; /** * Export metrics to both /state/v1/metrics and makes them available programatically. @@ -14,7 +15,7 @@ import java.util.Set; * @author valerijf */ public class MetricReceiverWrapper { - private final Map<String, MetricValue> metrics = new HashMap<>(); + private final Map<String, MetricValue> metrics = new ConcurrentHashMap<>(); private final MetricReceiver metricReceiver; @Inject diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricValue.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricValue.java index a53c0d0188c..f9e04694cb5 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricValue.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricValue.java @@ -1,3 +1,4 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi.metrics; /** diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java index 7aa0ae9b701..6c5d6b1f3bb 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerTest.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.hosted.dockerapi; import com.github.dockerjava.api.model.Network; import com.github.dockerjava.core.command.BuildImageResultCallback; +import com.yahoo.metrics.simple.MetricReceiver; +import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; import org.junit.After; import org.junit.Before; import org.junit.Ignore; @@ -42,7 +44,7 @@ public class DockerTest { .clientKeyPath("") .uri("unix:///var/run/docker.sock")); - private static final DockerImpl docker = new DockerImpl(dockerConfig, null); + private static final DockerImpl docker = new DockerImpl(dockerConfig, new MetricReceiverWrapper(MetricReceiver.nullImplementation)); private static final DockerImage dockerImage = new DockerImage("simple-ipv6-server:Dockerfile"); |