diff options
Diffstat (limited to 'service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/SuperModelListenerImpl.java')
-rw-r--r-- | service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/SuperModelListenerImpl.java | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/SuperModelListenerImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/SuperModelListenerImpl.java deleted file mode 100644 index 7e2b61af090..00000000000 --- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/SuperModelListenerImpl.java +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.service.monitor.internal; - -import com.yahoo.config.model.api.ApplicationInfo; -import com.yahoo.config.model.api.SuperModel; -import com.yahoo.config.model.api.SuperModelListener; -import com.yahoo.config.model.api.SuperModelProvider; -import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.Zone; -import com.yahoo.vespa.service.monitor.application.DuperModel; -import com.yahoo.vespa.service.monitor.ServiceModel; -import com.yahoo.vespa.service.monitor.ServiceStatusProvider; - -import java.util.List; -import java.util.function.Supplier; -import java.util.logging.Logger; - -public class SuperModelListenerImpl implements SuperModelListener, Supplier<ServiceModel> { - private static final Logger logger = Logger.getLogger(SuperModelListenerImpl.class.getName()); - - private final ServiceMonitorMetrics metrics; - private final DuperModel duperModel; - private final ModelGenerator modelGenerator; - private final Zone zone; - - // superModel and monitorManager are always updated together - // and atomically using this monitor. - private final Object monitor = new Object(); - private final MonitorManager monitorManager; - private SuperModel superModel; - - SuperModelListenerImpl(MonitorManager monitorManager, - ServiceMonitorMetrics metrics, - DuperModel duperModel, - ModelGenerator modelGenerator, - Zone zone) { - this.monitorManager = monitorManager; - this.metrics = metrics; - this.duperModel = duperModel; - this.modelGenerator = modelGenerator; - this.zone = zone; - } - - void start(SuperModelProvider superModelProvider) { - synchronized (monitor) { - // This snapshot() call needs to be within the synchronized block, - // since applicationActivated()/applicationRemoved() may be called - // asynchronously even before snapshot() returns. - this.superModel = superModelProvider.snapshot(this); - duperModel.getApplicationInfos(superModel).forEach(monitorManager::applicationActivated); - } - } - - @Override - public void applicationActivated(SuperModel superModel, ApplicationInfo application) { - synchronized (monitor) { - this.superModel = superModel; - monitorManager.applicationActivated(application); - } - } - - @Override - public void applicationRemoved(SuperModel superModel, ApplicationId id) { - synchronized (monitor) { - this.superModel = superModel; - monitorManager.applicationRemoved(id); - } - } - - @Override - public ServiceModel get() { - try (LatencyMeasurement measurement = metrics.startServiceModelSnapshotLatencyMeasurement()) { - // Reference 'measurement' in a dummy statement, otherwise the compiler - // complains about "auto-closeable resource is never referenced in body of - // corresponding try statement". Why hasn't javac fixed this!? - dummy(measurement); - - // WARNING: The slobrok monitor manager may be out-of-sync with super model (no locking) - List<ApplicationInfo> applicationInfos = duperModel.getApplicationInfos(superModel); - - return modelGenerator.toServiceModel(applicationInfos, zone, (ServiceStatusProvider) monitorManager); - } - } - - private void dummy(LatencyMeasurement measurement) {} -} |