summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2019-02-08 09:02:53 +0100
committerJon Marius Venstad <venstad@gmail.com>2019-02-08 09:02:53 +0100
commitd2419acb0eae2e9d4895d82607dd64aac563aafa (patch)
treeb002866ae61c66042f8c7d7c997092e32dc70927
parent6b90277a622c2ed3fabff61e67b19228133ac189 (diff)
Simplify, using pre-computed host-to-application map
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java10
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java31
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java7
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java9
4 files changed, 11 insertions, 46 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
index 8215dc8ecd0..b9c5df9d999 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
@@ -62,7 +62,11 @@ public class ServiceMonitorStub implements ServiceMonitor {
}
@Override
- public Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() {
+ public ServiceModel getServiceModelSnapshot() {
+ return new ServiceModel(getAllApplicationInstances());
+ }
+
+ private Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() {
// Convert apps information to the response payload to return
Map<ApplicationInstanceReference, ApplicationInstance> status = new HashMap<>();
for (Map.Entry<ApplicationId, MockDeployer.ApplicationContext> app : apps.entrySet()) {
@@ -84,8 +88,4 @@ public class ServiceMonitorStub implements ServiceMonitor {
return status;
}
- @Override
- public ServiceModel getServiceModelSnapshot() {
- return new ServiceModel(getAllApplicationInstances());
- }
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java
index d1d5f3e8c95..1a859cfacc5 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ServiceMonitorInstanceLookupService.java
@@ -29,42 +29,17 @@ public class ServiceMonitorInstanceLookupService implements InstanceLookupServic
@Override
public Optional<ApplicationInstance> findInstanceById(ApplicationInstanceReference applicationInstanceReference) {
- Map<ApplicationInstanceReference, ApplicationInstance> instanceMap
- = serviceMonitor.getAllApplicationInstances();
- return Optional.ofNullable(instanceMap.get(applicationInstanceReference));
+ return serviceMonitor.getServiceModelSnapshot().getApplicationInstance(applicationInstanceReference);
}
@Override
public Optional<ApplicationInstance> findInstanceByHost(HostName hostName) {
- Map<ApplicationInstanceReference, ApplicationInstance> instanceMap
- = serviceMonitor.getAllApplicationInstances();
- List<ApplicationInstance> applicationInstancesUsingHost = instanceMap.entrySet().stream()
- .filter(entry -> applicationInstanceUsesHost(entry.getValue(), hostName))
- .map(Map.Entry::getValue)
- .collect(Collectors.toList());
- if (applicationInstancesUsingHost.isEmpty()) {
- return Optional.empty();
- }
- if (applicationInstancesUsingHost.size() > 1) {
- throw new IllegalStateException(
- "Major assumption broken: Multiple application instances contain host " + hostName.s()
- + ": " + applicationInstancesUsingHost);
- }
- return Optional.of(applicationInstancesUsingHost.get(0));
+ return Optional.ofNullable(serviceMonitor.getServiceModelSnapshot().getApplicationsByHostName().get(hostName));
}
@Override
public Set<ApplicationInstanceReference> knownInstances() {
- return serviceMonitor.getAllApplicationInstances().keySet();
- }
-
- private static boolean applicationInstanceUsesHost(ApplicationInstance applicationInstance,
- HostName hostName) {
- return applicationInstance.serviceClusters().stream()
- .anyMatch(serviceCluster ->
- serviceCluster.serviceInstances().stream()
- .anyMatch(serviceInstance ->
- serviceInstance.hostName().equals(hostName)));
+ return serviceMonitor.getServiceModelSnapshot().getAllApplicationInstances().keySet();
}
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
index 50ea31eb9c4..0a40555036c 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
@@ -17,6 +17,7 @@ import com.yahoo.vespa.service.slobrok.SlobrokMonitorManagerImpl;
import java.util.Map;
public class ServiceMonitorImpl implements ServiceMonitor {
+
private final ServiceModelCache serviceModelProvider;
@Inject
@@ -37,12 +38,8 @@ public class ServiceMonitorImpl implements ServiceMonitor {
}
@Override
- public Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() {
- return serviceModelProvider.get().getAllApplicationInstances();
- }
-
- @Override
public ServiceModel getServiceModelSnapshot() {
return serviceModelProvider.get();
}
+
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
index 5ed34673da5..49539c61e5d 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
@@ -1,11 +1,6 @@
// 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;
-import com.yahoo.vespa.applicationmodel.ApplicationInstance;
-import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
-
-import java.util.Map;
-
/**
* The service monitor interface. A service monitor provides up to date information about the liveness status
* (up, down or not known) of each service instance in a Vespa zone
@@ -15,11 +10,9 @@ import java.util.Map;
public interface ServiceMonitor {
/**
- * Returns the current liveness status (up, down or unknown) of all instances
+ * Returns a ServiceModel which contains the current liveness status (up, down or unknown) of all instances
* of all services of all clusters of all applications in a zone.
*/
- Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances();
-
ServiceModel getServiceModelSnapshot();
}