aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-05-03 07:32:02 +0200
committerjonmv <venstad@gmail.com>2022-05-03 07:32:02 +0200
commit6872505203d96295c1cdfe0c108daab554d64928 (patch)
tree089155348b1b69f606ef1681e380402db119b090
parent3592e408848787f75e721bf2d6f99f3f010f6610 (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.
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/TestPackage.java4
-rw-r--r--http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java4
-rw-r--r--http-client/src/main/java/ai/vespa/hosted/client/HttpClient.java15
-rw-r--r--http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java9
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java3
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));
}
};