diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2019-07-15 15:20:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-15 15:20:34 +0200 |
commit | 80b96d1e3bc84828f67850137b89e1f96eccdd89 (patch) | |
tree | 3f1c299eb94c0b0507b5cdfe6abf20ff3858ce90 /configserver | |
parent | 247395232187732f7bc416c6c8ace8029d42329e (diff) | |
parent | c670c76c7c5990de0c576d9a99fbfd05c08e49f1 (diff) |
Merge pull request #10040 from vespa-engine/bjorncs/configserver-https
Bjorncs/configserver https
Diffstat (limited to 'configserver')
4 files changed, 41 insertions, 14 deletions
diff --git a/configserver/pom.xml b/configserver/pom.xml index f346cde63a3..fd33950a546 100644 --- a/configserver/pom.xml +++ b/configserver/pom.xml @@ -185,6 +185,12 @@ <scope>compile</scope> </dependency> <dependency> + <groupId>com.yahoo.vespa</groupId> + <artifactId>jaxrs_client_utils</artifactId> + <version>${project.version}</version> + <scope>compile</scope> <!-- TODO Should ideally be provided, but this bundle is not installed as part of configserver. Orchestrator bundle also includes jaxrs_client_utils in compile scope --> + </dependency> + <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <scope>provided</scope> 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 d55e07540d6..d0f8005ace1 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 @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.application; +import ai.vespa.util.http.VespaClientBuilderFactory; import com.fasterxml.jackson.databind.JsonNode; import com.google.inject.Inject; import com.yahoo.component.AbstractComponent; @@ -17,8 +18,9 @@ import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.ProcessingException; import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.HttpHeaders; import java.net.URI; import java.time.Duration; import java.util.ArrayList; @@ -55,6 +57,7 @@ public class ConfigConvergenceChecker extends AbstractComponent { ); private final StateApiFactory stateApiFactory; + private final VespaClientBuilderFactory clientBuilderFactory = new VespaClientBuilderFactory(); @Inject public ConfigConvergenceChecker() { @@ -97,6 +100,11 @@ public class ConfigConvergenceChecker extends AbstractComponent { } } + @Override + public void deconstruct() { + clientBuilderFactory.close(); + } + @Path(statePath) public interface StateApi { @Path(configSubPath) @@ -152,8 +160,11 @@ public class ConfigConvergenceChecker extends AbstractComponent { return false; } - private static Client createClient(Duration timeout) { - return ClientBuilder.newBuilder() + private Client createClient(Duration timeout) { + return clientBuilderFactory.newBuilder() + .register( + (ClientRequestFilter) ctx -> + ctx.getHeaders().put(HttpHeaders.USER_AGENT, List.of("config-convergence-checker"))) .property(ClientProperties.CONNECT_TIMEOUT, (int) timeout.toMillis()) .property(ClientProperties.READ_TIMEOUT, (int) timeout.toMillis()) .build(); diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java index 5dcdfcdaf37..cc452421d2d 100644 --- a/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java +++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/ConfigServerLocation.java @@ -1,20 +1,28 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.serviceview; +import ai.vespa.util.http.VespaClientBuilderFactory; +import com.google.inject.Inject; import com.yahoo.cloud.config.ConfigserverConfig; +import com.yahoo.component.AbstractComponent; /** * Wrapper for settings from the cloud.config.configserver config. * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> + * @author Steinar Knutsen */ -public class ConfigServerLocation { - public final int restApiPort; +public class ConfigServerLocation extends AbstractComponent { + final int restApiPort; + // The client factory must be owned by a component as StateResource is instantiated per request + final VespaClientBuilderFactory clientBuilderFactory = new VespaClientBuilderFactory(); + + @Inject public ConfigServerLocation(ConfigserverConfig configServer) { restApiPort = configServer.httpport(); } + @Override public String toString() { StringBuilder builder = new StringBuilder(); @@ -22,4 +30,8 @@ public class ConfigServerLocation { return builder.toString(); } + @Override + public void deconstruct() { + clientBuilderFactory.close(); + } } diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java index a6d4c229500..c58f3659ca5 100644 --- a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java +++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateResource.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.serviceview; +import ai.vespa.util.http.VespaClientBuilderFactory; import com.yahoo.container.jaxrs.annotation.Component; import com.yahoo.vespa.serviceview.bindings.ApplicationView; import com.yahoo.vespa.serviceview.bindings.ConfigClient; @@ -14,7 +15,6 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Context; @@ -28,8 +28,6 @@ import java.util.List; import java.util.ListIterator; import java.util.Map; -import static java.util.Collections.singletonList; - /** * A web service to discover and proxy Vespa service state info. @@ -42,6 +40,7 @@ public class StateResource implements StateClient { private static final String USER_AGENT = "service-view-config-server-client"; private static final String SINGLE_API_LINK = "url"; + private final VespaClientBuilderFactory clientBuilderFactory; private final int restApiPort; private final String host; private final UriInfo uriInfo; @@ -58,6 +57,7 @@ public class StateResource implements StateClient { } public StateResource(@Component ConfigServerLocation configServer, @Context UriInfo ui) { + this.clientBuilderFactory = configServer.clientBuilderFactory; this.restApiPort = configServer.restApiPort; this.host = "localhost"; this.uriInfo = ui; @@ -278,11 +278,9 @@ public class StateResource implements StateClient { newUri.append(link.getRawPath()); } - private static Client client() { - return ClientBuilder.newBuilder() - .register((ClientRequestFilter) ctx -> ctx.getHeaders().put(HttpHeaders.USER_AGENT, - singletonList(USER_AGENT))) + private Client client() { + return clientBuilderFactory.newBuilder() + .register((ClientRequestFilter) ctx -> ctx.getHeaders().put(HttpHeaders.USER_AGENT, List.of(USER_AGENT))) .build(); } - } |