This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new de7b59d Fix interceptor disabled in ResponseHandlerFilter.java (#9252)
de7b59d is described below
commit de7b59d784f5e54b0031f524b08f2f03ca88e2ca
Author: lipenghui <[email protected]>
AuthorDate: Thu Jan 21 15:16:06 2021 +0800
Fix interceptor disabled in ResponseHandlerFilter.java (#9252)
### Motivation
Fix interceptor disabled in ResponseHandlerFilter.java
### Verifying this change
New unit test added.
---
.../pulsar/broker/web/ResponseHandlerFilter.java | 3 ++-
.../broker/intercept/InterceptFilterOutTest.java | 26 ++++++++++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java
index 964a4a2..2839c97 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java
@@ -65,7 +65,8 @@ public class ResponseHandlerFilter implements Filter {
/* connection is already invalidated */
}
}
- if (!StringUtils.containsIgnoreCase(request.getContentType(),
MediaType.MULTIPART_FORM_DATA)
+ if (interceptorEnabled
+ && !StringUtils.containsIgnoreCase(request.getContentType(),
MediaType.MULTIPART_FORM_DATA)
&& !StringUtils.containsIgnoreCase(request.getContentType(),
MediaType.APPLICATION_OCTET_STREAM)) {
interceptor.onWebserviceResponse(request, response);
}
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/intercept/InterceptFilterOutTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/intercept/InterceptFilterOutTest.java
index 53c5463..fd13409 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/intercept/InterceptFilterOutTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/intercept/InterceptFilterOutTest.java
@@ -110,6 +110,32 @@ public class InterceptFilterOutTest {
}
}
+ @Test
+ public void testShouldNotInterceptWhenInterceptorDisabled() throws
Exception {
+ CounterBrokerInterceptor interceptor = new CounterBrokerInterceptor();
+ PulsarService pulsarService = Mockito.mock(PulsarService.class);
+
Mockito.doReturn("pulsar://127.0.0.1:6650").when(pulsarService).getAdvertisedAddress();
+
Mockito.doReturn(interceptor).when(pulsarService).getBrokerInterceptor();
+ ServiceConfiguration conf = Mockito.mock(ServiceConfiguration.class);
+ // Disable the broker interceptor
+ Mockito.doReturn(Sets.newHashSet()).when(conf).getBrokerInterceptors();
+ Mockito.doReturn(conf).when(pulsarService).getConfig();
+ ResponseHandlerFilter filter = new
ResponseHandlerFilter(pulsarService);
+
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
+ FilterChain chain = Mockito.mock(FilterChain.class);
+ Mockito.doNothing().when(chain).doFilter(Mockito.any(), Mockito.any());
+ HttpServletRequestWrapper mockInputStream = new
MockRequestWrapper(request);
+
Mockito.doReturn(mockInputStream.getInputStream()).when(request).getInputStream();
+ Mockito.doReturn(new
StringBuffer("http://127.0.0.1:8080")).when(request).getRequestURL();
+
+ // Should not be intercepted since the broker interceptor disabled.
+ Mockito.doReturn("application/json").when(request).getContentType();
+ filter.doFilter(request, response, chain);
+ Assert.assertEquals(interceptor.getCount(), 0);
+ }
+
private static class MockRequestWrapper extends HttpServletRequestWrapper {
public MockRequestWrapper(HttpServletRequest request) {