This is an automated email from the ASF dual-hosted git repository.
lhotari 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 2d6ef6f288b [fix][broker] Fix httpProxyTimeout config (#25223)
2d6ef6f288b is described below
commit 2d6ef6f288b7a105c59c176f59d5b3705d106e1b
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]>
---
.../pulsar/proxy/server/AdminProxyHandler.java | 10 ++++++---
.../pulsar/proxy/server/AdminProxyHandlerTest.java | 24 ++++++++++++++++++----
2 files changed, 27 insertions(+), 7 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 528fbcd47b9..622b1b034aa 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
@@ -107,7 +107,6 @@ class AdminProxyHandler extends ProxyServlet {
TimeUnit.SECONDS);
}
}
- super.setTimeout(config.getHttpProxyTimeout());
}
@Override
@@ -117,10 +116,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 cb3536968a9..c1eaeb1b171 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.InputStream;
import java.lang.reflect.Field;
@@ -58,6 +60,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);
@@ -70,7 +86,7 @@ public class AdminProxyHandlerTest {
1024);
Field field =
replayableProxyContentProvider.getClass().getDeclaredField("bodyBuffer");
field.setAccessible(true);
- Assert.assertEquals(((ByteBuffer)
field.get(replayableProxyContentProvider)).position(), 0);
+ assertEquals(((ByteBuffer)
field.get(replayableProxyContentProvider)).position(), 0);
} catch (IllegalArgumentException e) {
Assert.fail("IllegalArgumentException should not be thrown");
}
@@ -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
@@ -140,7 +156,7 @@ public class AdminProxyHandlerTest {
byte[] consumedBytes = new byte[consumeBuffer.remaining()];
consumeBuffer.get(consumedBytes);
// then
- Assert.assertEquals(consumedBytes, inputBuffer, "i=" + i);
+ assertEquals(consumedBytes, inputBuffer, "i=" + i);
}
}
}