From 3057fabf3bb98fc3154701c61c86fad170f52663 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Tue, 28 Aug 2018 09:26:16 +0200 Subject: Close response and client --- .../hosted/node/maintainer/CoredumpHandler.java | 23 +++++++++++----------- .../vespa/hosted/node/maintainer/Maintainer.java | 7 +++---- .../node/maintainer/CoredumpHandlerTest.java | 16 +++++++-------- 3 files changed, 22 insertions(+), 24 deletions(-) (limited to 'node-maintainer') diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandler.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandler.java index 63c74c17dd5..0c118e2dc6c 100644 --- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandler.java +++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandler.java @@ -3,10 +3,10 @@ package com.yahoo.vespa.hosted.node.maintainer; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.HttpHeaders; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.util.EntityUtils; import java.io.BufferedReader; @@ -37,7 +37,7 @@ class CoredumpHandler { private final Logger logger = Logger.getLogger(CoredumpHandler.class.getName()); private final ObjectMapper objectMapper = new ObjectMapper(); - private final HttpClient httpClient; + private final CloseableHttpClient httpClient; private final CoreCollector coreCollector; private final Path coredumpsPath; private final Path doneCoredumpsPath; @@ -45,7 +45,7 @@ class CoredumpHandler { private final Optional installStatePath; private final String feedEndpoint; - public CoredumpHandler(HttpClient httpClient, CoreCollector coreCollector, Path coredumpsPath, Path doneCoredumpsPath, + public CoredumpHandler(CloseableHttpClient httpClient, CoreCollector coreCollector, Path coredumpsPath, Path doneCoredumpsPath, Map nodeAttributes, Optional installStatePath, String feedEndpoint) { this.httpClient = httpClient; this.coreCollector = coreCollector; @@ -154,14 +154,15 @@ class CoredumpHandler { post.setHeader(HttpHeaders.CONTENT_TYPE, "application/json"); post.setEntity(new StringEntity(metadata)); - HttpResponse response = httpClient.execute(post); - if (response.getStatusLine().getStatusCode() / 100 != 2) { - String result = new BufferedReader(new InputStreamReader(response.getEntity().getContent())) - .lines().collect(Collectors.joining("\n")); - throw new RuntimeException("POST to " + post.getURI() + " failed with HTTP: " + - response.getStatusLine().getStatusCode() + " [" + result + "]"); + try (CloseableHttpResponse response = httpClient.execute(post)) { + if (response.getStatusLine().getStatusCode() / 100 != 2) { + String result = new BufferedReader(new InputStreamReader(response.getEntity().getContent())) + .lines().collect(Collectors.joining("\n")); + throw new RuntimeException("POST to " + post.getURI() + " failed with HTTP: " + + response.getStatusLine().getStatusCode() + " [" + result + "]"); + } + EntityUtils.consume(response.getEntity()); } - EntityUtils.consume(response.getEntity()); logger.info("Successfully reported coredump " + documentId); } diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/Maintainer.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/Maintainer.java index 6c8388c3f28..3bf62e60481 100644 --- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/Maintainer.java +++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/maintainer/Maintainer.java @@ -7,8 +7,8 @@ import com.yahoo.slime.Inspector; import com.yahoo.slime.Type; import com.yahoo.system.ProcessExecuter; import com.yahoo.vespa.config.SlimeUtils; -import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; +import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import java.io.IOException; @@ -26,7 +26,6 @@ import java.util.concurrent.atomic.AtomicInteger; public class Maintainer { private static final CoreCollector coreCollector = new CoreCollector(new ProcessExecuter()); - private static final HttpClient httpClient = createHttpClient(Duration.ofSeconds(5)); public static void main(String[] args) { LogSetup.initVespaLogging("node-maintainer"); @@ -145,7 +144,7 @@ public class Maintainer { Optional installStatePath = SlimeUtils.optionalString(arguments.field("installStatePath")).map(Paths::get); String feedEndpoint = getFieldOrFail(arguments, "feedEndpoint").asString(); - try { + try (CloseableHttpClient httpClient = createHttpClient(Duration.ofSeconds(5))) { CoredumpHandler coredumpHandler = new CoredumpHandler(httpClient, coreCollector, coredumpsPath, doneCoredumpsPath, attributesMap, installStatePath, feedEndpoint); @@ -187,7 +186,7 @@ public class Maintainer { return out; } - private static HttpClient createHttpClient(Duration timeout) { + private static CloseableHttpClient createHttpClient(Duration timeout) { int timeoutInMillis = (int) timeout.toMillis(); return HttpClientBuilder.create() .setUserAgent("node-maintainer") diff --git a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandlerTest.java b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandlerTest.java index 4a5fddf984e..a0125e78ca2 100644 --- a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandlerTest.java +++ b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/maintainer/CoredumpHandlerTest.java @@ -2,12 +2,11 @@ package com.yahoo.vespa.hosted.node.maintainer; import org.apache.http.HttpHeaders; -import org.apache.http.HttpResponse; import org.apache.http.HttpVersion; -import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; -import org.apache.http.impl.DefaultHttpResponseFactory; +import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.message.BasicStatusLine; import org.junit.Before; import org.junit.Rule; @@ -45,7 +44,7 @@ import static org.mockito.Mockito.when; */ public class CoredumpHandlerTest { - private final HttpClient httpClient = mock(HttpClient.class); + private final CloseableHttpClient httpClient = mock(CloseableHttpClient.class); private final CoreCollector coreCollector = mock(CoreCollector.class); private static final Map attributes = new LinkedHashMap<>(); private static final Map metadata = new LinkedHashMap<>(); @@ -228,12 +227,11 @@ public class CoredumpHandlerTest { } private void setNextHttpResponse(int code, Optional message) throws IOException { - DefaultHttpResponseFactory responseFactory = new DefaultHttpResponseFactory(); - HttpResponse httpResponse = responseFactory.newHttpResponse( - new BasicStatusLine(HttpVersion.HTTP_1_1, code, null), null); - if (message.isPresent()) httpResponse.setEntity(new StringEntity(message.get())); + CloseableHttpResponse response = mock(CloseableHttpResponse.class); + when(response.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, code, null)); + if (message.isPresent()) when(response.getEntity()).thenReturn(new StringEntity(message.get())); - when(httpClient.execute(any())).thenReturn(httpResponse); + when(httpClient.execute(any())).thenReturn(response); } private void validateNextHttpPost(String documentId, String expectedBody) throws IOException, URISyntaxException { -- cgit v1.2.3