diff options
author | Bjørn Christian Seime <bjorncs@oath.com> | 2018-04-16 16:04:36 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@oath.com> | 2018-04-16 16:12:11 +0200 |
commit | 80bf8ce667fe63af8c6034aa50a1a72b3c51ea02 (patch) | |
tree | 584761c6d9ef58d4a2ee729f6dd4a4ce1f935e87 /container-disc | |
parent | 7c90afed7e18ebac57ba0dd7986c1a4159f78c98 (diff) |
Introduce simple container watchdog
This watchdog uses information from the reference count framework in
jdisc_core. Contains no use of System.gc() or WeakReference.
Diffstat (limited to 'container-disc')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java | 14 | ||||
-rw-r--r-- | container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java | 5 |
2 files changed, 13 insertions, 6 deletions
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java index 3d026172c86..22b049c9ab7 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java @@ -4,6 +4,7 @@ package com.yahoo.container.jdisc.metric; import com.google.inject.Inject; import com.yahoo.component.AbstractComponent; import com.yahoo.jdisc.Metric; +import com.yahoo.jdisc.statistics.ContainerWatchdogMetrics; import java.nio.file.DirectoryStream; import java.nio.file.Files; @@ -34,13 +35,13 @@ public class MetricUpdater extends AbstractComponent { private final Scheduler scheduler; @Inject - public MetricUpdater(Metric metric) { - this(new TimerScheduler(), metric); + public MetricUpdater(Metric metric, ContainerWatchdogMetrics containerWatchdogMetrics) { + this(new TimerScheduler(), metric, containerWatchdogMetrics); } - MetricUpdater(Scheduler scheduler, Metric metric) { + MetricUpdater(Scheduler scheduler, Metric metric, ContainerWatchdogMetrics containerWatchdogMetrics) { this.scheduler = scheduler; - scheduler.schedule(new UpdaterTask(metric), Duration.ofSeconds(10)); + scheduler.schedule(new UpdaterTask(metric, containerWatchdogMetrics), Duration.ofSeconds(10)); } @Override @@ -87,9 +88,11 @@ public class MetricUpdater extends AbstractComponent { private final Runtime runtime = Runtime.getRuntime(); private final Metric metric; + private final ContainerWatchdogMetrics containerWatchdogMetrics; - public UpdaterTask(Metric metric) { + public UpdaterTask(Metric metric, ContainerWatchdogMetrics containerWatchdogMetrics) { this.metric = metric; + this.containerWatchdogMetrics = containerWatchdogMetrics; } @SuppressWarnings("deprecation") @@ -106,6 +109,7 @@ public class MetricUpdater extends AbstractComponent { metric.set(TOTAL_MEMORY_BYTES, totalMemory, null); metric.set(MEMORY_MAPPINGS_COUNT, count_mappings(), null); metric.set(OPEN_FILE_DESCRIPTORS, count_open_files(), null); + containerWatchdogMetrics.emitMetrics(metric); } } diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java index d94cea033f5..f10af7593a4 100644 --- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java +++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java @@ -2,6 +2,7 @@ package com.yahoo.container.jdisc.metric; import com.yahoo.jdisc.Metric; +import com.yahoo.jdisc.statistics.ContainerWatchdogMetrics; import org.junit.Test; import java.time.Duration; @@ -20,7 +21,9 @@ public class MetricUpdaterTest { @Test public void metrics_are_updated_in_scheduler_cycle() throws InterruptedException { Metric metric = mock(Metric.class); - new MetricUpdater(new MockScheduler(), metric); + ContainerWatchdogMetrics containerWatchdogMetrics = mock(ContainerWatchdogMetrics.class); + new MetricUpdater(new MockScheduler(), metric, containerWatchdogMetrics); + verify(containerWatchdogMetrics, times(1)).emitMetrics(any()); verify(metric, times(8)).set(anyString(), any(), any()); } |