diff options
author | jonmv <venstad@gmail.com> | 2022-05-31 12:47:29 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-05-31 12:47:42 +0200 |
commit | e4807d219b59fd7e2e29eb7af098e62635a602cb (patch) | |
tree | 28ac7534e5fbfce40441ce411c0cd55eade2cb20 /container-core | |
parent | 9aebfc50b7f0f967bb68e5e6986bc03afc469bd5 (diff) |
Use hc5 in metrics handlers
Diffstat (limited to 'container-core')
2 files changed, 47 insertions, 22 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/metrics/MetricsV2Handler.java b/container-core/src/main/java/com/yahoo/container/handler/metrics/MetricsV2Handler.java index e1a14ef541b..0a71489a605 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/metrics/MetricsV2Handler.java +++ b/container-core/src/main/java/com/yahoo/container/handler/metrics/MetricsV2Handler.java @@ -1,25 +1,26 @@ // 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.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.jdisc.Response.Status.INTERNAL_SERVER_ERROR; import static com.yahoo.jdisc.Response.Status.OK; +import static java.util.concurrent.TimeUnit.MILLISECONDS; /** * @author gjoranv @@ -33,7 +34,7 @@ public class MetricsV2Handler 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 MetricsV2Handler(Executor executor, @@ -52,7 +53,7 @@ public class MetricsV2Handler extends HttpHandlerBase { private JsonResponse valuesResponse(String consumer) { try { String uri = metricsProxyUri + consumerQuery(consumer); - String metricsJson = httpClient.execute(new HttpGet(uri), new BasicResponseHandler()); + String metricsJson = httpClient.execute(new HttpGet(uri), new BasicHttpClientResponseHandler()); return new JsonResponse(OK, metricsJson); } catch (IOException e) { log.warning("Unable to retrieve metrics from " + metricsProxyUri + ": " + Exceptions.toMessageString(e)); @@ -64,9 +65,9 @@ public class MetricsV2Handler extends HttpHandlerBase { return VespaHttpClientBuilder.create() .setUserAgent("application-metrics-retriever") .setDefaultRequestConfig(RequestConfig.custom() - .setConnectTimeout(HTTP_CONNECT_TIMEOUT) - .setSocketTimeout(HTTP_SOCKET_TIMEOUT) - .build()) + .setConnectTimeout(HTTP_CONNECT_TIMEOUT, MILLISECONDS) + .setResponseTimeout(HTTP_SOCKET_TIMEOUT, MILLISECONDS) + .build()) .build(); } @@ -74,4 +75,15 @@ public class MetricsV2Handler extends HttpHandlerBase { return (consumer == null || consumer.isEmpty()) ? "" : "?consumer=" + consumer; } + @Override + public void destroy(){ + super.destroy(); + try { + httpClient.close(); + } + catch (IOException e) { + log.log(Level.WARNING, "Failed closing http client", e); + } + } + } 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); + } + } + } |