You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by yo...@apache.org on 2021/03/01 12:23:17 UTC
[pulsar] branch branch-2.7 updated: Don't add broker-address header
if response has already been committed (#9744)
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 <lh...@users.noreply.github.com>
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 {