diff options
author | jonmv <venstad@gmail.com> | 2022-05-03 07:32:02 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-05-03 07:32:02 +0200 |
commit | 6872505203d96295c1cdfe0c108daab554d64928 (patch) | |
tree | 089155348b1b69f606ef1681e380402db119b090 | |
parent | 3592e408848787f75e721bf2d6f99f3f010f6610 (diff) |
Revert "Merge pull request #22393 from vespa-engine/revert-22386-jonmv/remove-last-controller-jersey-client"
This reverts commit 04898b34190a3e3bb9d3053e11eb892bc48ff842, reversing
changes made to 3a757528a0a978d44cb1bd9aae28b567c477d139.
5 files changed, 26 insertions, 9 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/TestPackage.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/TestPackage.java index 751f6674128..0c9ff7863bd 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/TestPackage.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/TestPackage.java @@ -141,7 +141,9 @@ public class TestPackage { try { byte[] testsJar = ZipEntries.readFile(testPackage, "components/" + path, 1 << 30); Manifest manifest = new JarInputStream(new ByteArrayInputStream(testsJar)).getManifest(); - for (String suite : manifest.getMainAttributes().getValue("X-JDisc-Test-Bundle-Categories").split(",")) + String bundleCategoriesHeader = manifest.getMainAttributes().getValue("X-JDisc-Test-Bundle-Categories"); + if (bundleCategoriesHeader == null) continue; + for (String suite : bundleCategoriesHeader.split(",")) if ( ! suite.isBlank()) switch (suite.trim()) { case "SystemTest": suites.add(system); break; case "StagingSetup": suites.add(staging_setup); break; diff --git a/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java b/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java index 6a76ef65082..ed3fee101ed 100644 --- a/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java +++ b/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java @@ -147,10 +147,10 @@ public abstract class AbstractHttpClient implements HttpClient { private final Method method; private final HostStrategy hosts; + private final List<Supplier<Query>> dynamicQuery = new ArrayList<>(); + private final Map<String, List<String>> headers = new LinkedHashMap<>(); private HttpURL.Path path = Path.empty(); private HttpURL.Query query = Query.empty(); - private List<Supplier<Query>> dynamicQuery = new ArrayList<>(); - private Map<String, List<String>> headers = new LinkedHashMap<>(); private Supplier<HttpEntity> entity = () -> null; private RequestConfig config = HttpClient.defaultRequestConfig; private ResponseVerifier verifier = HttpClient.throwOnError; diff --git a/http-client/src/main/java/ai/vespa/hosted/client/HttpClient.java b/http-client/src/main/java/ai/vespa/hosted/client/HttpClient.java index 16a419bf324..ea8328ed793 100644 --- a/http-client/src/main/java/ai/vespa/hosted/client/HttpClient.java +++ b/http-client/src/main/java/ai/vespa/hosted/client/HttpClient.java @@ -226,7 +226,8 @@ public interface HttpClient extends Closeable { @Override default RuntimeException toException(int statusCode, byte[] body, ClassicHttpRequest request) { - return new ResponseException(request + " failed with status " + statusCode + " and body '" + new String(body, UTF_8) + "'"); + return new ResponseException(statusCode, + request + " failed with status " + statusCode + " and body '" + new String(body, UTF_8) + "'"); } } @@ -249,6 +250,11 @@ public interface HttpClient extends Closeable { @FunctionalInterface interface HostStrategy extends Iterable<URI> { + /** Attempts the given host once. */ + static HostStrategy of(URI host) { + return repeating(host, 1); + } + /** Attempts each request once against each listed host. */ static HostStrategy ordered(List<URI> hosts) { return List.copyOf(hosts)::iterator; @@ -292,10 +298,15 @@ public interface HttpClient extends Closeable { /** An exception due to server error, a bad request, or similar, which resulted in a non-OK HTTP response. */ class ResponseException extends RuntimeException { - public ResponseException(String message) { + private final int statusCode; + + public ResponseException(int statusCode, String message) { super(message); + this.statusCode = statusCode; } + public int statusCode() { return statusCode; } + } }
\ No newline at end of file diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java b/http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java index 8ad9d63cd1a..8866d67fd60 100644 --- a/http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java +++ b/http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java @@ -4,11 +4,13 @@ import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; +import org.apache.hc.client5.http.ssl.DefaultHostnameVerifier; import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder; import org.apache.hc.core5.http.ContentType; import org.apache.hc.core5.http.HttpHeaders; import org.apache.hc.core5.util.Timeout; +import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import java.time.Duration; import java.util.Map; @@ -26,18 +28,19 @@ public class DefaultHttpClientBuilder { private DefaultHttpClientBuilder() { } - public static HttpClientBuilder create(SSLContext sslContext, String userAgent) { - return create(() -> sslContext, userAgent); + public static HttpClientBuilder create(Supplier<SSLContext> sslContext, String userAgent) { + return create(sslContext, new DefaultHostnameVerifier(), userAgent); } /** Creates an HTTP client builder with the given SSL context, and using the provided timeouts for requests where config is not overridden. */ - public static HttpClientBuilder create(Supplier<SSLContext> sslContext, String userAgent) { + public static HttpClientBuilder create(Supplier<SSLContext> sslContext, HostnameVerifier verifier, String userAgent) { return HttpClientBuilder.create() .setConnectionManager(PoolingHttpClientConnectionManagerBuilder .create() .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder .create() .setSslContext(sslContext.get()) + .setHostnameVerifier(verifier) .build()) .build()) .setUserAgent(userAgent) diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java index 37a690bd2bd..28ba259d2ae 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java @@ -181,7 +181,8 @@ public class ClusterControllerClientImpl implements ClusterControllerClient { Inspector root = SlimeUtils.jsonToSlime(body).get(); String detail = root.field("message").valid() ? root.field("message").asString() : new String(body, UTF_8); - return new ResponseException("got status code " + statusCode + " for " + request + (detail.isBlank() ? "" : ": " + detail)); + return new ResponseException(statusCode, + "got status code " + statusCode + " for " + request + (detail.isBlank() ? "" : ": " + detail)); } }; |