diff options
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java b/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java index aa99beb3b24..6ea35138606 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java +++ b/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java @@ -1,31 +1,32 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.handler.metrics; -import ai.vespa.util.http.hc4.VespaHttpClientBuilder; +import ai.vespa.util.http.hc5.VespaHttpClientBuilder; import com.google.inject.Inject; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.restapi.Path; import com.yahoo.restapi.StringResponse; import com.yahoo.yolean.Exceptions; -import org.apache.http.client.HttpClient; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.BasicResponseHandler; -import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.hc.client5.http.classic.methods.HttpGet; +import org.apache.hc.client5.http.config.RequestConfig; +import org.apache.hc.client5.http.impl.classic.BasicHttpClientResponseHandler; +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import java.io.IOException; import java.net.URI; import java.util.List; import java.util.Optional; import java.util.concurrent.Executor; +import java.util.logging.Level; import static com.yahoo.container.handler.metrics.MetricsV2Handler.consumerQuery; import static com.yahoo.jdisc.Response.Status.INTERNAL_SERVER_ERROR; +import static java.util.concurrent.TimeUnit.MILLISECONDS; /** * @author Oracien */ -public class PrometheusV1Handler extends HttpHandlerBase{ +public class PrometheusV1Handler extends HttpHandlerBase { public static final String V1_PATH = "/prometheus/v1"; static final String VALUES_PATH = V1_PATH + "/values"; @@ -34,7 +35,7 @@ public class PrometheusV1Handler extends HttpHandlerBase{ private static final int HTTP_SOCKET_TIMEOUT = 30000; private final String metricsProxyUri; - private final HttpClient httpClient = createHttpClient(); + private final CloseableHttpClient httpClient = createHttpClient(); @Inject public PrometheusV1Handler(Executor executor, @@ -53,7 +54,7 @@ public class PrometheusV1Handler extends HttpHandlerBase{ private HttpResponse valuesResponse(String consumer) { try { String uri = metricsProxyUri + consumerQuery(consumer); - String prometheusText = httpClient.execute(new HttpGet(uri), new BasicResponseHandler()); + String prometheusText = httpClient.execute(new HttpGet(uri), new BasicHttpClientResponseHandler()); return new StringResponse(prometheusText); } catch (IOException e) { log.warning("Unable to retrieve metrics from " + metricsProxyUri + ": " + Exceptions.toMessageString(e)); @@ -65,9 +66,21 @@ public class PrometheusV1Handler extends HttpHandlerBase{ return VespaHttpClientBuilder.create() .setUserAgent("application-prometheus-receiver") .setDefaultRequestConfig(RequestConfig.custom() - .setConnectTimeout(HTTP_CONNECT_TIMEOUT) - .setSocketTimeout(HTTP_SOCKET_TIMEOUT) + .setConnectTimeout(HTTP_CONNECT_TIMEOUT, MILLISECONDS) + .setResponseTimeout(HTTP_SOCKET_TIMEOUT, MILLISECONDS) .build()) .build(); } + + @Override + public void destroy(){ + super.destroy(); + try { + httpClient.close(); + } + catch (IOException e) { + log.log(Level.WARNING, "Failed closing http client", e); + } + } + } |