This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new c973c7daada [fix][broker] Fix httpProxyTimeout config (#25223)
c973c7daada is described below
commit c973c7daadae5ba98872b334f7dbb53173575e91
Author: Zixuan Liu <[email protected]>
AuthorDate: Fri Feb 6 20:28:25 2026 +0800
[fix][broker] Fix httpProxyTimeout config (#25223)
Co-authored-by: Copilot <[email protected]>
(cherry picked from commit 2d6ef6f288b7a105c59c176f59d5b3705d106e1b)
---
.../pulsar/proxy/server/AdminProxyHandler.java | 10 +++++++---
.../pulsar/proxy/server/AdminProxyHandlerTest.java | 22 +++++++++++++++++++---
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git
a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/AdminProxyHandler.java
b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/AdminProxyHandler.java
index 3a21da53d93..7f91141a93f 100644
---
a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/AdminProxyHandler.java
+++
b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/AdminProxyHandler.java
@@ -96,7 +96,6 @@ class AdminProxyHandler extends ProxyServlet {
this.functionWorkerWebServiceUrl = config.isTlsEnabledWithBroker() ?
config.getFunctionWorkerWebServiceURLTLS()
: config.getFunctionWorkerWebServiceURL();
- super.setTimeout(config.getHttpProxyTimeout());
}
@Override
@@ -106,10 +105,15 @@ class AdminProxyHandler extends ProxyServlet {
return httpClient;
}
- private void customizeHttpClient(HttpClient httpClient) {
+ protected void customizeHttpClient(HttpClient httpClient) {
httpClient.setFollowRedirects(true);
+
ProtocolHandlers protocolHandlers = httpClient.getProtocolHandlers();
- protocolHandlers.put(new RedirectProtocolHandler(httpClient));
+ if (protocolHandlers != null) {
+ protocolHandlers.put(new RedirectProtocolHandler(httpClient));
+ }
+
+ setTimeout(config.getHttpProxyTimeout());
}
// This class allows the request body to be replayed, the default
implementation
diff --git
a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AdminProxyHandlerTest.java
b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AdminProxyHandlerTest.java
index 4f925618e8a..ffcca697c25 100644
---
a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AdminProxyHandlerTest.java
+++
b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/AdminProxyHandlerTest.java
@@ -20,7 +20,9 @@ package org.apache.pulsar.proxy.server;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
@@ -59,6 +61,20 @@ public class AdminProxyHandlerTest {
adminProxyHandler.init(servletConfig);
}
+ @Test
+ public void testRequestTimeout() {
+ ProxyConfiguration proxyConfiguration = spy(new ProxyConfiguration());
+ proxyConfiguration.setHttpProxyTimeout(120 * 1000);
+
+ adminProxyHandler = new AdminProxyHandler(proxyConfiguration,
+ mock(BrokerDiscoveryProvider.class),
mock(Authentication.class));
+
+ HttpClient httpClient = mock(HttpClient.class);
+ adminProxyHandler.customizeHttpClient(httpClient);
+
+ assertEquals(adminProxyHandler.getTimeout(), 120 * 1000);
+ }
+
@Test
public void replayableProxyContentProviderTest() throws Exception {
HttpServletRequest request = mock(HttpServletRequest.class);
@@ -102,10 +118,10 @@ public class AdminProxyHandlerTest {
}
// then
- Assert.assertEquals(consumedBytes, requestBodySize);
+ assertEquals(consumedBytes, requestBodySize);
Field field =
replayableProxyContentProvider.getClass().getDeclaredField("bodyBufferMaxSizeReached");
field.setAccessible(true);
- Assert.assertEquals(((boolean)
field.get(replayableProxyContentProvider)), true);
+ assertEquals(((boolean) field.get(replayableProxyContentProvider)),
true);
}
@Test
@@ -138,7 +154,7 @@ public class AdminProxyHandlerTest {
byte[] consumedBytes = new byte[consumeBuffer.limit()];
consumeBuffer.get(consumedBytes);
// then
- Assert.assertEquals(consumedBytes, inputBuffer);
+ assertEquals(consumedBytes, inputBuffer, "i=" + i);
}
}
}