This is an automated email from the ASF dual-hosted git repository.

smolnar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new 249992265 [KNOX-3248] Knox Gateway + Livy HA mode gzip exception 
results in duplicated requests and unneeded failovers (#1143)
249992265 is described below

commit 2499922652646e5f4dcfac30de5121fe7619abf0
Author: nileshrathi345 <[email protected]>
AuthorDate: Mon Feb 9 13:57:17 2026 +0530

    [KNOX-3248] Knox Gateway + Livy HA mode gzip exception results in 
duplicated requests and unneeded failovers (#1143)
---
 .../filter/rewrite/impl/UrlRewriteResponse.java    |  2 +-
 .../rewrite/impl/UrlRewriteResponseTest.java       | 39 ++++++++++++++++++++++
 2 files changed, 40 insertions(+), 1 deletion(-)

diff --git 
a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java
 
b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java
index 07b518a59..87663813b 100644
--- 
a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java
+++ 
b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponse.java
@@ -187,7 +187,7 @@ public class UrlRewriteResponse extends 
GatewayResponseWrapper implements Params
       inBuffer.reset();
 
       final InputStream unFilteredStream;
-      if(isGzip || "gzip".equalsIgnoreCase(contentEncoding)) {
+      if(isGzip) {
         unFilteredStream = new GzipCompressorInputStream(inBuffer, true);
         outStream = new GZIPOutputStream(output, STREAM_BUFFER_SIZE);
       } else if ("deflate".equalsIgnoreCase(contentEncoding)) {
diff --git 
a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java
 
b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java
index 2c53928ce..ad665bdee 100644
--- 
a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java
+++ 
b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteResponseTest.java
@@ -165,6 +165,45 @@ public class UrlRewriteResponseTest {
     testStreamResponse(content, rewriteResponse, "deflate");
   }
 
+  @Test
+  public void testStreamEmptyGzipResponse() throws IOException {
+    UrlRewriteProcessor rewriter = 
EasyMock.createNiceMock(UrlRewriteProcessor.class);
+    EasyMock.expect(rewriter.getConfig()).andReturn(null).anyTimes();
+
+    ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+    EasyMock.expect(context.getAttribute(
+                    UrlRewriteServletContextListener.PROCESSOR_ATTRIBUTE_NAME))
+            .andReturn(rewriter).anyTimes();
+
+    FilterConfig config = EasyMock.createNiceMock(FilterConfig.class);
+    EasyMock.expect(config.getInitParameter(
+                    UrlRewriteServletFilter.RESPONSE_BODY_FILTER_PARAM))
+            .andReturn("test-filter").anyTimes();
+    EasyMock.expect(config.getServletContext()).andReturn(context).anyTimes();
+
+    HttpServletRequest request = 
EasyMock.createNiceMock(HttpServletRequest.class);
+    
EasyMock.expect(request.getContentType()).andReturn("application/json").anyTimes();
+
+    HttpServletResponse response = 
EasyMock.createNiceMock(HttpServletResponse.class);
+    
EasyMock.expect(response.getContentType()).andReturn("application/json").anyTimes();
+
+    EasyMock.replay(rewriter, context, config, request, response);
+
+    UrlRewriteResponse rewriteResponse =
+            new UrlRewriteResponse(config, request, response);
+
+    rewriteResponse.setHeader("Content-Encoding", "gzip");
+
+    Path emptyInput = Files.createTempFile("empty", "input");
+    Path output = Files.createTempFile("output", "test");
+
+    try (InputStream in = Files.newInputStream(emptyInput);
+         OutputStream out = Files.newOutputStream(output)) {
+
+      rewriteResponse.streamResponse(in, out);
+    }
+  }
+
   private void testStreamResponse(String content, UrlRewriteResponse 
rewriteResponse, String contentType) throws IOException {
     Path inputFile = Files.createTempFile("input", "test");
     Path outputFile = Files.createTempFile("output", "test");

Reply via email to