This is an automated email from the ASF dual-hosted git repository.
yong pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.7 by this push:
new c7be703 Don't add broker-address header if response has already been
committed (#9744)
c7be703 is described below
commit c7be703121c485fb033dcc5778dab8c72529d24f
Author: Lari Hotari <[email protected]>
AuthorDate: Mon Mar 1 14:20:56 2021 +0200
Don't add broker-address header if response has already been committed
(#9744)
### Motivation
- adding headers will fail if the response has been committed
- this causes flakiness since the response won't be committed in many cases
when the response size is less than the response buffer size
### Modifications
- add the header before executing the filter chain
- check if the response has been committed before attempting to add the
header
(cherry picked from commit 2ee487bc43d9413d7cc27528adb9f0d5e31a320d)
---
.../java/org/apache/pulsar/broker/web/ResponseHandlerFilter.java | 8 +++++++-
1 file changed, 7 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 9091d05..329c140 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
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
*/
public class ResponseHandlerFilter implements Filter {
private static final Logger LOG =
LoggerFactory.getLogger(ResponseHandlerFilter.class);
+ private static final String BROKER_ADDRESS_HEADER_NAME = "broker-address";
private final String brokerAddress;
private final BrokerInterceptor interceptor;
@@ -56,8 +57,13 @@ public class ResponseHandlerFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
+ if (!response.isCommitted()) {
+ ((HttpServletResponse)
response).addHeader(BROKER_ADDRESS_HEADER_NAME, brokerAddress);
+ } else {
+ LOG.warn("Cannot add header {} to request {} since it's already
committed.", BROKER_ADDRESS_HEADER_NAME,
+ request);
+ }
chain.doFilter(request, response);
- ((HttpServletResponse) response).addHeader("broker-address",
brokerAddress);
if (((HttpServletResponse) response).getStatus() ==
Status.INTERNAL_SERVER_ERROR.getStatusCode()) {
// invalidate current session from servlet-container if it
received internal-server-error
try {