summaryrefslogtreecommitdiffstats
path: root/service-monitor/src/main/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'service-monitor/src/main/java/com/yahoo')
-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
5 files changed, 24 insertions, 11 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,