From 464a1ec34d9bb04872e799980378bc6e904c48c9 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Thu, 2 Mar 2023 21:14:40 +0100 Subject: Define application_generation in containermetrics and add to the vespa set --- .../yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java | 2 +- .../com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java | 2 ++ .../src/main/java/com/yahoo/metrics/ContainerMetrics.java | 2 ++ .../java/com/yahoo/container/jdisc/ConfiguredApplication.java | 4 ++-- .../src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java | 9 +++------ 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java index a3fdce98c73..9cb8b4e00ca 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java @@ -31,7 +31,7 @@ public class AutoscalingMetrics { metrics.add("disk.util"); // node level -default metrics.add(SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_DISK.average()); // better for content as it is the basis for blocking - metrics.add("application_generation"); + metrics.add(ContainerMetrics.APPLICATION_GENERATION.baseName()); metrics.add("in_service"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java index d6f0df8e051..000ac92a8a0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java @@ -131,6 +131,8 @@ public class VespaMetricSet { private static Set getContainerMetrics() { Set metrics = new LinkedHashSet<>(); + addMetric(metrics, ContainerMetrics.APPLICATION_GENERATION.baseName()); + addMetric(metrics, ContainerMetrics.HANDLED_REQUESTS.count()); addMetric(metrics, ContainerMetrics.HANDLED_LATENCY, EnumSet.of(sum, count, max)); diff --git a/container-core/src/main/java/com/yahoo/metrics/ContainerMetrics.java b/container-core/src/main/java/com/yahoo/metrics/ContainerMetrics.java index 06285ecfba8..0b61c937cb8 100644 --- a/container-core/src/main/java/com/yahoo/metrics/ContainerMetrics.java +++ b/container-core/src/main/java/com/yahoo/metrics/ContainerMetrics.java @@ -11,6 +11,8 @@ public enum ContainerMetrics implements VespaMetrics { HTTP_STATUS_4XX("http.status.4xx", Unit.RESPONSE, "Number of responses with a 4xx status"), HTTP_STATUS_5XX("http.status.5xx", Unit.RESPONSE, "Number of responses with a 5xx status"), + APPLICATION_GENERATION("application_generation", Unit.VERSION, "The currently live application config generation (aka session id)"), + JDISC_GC_COUNT("jdisc.gc.count", Unit.OPERATION, "Number of JVM garbage collections done"), JDISC_GC_MS("jdisc.gc.ms", Unit.MILLISECOND, "Time spent in JVM garbage collection"), JDISC_JVM("jdisc.jvm", Unit.VERSION, "JVM runtime version"), diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java index b1eeffc24cc..fc49ae18b99 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java @@ -341,10 +341,10 @@ public final class ConfiguredApplication implements Application { tryReportFailedComponentGraphConstructionMetric(configurer, e); log.log(Level.SEVERE, "Reconfiguration failed, your application package must be fixed, unless this is a " + - "JNI reload issue: " + Exceptions.toMessageString(e), e); + "JNI reload issue: " + Exceptions.toMessageString(e), e); } catch (Error e) { com.yahoo.protect.Process.logAndDie("java.lang.Error on reconfiguration: We are probably in " + - "a bad state and will terminate", e); + "a bad state and will terminate", e); } } log.fine("Reconfiguration loop exited"); diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java index 15ba65310ff..c28884696aa 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java @@ -241,8 +241,7 @@ public final class ThreadLocalDirectory { synchronized (directoryLock) { previousIntervalSize = directory.size(); previous = directory; - directory = new ArrayList<>( - previousIntervalSize); + directory = new ArrayList<>(previousIntervalSize); } contained = new ArrayList<>(previousIntervalSize); // Yes, this is an inconsistence about when the registered state is @@ -268,12 +267,10 @@ public final class ThreadLocalDirectory { throw new IllegalStateException("Does not use observable updaters."); } List> current; - List view; synchronized (directoryLock) { - current = new ArrayList<>( - directory); + current = new ArrayList<>(directory); } - view = new ArrayList<>(current.size()); + List view = new ArrayList<>(current.size()); for (LocalInstance x : current) { view.add(x.copyCurrent(observableUpdater)); } -- cgit v1.2.3