diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-01-05 10:34:07 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-01-25 10:48:48 +0100 |
commit | d8a3a7bf6d9685db965833064876d8ed02ed0699 (patch) | |
tree | 40a5491e1187a075d1a9c0b000bb9de2f215560e /configserver/src | |
parent | f8338e1ea64c58a7986f929a4c3c229b92a8cfde (diff) |
VespaHttpClientBuilder follow builder pattern and add connect and socket timeout to builder.
Diffstat (limited to 'configserver/src')
9 files changed, 32 insertions, 39 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index b11355df689..ca06fe202d9 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -214,7 +214,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye public static class Builder { private TenantRepository tenantRepository; private Optional<Provisioner> hostProvisioner; - private HttpProxy httpProxy = new HttpProxy(new SimpleHttpFetcher()); + private HttpProxy httpProxy = new HttpProxy(new SimpleHttpFetcher(Duration.ofSeconds(30))); private Clock clock = Clock.systemUTC(); private ConfigserverConfig configserverConfig = new ConfigserverConfig.Builder().build(); private Orchestrator orchestrator; diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java index 4e02964fa58..132d3d913e7 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java @@ -14,6 +14,7 @@ import com.yahoo.config.model.api.ServiceInfo; import org.apache.hc.client5.http.async.methods.SimpleHttpRequest; import org.apache.hc.client5.http.async.methods.SimpleHttpResponse; import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder; +import org.apache.hc.client5.http.config.ConnectionConfig; import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient; import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder; @@ -280,23 +281,23 @@ public class ConfigConvergenceChecker extends AbstractComponent { } } - @SuppressWarnings("deprecation") private static RequestConfig createRequestConfig(Duration timeout) { return RequestConfig.custom() .setConnectionRequestTimeout(Timeout.ofSeconds(1)) .setResponseTimeout(Timeout.ofMilliseconds(timeout.toMillis())) - .setConnectTimeout(Timeout.ofSeconds(1)) .build(); } - @SuppressWarnings("deprecation") private static CloseableHttpAsyncClient createHttpClient() { return VespaAsyncHttpClientBuilder .create(tlsStrategy -> PoolingAsyncClientConnectionManagerBuilder.create() .setMaxConnTotal(100) .setMaxConnPerRoute(10) - .setConnectionTimeToLive(TimeValue.ofMilliseconds(1)) + .setDefaultConnectionConfig(ConnectionConfig.custom() + .setTimeToLive(TimeValue.ofMilliseconds(1)) + .setConnectTimeout(Timeout.ofSeconds(1)) + .build()) .setTlsStrategy(tlsStrategy) .build()) .setIOReactorConfig(IOReactorConfig.custom() diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java index 1168898d126..0aa86ab211a 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java @@ -21,18 +21,15 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.Charset; +import java.time.Duration; import java.util.List; -import java.util.logging.Logger; import static java.nio.charset.StandardCharsets.UTF_8; public class HttpProxy { - - private static final Logger logger = Logger.getLogger(HttpProxy.class.getName()); - private final HttpFetcher fetcher; - @Inject public HttpProxy(NodeHostnameVerifier verifier) { this(new SimpleHttpFetcher(verifier)); } + @Inject public HttpProxy(NodeHostnameVerifier verifier) { this(new SimpleHttpFetcher(Duration.ofSeconds(30), verifier)); } public HttpProxy(HttpFetcher fetcher) { this.fetcher = fetcher; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java index 17a3b186beb..bd36ff88aeb 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java @@ -18,7 +18,7 @@ import java.util.Optional; */ public class LogRetriever { - private final CloseableHttpClient httpClient = VespaHttpClientBuilder.create().build(); + private final CloseableHttpClient httpClient = VespaHttpClientBuilder.custom().build().build(); @SuppressWarnings("deprecation") public HttpResponse getLogs(String logServerUri, Optional<Instant> deployTime) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java index 78fdf0a4a02..c4d849c3be0 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java @@ -33,7 +33,7 @@ public class SecretStoreValidator { private static final String PROTOCOL = "http://"; private static final String AWS_PARAMETER_VALIDATION_HANDLER_POSTFIX = ":4080/validate-secret-store"; private final SecretStore secretStore; - private final CloseableHttpClient httpClient = VespaHttpClientBuilder.create().build(); + private final CloseableHttpClient httpClient = VespaHttpClientBuilder.custom().build().build(); public SecretStoreValidator(SecretStore secretStore) { this.secretStore = secretStore; diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java index da4e5d24c48..7bab17b2814 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java @@ -8,14 +8,13 @@ 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.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; -import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; -import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; import org.apache.hc.core5.http.HttpEntity; import org.apache.hc.core5.util.Timeout; import java.io.IOException; import java.net.SocketTimeoutException; import java.net.URI; +import java.time.Duration; import java.util.logging.Level; import java.util.logging.Logger; @@ -24,13 +23,14 @@ public class SimpleHttpFetcher implements HttpFetcher { private final CloseableHttpClient client; - public SimpleHttpFetcher() { this(null); } + public SimpleHttpFetcher(Duration connectTimeout) { this(connectTimeout, null); } - public SimpleHttpFetcher(NodeHostnameVerifier verifier) { - HttpClientBuilder b = verifier != null - ? VespaHttpClientBuilder.create(PoolingHttpClientConnectionManager::new, verifier::verify) - : VespaHttpClientBuilder.create(); - this.client = b.build(); + public SimpleHttpFetcher(Duration connectTimeout, NodeHostnameVerifier verifier) { + VespaHttpClientBuilder builder = VespaHttpClientBuilder.custom().setConnectTimeout(Timeout.of(connectTimeout)); + if (verifier != null) { + builder.set(verifier::verify); + } + this.client = builder.build().build(); } @Override @@ -41,7 +41,6 @@ public class SimpleHttpFetcher implements HttpFetcher { request.addHeader("Connection", "Close"); request.setConfig( RequestConfig.custom() - .setConnectTimeout(Timeout.ofMilliseconds(params.readTimeoutMs)) .setResponseTimeout(Timeout.ofMilliseconds(params.readTimeoutMs)) .build()); try (CloseableHttpResponse response = client.execute(request)) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java index 4b339f72fa6..74dbe05ba62 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java @@ -23,7 +23,7 @@ import java.util.logging.Logger; */ public class TesterClient { - private final CloseableHttpClient httpClient = VespaHttpClientBuilder.create().build(); + private final CloseableHttpClient httpClient = VespaHttpClientBuilder.custom().build().build(); private static final Logger logger = Logger.getLogger(TesterClient.class.getName()); public HttpResponse getStatus(String testerHostname, int port) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java index 548ea8046d4..f52f0783f62 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java @@ -55,17 +55,14 @@ public class ClusterDeploymentMetricsRetriever { private static final ExecutorService executor = Executors.newFixedThreadPool(10, new DaemonThreadFactory("cluster-deployment-metrics-retriever-")); - @SuppressWarnings("deprecation") private static final CloseableHttpClient httpClient = - VespaHttpClientBuilder - .create(registry -> new PoolingHttpClientConnectionManager(registry, - null, - null, - TimeValue.ofMinutes(1))) + VespaHttpClientBuilder.custom() + .setConnectTimeout(Timeout.ofSeconds(10)) + .set(registry -> new PoolingHttpClientConnectionManager(registry, null, null, TimeValue.ofMinutes(1))) + .build() .setDefaultRequestConfig( RequestConfig.custom() .setConnectionRequestTimeout(Timeout.ofSeconds(60)) - .setConnectTimeout(Timeout.ofSeconds(10)) .setResponseTimeout(Timeout.ofSeconds(10)) .build()) .build(); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java index 0dbe0131e9b..edc0e18edc7 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java @@ -12,7 +12,6 @@ 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.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; -import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; import org.apache.hc.core5.http.io.entity.EntityUtils; import org.apache.hc.core5.util.Timeout; @@ -27,15 +26,15 @@ public class ClusterProtonMetricsRetriever { private static final Logger log = Logger.getLogger(ClusterProtonMetricsRetriever.class.getName()); - @SuppressWarnings("deprecation") - private static final CloseableHttpClient httpClient = VespaHttpClientBuilder - .create(PoolingHttpClientConnectionManager::new) - .setDefaultRequestConfig( - RequestConfig.custom() - .setConnectTimeout(Timeout.ofSeconds(10)) - .setResponseTimeout(Timeout.ofSeconds(10)) - .build()) - .build(); + private static final CloseableHttpClient httpClient = + VespaHttpClientBuilder + .custom() + .setConnectTimeout(Timeout.ofSeconds(10)) + .build() + .setDefaultRequestConfig(RequestConfig.custom() + .setResponseTimeout(Timeout.ofSeconds(10)) + .build()) + .build(); public Map<String, ProtonMetricsAggregator> requestMetricsGroupedByCluster(Collection<URI> hosts) { |