diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-09-20 22:30:00 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-09-20 22:35:10 +0200 |
commit | cd4aef9fb8485524d393ce941ab9986d48a37896 (patch) | |
tree | cb79fbec9bd709913fbfb70532087746f8f6692c | |
parent | 2c193d74d00dd3c3fa90b347ec77fcea828cce2f (diff) |
Emit the application config generation as a metric
4 files changed, 39 insertions, 34 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 f6f51ed91fb..acf9340fa7c 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 @@ -16,7 +16,7 @@ public class AutoscalingMetrics { private static MetricSet create() { return new MetricSet("autoscaling", - metrics("cpu.util", "mem_total.util", "disk.util")); + metrics("cpu.util", "mem_total.util", "disk.util", "application_generation")); } private static Set<Metric> metrics(String ... names) { diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java index 25299978ecd..ec80c568489 100644 --- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java +++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java @@ -50,24 +50,6 @@ public class HandlersConfigurerDi { private static final Logger log = Logger.getLogger(HandlersConfigurerDi.class.getName()); - public static class RegistriesHack { - - @Inject - public RegistriesHack(com.yahoo.container.Container vespaContainer, - ComponentRegistry<AbstractComponent> allComponents, - ComponentRegistry<RequestHandler> requestHandlerRegistry, - ComponentRegistry<ClientProvider> clientProviderRegistry, - ComponentRegistry<ServerProvider> serverProviderRegistry) { - log.log(Level.FINE, "RegistriesHack.init " + System.identityHashCode(this)); - - vespaContainer.setComponentRegistry(allComponents); - vespaContainer.setRequestHandlerRegistry(requestHandlerRegistry); - vespaContainer.setClientProviderRegistry(clientProviderRegistry); - vespaContainer.setServerProviderRegistry(serverProviderRegistry); - } - - } - private final com.yahoo.container.Container vespaContainer; private final Container container; @@ -154,7 +136,6 @@ public class HandlersConfigurerDi { restartOnRedeploy); } - @SuppressWarnings("deprecation") private Injector createFallbackInjector(com.yahoo.container.Container vespaContainer, Injector discInjector) { return discInjector.createChildInjector(new AbstractModule() { @Override @@ -182,4 +163,25 @@ public class HandlersConfigurerDi { container.shutdown(currentGraph, deconstructor); } + /** Returns the currently active application configuration generation */ + public long generation() { return currentGraph.generation(); } + + public static class RegistriesHack { + + @Inject + public RegistriesHack(com.yahoo.container.Container vespaContainer, + ComponentRegistry<AbstractComponent> allComponents, + ComponentRegistry<RequestHandler> requestHandlerRegistry, + ComponentRegistry<ClientProvider> clientProviderRegistry, + ComponentRegistry<ServerProvider> serverProviderRegistry) { + log.log(Level.FINE, "RegistriesHack.init " + System.identityHashCode(this)); + + vespaContainer.setComponentRegistry(allComponents); + vespaContainer.setRequestHandlerRegistry(requestHandlerRegistry); + vespaContainer.setClientProviderRegistry(clientProviderRegistry); + vespaContainer.setServerProviderRegistry(serverProviderRegistry); + } + + } + } diff --git a/container-di/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java b/container-di/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java index a054ef5ffe0..256c965052a 100644 --- a/container-di/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java +++ b/container-di/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java @@ -50,8 +50,8 @@ public class ComponentGraph { private static final Logger log = Logger.getLogger(ComponentGraph.class.getName()); - private long generation; - private Map<ComponentId, Node> nodesById = new HashMap<>(); + private final long generation; + private final Map<ComponentId, Node> nodesById = new HashMap<>(); public ComponentGraph(long generation) { this.generation = generation; 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 226107c24b8..4614f8f9857 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 @@ -65,20 +65,12 @@ import static com.yahoo.collections.CollectionUtil.first; */ public final class ConfiguredApplication implements Application { - public static final class ApplicationContext { - - final JdiscBindingsConfig discBindingsConfig; - - public ApplicationContext(com.yahoo.container.jdisc.JdiscBindingsConfig discBindingsConfig) { - this.discBindingsConfig = discBindingsConfig; - } - } - private static final Logger log = Logger.getLogger(ConfiguredApplication.class.getName()); private static final Set<ClientProvider> startedClients = Collections.newSetFromMap(new WeakHashMap<>()); private static final Set<ServerProvider> startedServers = Collections.newSetFromMap(new IdentityHashMap<>()); private final SubscriberFactory subscriberFactory; + private final Metric metric; private final ContainerActivator activator; private final String configId; private final OsgiFramework osgiFramework; @@ -97,7 +89,6 @@ public final class ConfiguredApplication implements Application { new ComponentRegistry<>(), new ComponentRegistry<>()); private final OsgiFramework restrictedOsgiFramework; - private volatile int applicationSerialNo = 0; private HandlersConfigurerDi configurer; private ScheduledThreadPoolExecutor shutdownDeadlineExecutor; private Thread reconfigurerThread; @@ -127,11 +118,13 @@ public final class ConfiguredApplication implements Application { public ConfiguredApplication(ContainerActivator activator, OsgiFramework osgiFramework, com.yahoo.jdisc.Timer timer, - SubscriberFactory subscriberFactory) { + SubscriberFactory subscriberFactory, + Metric metric) { this.activator = activator; this.osgiFramework = osgiFramework; this.timerSingleton = timer; this.subscriberFactory = subscriberFactory; + this.metric = metric; this.configId = System.getProperty("config.id"); this.slobrokConfigSubscriber = (subscriberFactory instanceof CloudSubscriberFactory) ? Optional.of(new SlobrokConfigSubscriber(configId)) @@ -256,7 +249,8 @@ public final class ConfiguredApplication implements Application { startAndStopServers(); log.info("Switching to the latest deployed set of configurations and components. " + - "Application switch number: " + (applicationSerialNo++)); + "Application config generation: " + configurer.generation()); + metric.set("application_generation", configurer.generation(), metric.createContext(Map.of())); } private ContainerBuilder createBuilderWithGuiceBindings() { @@ -427,4 +421,13 @@ public final class ConfiguredApplication implements Application { } } + public static final class ApplicationContext { + + final JdiscBindingsConfig discBindingsConfig; + + public ApplicationContext(com.yahoo.container.jdisc.JdiscBindingsConfig discBindingsConfig) { + this.discBindingsConfig = discBindingsConfig; + } + } + } |