summaryrefslogtreecommitdiffstats
path: root/container-disc
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2018-04-16 16:04:36 +0200
committerBjørn Christian Seime <bjorncs@oath.com>2018-04-16 16:12:11 +0200
commit80bf8ce667fe63af8c6034aa50a1a72b3c51ea02 (patch)
tree584761c6d9ef58d4a2ee729f6dd4a4ce1f935e87 /container-disc
parent7c90afed7e18ebac57ba0dd7986c1a4159f78c98 (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.java14
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java5
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());
}