You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2026/04/15 04:18:41 UTC
(doris) branch branch-4.0 updated: branch-4.0: [fix](http) Fix jetty_server_max_http_header_size not applied in Jetty 12 (#61197) (#61903)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new df937b27d55 branch-4.0: [fix](http) Fix jetty_server_max_http_header_size not applied in Jetty 12 (#61197) (#61903)
df937b27d55 is described below
commit df937b27d554799247f32504d801de293fffef36
Author: Xin Liao <li...@selectdb.com>
AuthorDate: Wed Apr 15 12:18:33 2026 +0800
branch-4.0: [fix](http) Fix jetty_server_max_http_header_size not applied in Jetty 12 (#61197) (#61903)
Pick apache/doris#61197
---
.../config/WebServerFactoryCustomizerConfig.java | 15 ++++++++
.../suites/http_p0/test_large_http_header.groovy | 44 ++++++++++++++++++++++
2 files changed, 59 insertions(+)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/httpv2/config/WebServerFactoryCustomizerConfig.java b/fe/fe-core/src/main/java/org/apache/doris/httpv2/config/WebServerFactoryCustomizerConfig.java
index a467a230844..c73c3b28749 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/httpv2/config/WebServerFactoryCustomizerConfig.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/httpv2/config/WebServerFactoryCustomizerConfig.java
@@ -33,6 +33,21 @@ import java.util.Collections;
public class WebServerFactoryCustomizerConfig implements WebServerFactoryCustomizer<ConfigurableJettyWebServerFactory> {
@Override
public void customize(ConfigurableJettyWebServerFactory factory) {
+
+ // Set HTTP header size for all connectors
+ factory.addServerCustomizers(server -> {
+ for (org.eclipse.jetty.server.Connector connector : server.getConnectors()) {
+ if (connector instanceof ServerConnector) {
+ ServerConnector serverConnector = (ServerConnector) connector;
+ HttpConnectionFactory httpFactory =
+ serverConnector.getConnectionFactory(HttpConnectionFactory.class);
+ if (httpFactory != null) {
+ HttpConfiguration httpConfig = httpFactory.getHttpConfiguration();
+ httpConfig.setRequestHeaderSize(Config.jetty_server_max_http_header_size);
+ }
+ }
+ }
+ });
if (Config.enable_https) {
((JettyServletWebServerFactory) factory).setConfigurations(
Collections.singletonList(new HttpToHttpsJettyConfig())
diff --git a/regression-test/suites/http_p0/test_large_http_header.groovy b/regression-test/suites/http_p0/test_large_http_header.groovy
new file mode 100644
index 00000000000..89cf1af4b72
--- /dev/null
+++ b/regression-test/suites/http_p0/test_large_http_header.groovy
@@ -0,0 +1,44 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_large_http_header", "p0") {
+ def feHost = context.config.feHttpAddress
+ def (host, port) = feHost.split(":")
+
+ // Test with large HTTP header (100KB)
+ def largeHeaderValue = "x" * (100 * 1024)
+
+ def url = "http://${host}:${port}/api/health"
+
+ try {
+ def connection = new URL(url).openConnection()
+ connection.setRequestMethod("GET")
+ connection.setRequestProperty("X-Large-Header", largeHeaderValue)
+ connection.setConnectTimeout(5000)
+ connection.setReadTimeout(5000)
+
+ def responseCode = connection.getResponseCode()
+
+ // Should not return 431 (Request Header Fields Too Large)
+ assertTrue(responseCode != 431, "Should not return 431 error with large header")
+
+ logger.info("Response code: ${responseCode}")
+ } catch (Exception e) {
+ logger.error("Test failed with exception: ${e.message}")
+ throw e
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org