This is an automated email from the ASF dual-hosted git repository.
pvillard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/master by this push:
new bad254e NIFI-4970 - EOF Exception in InvokeHttp when body's response
is empty with gzip
bad254e is described below
commit bad254ec5b3ea6ab70a9aed673158a21ec40c378
Author: Eduardo Fontes <[email protected]>
AuthorDate: Tue Mar 3 23:38:12 2020 -0300
NIFI-4970 - EOF Exception in InvokeHttp when body's response is empty with
gzip
Signed-off-by: Pierre Villard <[email protected]>
This closes #4109.
---
.../nifi/processors/standard/InvokeHTTP.java | 2 +-
.../nifi/processors/standard/TestInvokeHTTP.java | 38 ++++++++++++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
index 78cadab..b5c853c 100644
---
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
+++
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
@@ -842,7 +842,7 @@ public final class InvokeHTTP extends AbstractProcessor {
boolean outputBodyToRequestAttribute = (!isSuccess(statusCode)
|| putToAttribute) && requestFlowFile != null;
boolean outputBodyToResponseContent = (isSuccess(statusCode)
&& !putToAttribute) ||
context.getProperty(PROP_OUTPUT_RESPONSE_REGARDLESS).asBoolean();
ResponseBody responseBody = responseHttp.body();
- boolean bodyExists = responseBody != null;
+ boolean bodyExists = responseBody != null ?
responseBody.contentLength() > 0 : false;
InputStream responseBodyStream = null;
SoftLimitBoundedByteArrayOutputStream
outputStreamToRequestAttribute = null;
diff --git
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestInvokeHTTP.java
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestInvokeHTTP.java
index ca04802..1a9ee10 100644
---
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestInvokeHTTP.java
+++
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestInvokeHTTP.java
@@ -268,4 +268,42 @@ public class TestInvokeHTTP extends TestInvokeHttpCommon {
assertNull(regexAttributesToSendField.get(processor));
}
+ @Test
+ public void testEmptyGzipHttpReponse() throws Exception {
+ addHandler(new EmptyGzipResponseHandler());
+
+ runner.setProperty(InvokeHTTP.PROP_URL, url);
+
+ createFlowFiles(runner);
+
+ runner.run();
+
+ runner.assertTransferCount(InvokeHTTP.REL_SUCCESS_REQ, 1);
+ runner.assertTransferCount(InvokeHTTP.REL_RESPONSE, 1);
+ runner.assertTransferCount(InvokeHTTP.REL_RETRY, 0);
+ runner.assertTransferCount(InvokeHTTP.REL_NO_RETRY, 0);
+ runner.assertTransferCount(InvokeHTTP.REL_FAILURE, 0);
+ runner.assertPenalizeCount(0);
+
+ //expected empty content in response FlowFile
+ final MockFlowFile bundle =
runner.getFlowFilesForRelationship(InvokeHTTP.REL_RESPONSE).get(0);
+ bundle.assertContentEquals(new byte[0]);
+ bundle.assertAttributeEquals(InvokeHTTP.STATUS_CODE, "200");
+ bundle.assertAttributeEquals(InvokeHTTP.STATUS_MESSAGE, "OK");
+ bundle.assertAttributeEquals("Foo", "Bar");
+ bundle.assertAttributeEquals("Content-Type", "text/plain");
+ }
+
+ public static class EmptyGzipResponseHandler extends AbstractHandler {
+
+ @Override
+ public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
+ baseRequest.setHandled(true);
+ response.setStatus(200);
+ response.setContentLength(0);
+ response.setContentType("text/plain");
+ response.setHeader("Content-Encoding", "gzip");
+ }
+
+ }
}