MINIFI-450 Handling closing of HTTP response in PullHttpChangeIngestor.
This closes #129
Signed-off-by: Jeremy Dyer <jeremydyer@apache.org>
diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java
index f7add36..f363dcd 100644
--- a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java
+++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/configuration/ingestors/PullHttpChangeIngestor.java
@@ -17,7 +17,6 @@
package org.apache.nifi.minifi.bootstrap.configuration.ingestors;
-import okhttp3.Call;
import okhttp3.Credentials;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
@@ -44,7 +43,6 @@
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -148,7 +146,7 @@
queryReference.set(query);
final String useEtagString = (String) properties.getOrDefault(USE_ETAG_KEY, "false");
- if ("true".equalsIgnoreCase(useEtagString) || "false".equalsIgnoreCase(useEtagString)){
+ if ("true".equalsIgnoreCase(useEtagString) || "false".equalsIgnoreCase(useEtagString)) {
useEtag = Boolean.parseBoolean(useEtagString);
} else {
throw new IllegalArgumentException("Property, " + USE_ETAG_KEY + ", to specify whether to use the ETag header, must either be a value boolean value (\"true\" or \"false\") or left to " +
@@ -156,7 +154,7 @@
}
final String overrideSecurityProperties = (String) properties.getOrDefault(OVERRIDE_SECURITY, "false");
- if ("true".equalsIgnoreCase(overrideSecurityProperties) || "false".equalsIgnoreCase(overrideSecurityProperties)){
+ if ("true".equalsIgnoreCase(overrideSecurityProperties) || "false".equalsIgnoreCase(overrideSecurityProperties)) {
overrideSecurity = Boolean.parseBoolean(overrideSecurityProperties);
} else {
throw new IllegalArgumentException("Property, " + OVERRIDE_SECURITY + ", to specify whether to override security properties must either be a value boolean value (\"true\" or \"false\")" +
@@ -222,36 +220,31 @@
@Override
public void run() {
- try {
- logger.debug("Attempting to pull new config");
- HttpUrl.Builder builder = new HttpUrl.Builder()
- .host(hostReference.get())
- .port(portReference.get())
- .encodedPath(pathReference.get());
- String query = queryReference.get();
- if (!StringUtil.isNullOrEmpty(query)) {
- builder = builder.encodedQuery(query);
- }
- final HttpUrl url = builder
- .scheme(connectionScheme)
- .build();
+ logger.debug("Attempting to pull new config");
+ HttpUrl.Builder builder = new HttpUrl.Builder()
+ .host(hostReference.get())
+ .port(portReference.get())
+ .encodedPath(pathReference.get());
+ final String query = queryReference.get();
+ if (!StringUtil.isNullOrEmpty(query)) {
+ builder = builder.encodedQuery(query);
+ }
+ final HttpUrl url = builder
+ .scheme(connectionScheme)
+ .build();
+ final Request.Builder requestBuilder = new Request.Builder()
+ .get()
+ .url(url);
- final Request.Builder requestBuilder = new Request.Builder()
- .get()
- .url(url);
+ if (useEtag) {
+ requestBuilder.addHeader("If-None-Match", lastEtag);
+ }
- if (useEtag) {
- requestBuilder.addHeader("If-None-Match", lastEtag);
- }
+ final Request request = requestBuilder.build();
- final Request request = requestBuilder.build();
-
- final OkHttpClient httpClient = httpClientReference.get();
-
- final Call call = httpClient.newCall(request);
- final Response response = call.execute();
-
+ ResponseBody body = null;
+ try (Response response = httpClientReference.get().newCall(request).execute()) {
logger.debug("Response received: {}", response.toString());
int code = response.code();
@@ -264,17 +257,18 @@
throw new IOException("Got response code " + code + " while trying to pull configuration: " + response.body().string());
}
- ResponseBody body = response.body();
+ body = response.body();
+
if (body == null) {
logger.warn("No body returned when pulling a new configuration");
return;
}
- ByteBuffer bodyByteBuffer = ByteBuffer.wrap(body.bytes());
+ final ByteBuffer bodyByteBuffer = ByteBuffer.wrap(body.bytes());
ByteBuffer readOnlyNewConfig = null;
// checking if some parts of the configuration must be preserved
- if(overrideSecurity) {
+ if (overrideSecurity) {
readOnlyNewConfig = bodyByteBuffer.asReadOnlyBuffer();
} else {
logger.debug("Preserving previous security properties...");