aboutsummaryrefslogtreecommitdiffstats
path: root/service-monitor
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2021-09-13 16:41:21 +0200
committerHåkon Hallingstad <hakon@yahooinc.com>2021-09-13 16:41:21 +0200
commita3fcef7201b804437becb7773821bb1457a1c8ce (patch)
tree42db280ea8d99bcb80378e907db8aa3ba6262cc6 /service-monitor
parentdc4fd3d892d799cee3016f04f134bd1baa5c9ce6 (diff)
Add ServiceStatus.UNKNOWN
Diffstat (limited to 'service-monitor')
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java7
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java7
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java8
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java11
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java2
8 files changed, 27 insertions, 14 deletions
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java
index d6e15f6af4e..fd7c77e2a20 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java
@@ -9,6 +9,8 @@ import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceStatusInfo;
import com.yahoo.vespa.applicationmodel.ServiceType;
+import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.service.duper.DuperModelManager;
import com.yahoo.vespa.service.executor.RunletExecutorImpl;
import com.yahoo.vespa.service.manager.HealthMonitorApi;
@@ -54,13 +56,14 @@ public class HealthMonitorManager implements MonitorManager, HealthMonitorApi {
private final ApplicationHealthMonitorFactory applicationHealthMonitorFactory;
@Inject
- public HealthMonitorManager(DuperModelManager duperModel) {
+ public HealthMonitorManager(DuperModelManager duperModel, FlagSource flagSource) {
this(duperModel,
new StateV1HealthModel(
TARGET_HEALTH_STALENESS,
HEALTH_REQUEST_TIMEOUT,
KEEP_ALIVE,
- new RunletExecutorImpl(THREAD_POOL_SIZE)));
+ new RunletExecutorImpl(THREAD_POOL_SIZE),
+ Flags.USE_UNKNOWN_SERVICE_STATUS.bindTo(flagSource).value()));
}
private HealthMonitorManager(DuperModelManager duperModel, StateV1HealthModel healthModel) {
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java
index 73f0480bf96..2128d2b77c3 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java
@@ -20,6 +20,7 @@ class StateV1HealthEndpoint implements HealthEndpoint {
private final Duration connectionKeepAlive;
private final Duration delay;
private final RunletExecutor executor;
+ private boolean useUnknownServiceStatus;
StateV1HealthEndpoint(ServiceId serviceId,
HostName hostname,
@@ -27,10 +28,12 @@ class StateV1HealthEndpoint implements HealthEndpoint {
Duration delay,
Duration requestTimeout,
Duration connectionKeepAlive,
- RunletExecutor executor) {
+ RunletExecutor executor,
+ boolean useUnknownServiceStatus) {
this.serviceId = serviceId;
this.delay = delay;
this.executor = executor;
+ this.useUnknownServiceStatus = useUnknownServiceStatus;
this.url = uncheck(() -> new URL("http", hostname.value(), port, "/state/v1/health"));
this.requestTimeout = requestTimeout;
this.connectionKeepAlive = connectionKeepAlive;
@@ -43,7 +46,7 @@ class StateV1HealthEndpoint implements HealthEndpoint {
@Override
public HealthMonitor startMonitoring() {
- StateV1HealthUpdater updater = new StateV1HealthUpdater(url, requestTimeout, connectionKeepAlive);
+ var updater = new StateV1HealthUpdater(url, requestTimeout, connectionKeepAlive, useUnknownServiceStatus);
return new StateV1HealthMonitor(updater, executor, delay);
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java
index 0408e0134ea..81a6d6d6013 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java
@@ -30,15 +30,18 @@ public class StateV1HealthModel implements AutoCloseable {
private final Duration requestTimeout;
private final Duration connectionKeepAlive;
private final RunletExecutor executor;
+ private final boolean useUnknownServiceStatus;
StateV1HealthModel(Duration targetHealthStaleness,
Duration requestTimeout,
Duration connectionKeepAlive,
- RunletExecutor executor) {
+ RunletExecutor executor,
+ boolean useUnknownServiceStatus) {
this.targetHealthStaleness = targetHealthStaleness;
this.requestTimeout = requestTimeout;
this.connectionKeepAlive = connectionKeepAlive;
this.executor = executor;
+ this.useUnknownServiceStatus = useUnknownServiceStatus;
}
Map<ServiceId, HealthEndpoint> extractHealthEndpoints(ApplicationInfo application) {
@@ -57,7 +60,8 @@ public class StateV1HealthModel implements AutoCloseable {
targetHealthStaleness,
requestTimeout,
connectionKeepAlive,
- executor);
+ executor,
+ useUnknownServiceStatus);
endpoints.put(serviceId, endpoint);
break; // Avoid >1 endpoints per serviceId
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java
index 5813e2cef39..c544ea4b8b4 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java
@@ -24,13 +24,16 @@ class StateV1HealthUpdater implements HealthUpdater {
private final String endpoint;
private final StateV1HealthClient healthClient;
- private volatile ServiceStatusInfo serviceStatusInfo = new ServiceStatusInfo(ServiceStatus.NOT_CHECKED);
+ private volatile ServiceStatusInfo serviceStatusInfo;
- StateV1HealthUpdater(URL url, Duration requestTimeout, Duration connectionKeepAlive) {
- this(url.toString(), new StateV1HealthClient(url, requestTimeout, connectionKeepAlive));
+ StateV1HealthUpdater(URL url, Duration requestTimeout, Duration connectionKeepAlive,
+ boolean useUnknownServiceStatus) {
+ this(url.toString(), new StateV1HealthClient(url, requestTimeout, connectionKeepAlive), useUnknownServiceStatus);
}
- StateV1HealthUpdater(String endpoint, StateV1HealthClient healthClient) {
+ StateV1HealthUpdater(String endpoint, StateV1HealthClient healthClient, boolean useUnknownServiceStatus) {
+ var serviceStatus = useUnknownServiceStatus ? ServiceStatus.UNKNOWN : ServiceStatus.NOT_CHECKED;
+ this.serviceStatusInfo = new ServiceStatusInfo(serviceStatus);
this.endpoint = endpoint;
this.healthClient = healthClient;
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java
index 9486bf505ab..891fbbd1885 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java
@@ -17,7 +17,7 @@ public interface ServiceStatusProvider {
* Get the {@link ServiceStatus} of a particular service.
*
* <p>{@link ServiceStatus#NOT_CHECKED NOT_CHECKED} must be returned if the
- * service status provider does does not monitor the service status for
+ * service status provider does not monitor the service status for
* the particular application, cluster, service type, and config id.
*/
ServiceStatusInfo getStatus(ApplicationId applicationId,
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java
index 94f9e8e0999..70454ffdd58 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java
@@ -41,7 +41,7 @@ public class StateV1HealthModelTest {
private final List<HostName> hostnames = Stream.of("host1", "host2").map(HostName::from).collect(Collectors.toList());
private final ApplicationInfo proxyHostApplicationInfo = proxyHostApplication.makeApplicationInfo(hostnames);
- private final StateV1HealthModel model = new StateV1HealthModel(healthStaleness, requestTimeout, keepAlive, executor);
+ private final StateV1HealthModel model = new StateV1HealthModel(healthStaleness, requestTimeout, keepAlive, executor, false);
@Test
public void test() {
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java
index e3fb7d08d93..bec33a7dbfd 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java
@@ -17,7 +17,7 @@ public class StateV1HealthMonitorTest {
public void downThenUpThenDown() throws Exception {
StateV1HealthClient client = mock(StateV1HealthClient.class);
- StateV1HealthUpdater updater = new StateV1HealthUpdater("https://foo/state/v1/health", client);
+ StateV1HealthUpdater updater = new StateV1HealthUpdater("https://foo/state/v1/health", client, false);
RunletExecutor executor = new RunletExecutorImpl(2);
try (StateV1HealthMonitor monitor = new StateV1HealthMonitor(updater, executor, Duration.ofMillis(10))) {
assertEquals(ServiceStatus.NOT_CHECKED, monitor.getStatus().serviceStatus());
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java
index bb60d049aa8..833507dfb6e 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java
@@ -165,6 +165,6 @@ public class StateV1HealthUpdaterTest {
private StateV1HealthUpdater makeUpdater(CloseableHttpClient client, Function<HttpEntity, String> getContentFunction) {
ApacheHttpClient apacheHttpClient = new ApacheHttpClient(url, client);
StateV1HealthClient healthClient = new StateV1HealthClient(apacheHttpClient, getContentFunction);
- return new StateV1HealthUpdater(url.toString(), healthClient);
+ return new StateV1HealthUpdater(url.toString(), healthClient, false);
}
} \ No newline at end of file