aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2018-01-17 11:21:08 +0100
committerGitHub <noreply@github.com>2018-01-17 11:21:08 +0100
commit024ff929534adef4f495e316457c2db5b8e8eca2 (patch)
treeaf1ad9c3511e864765d8b6b83484d48654599f31
parent8be9d66613676831199dfd972fba829c27677f99 (diff)
parent393967aa13f70b06fc079a270de79a18f6c84f8a (diff)
Merge pull request #4691 from vespa-engine/bjorncs/configserver-rest-executor
Bjorncs/configserver rest executor
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java
index 4d4cc2f3146..81388ccce03 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java
@@ -34,6 +34,7 @@ import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import java.io.IOException;
import java.io.InputStream;
+import java.io.UncheckedIOException;
import java.net.URI;
import java.security.cert.X509Certificate;
import java.time.Duration;
@@ -116,7 +117,7 @@ public class ConfigServerRestExecutorImpl implements ConfigServerRestExecutor {
return new ProxyResponse(proxyRequest, node.toString(), 200, Optional.empty(), "application/json");
}
- private String removeFirstSlashIfAny(String url) {
+ private static String removeFirstSlashIfAny(String url) {
if (url.startsWith("/")) {
return url.substring(1);
}
@@ -139,7 +140,7 @@ public class ConfigServerRestExecutorImpl implements ConfigServerRestExecutor {
CloseableHttpClient client = createHttpClient(config, sslContextProvider, zoneRegistry, proxyRequest);
CloseableHttpResponse response = client.execute(requestBase);
) {
- String content = EntityUtils.toString(response.getEntity());
+ String content = getContent(response);
int status = response.getStatusLine().getStatusCode();
if (status / 100 == 5) {
errorBuilder.append("Talking to server ").append(uri.getHost());
@@ -158,7 +159,7 @@ public class ConfigServerRestExecutorImpl implements ConfigServerRestExecutor {
}
// Send response back
return Optional.of(new ProxyResponse(proxyRequest, content, status, Optional.of(uri), contentType));
- } catch (IOException|RuntimeException e) {
+ } catch (Exception e) {
errorBuilder.append("Talking to server ").append(uri.getHost());
errorBuilder.append(" got exception ").append(e.getMessage());
log.log(LogLevel.DEBUG, e, () -> "Got exception while sending request to " + uri.getHost());
@@ -166,7 +167,20 @@ public class ConfigServerRestExecutorImpl implements ConfigServerRestExecutor {
}
}
- private HttpRequestBase createHttpBaseRequest(String method, String uri, InputStream data) throws ProxyException {
+ private static String getContent(CloseableHttpResponse response) {
+ return Optional.ofNullable(response.getEntity())
+ .map(entity ->
+ {
+ try {
+ return EntityUtils.toString(entity);
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+ ).orElse("");
+ }
+
+ private static HttpRequestBase createHttpBaseRequest(String method, String uri, InputStream data) throws ProxyException {
Method enumMethod = Method.valueOf(method);
switch (enumMethod) {
case GET: