diff options
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java | 22 |
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: |