This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new d15b67b  Allow configuring max request header size (#7249)
d15b67b is described below

commit d15b67bd97cfe8386df0c61198d9f1ca2060089b
Author: Sergi Castro <[email protected]>
AuthorDate: Tue Jul 6 09:10:15 2021 +0200

    Allow configuring max request header size (#7249)
    
    * Allow configuring max request header size
    
    This allows configuring the HTTP max request header size from the jetty
    server.
    By default it uses 8192, the same jetty default.
---
 CHANGES.md                                                         | 1 +
 docs/en/setup/backend/configuration-vocabulary.md                  | 2 ++
 oap-server/server-bootstrap/src/main/resources/application.yml     | 2 ++
 .../org/apache/skywalking/oap/server/core/CoreModuleConfig.java    | 6 ++++++
 .../org/apache/skywalking/oap/server/core/CoreModuleProvider.java  | 2 ++
 .../skywalking/oap/server/library/server/jetty/JettyServer.java    | 7 ++++++-
 .../oap/server/library/server/jetty/JettyServerConfig.java         | 2 ++
 .../oap/server/receiver/sharing/server/SharingServerConfig.java    | 6 ++++++
 .../receiver/sharing/server/SharingServerModuleProvider.java       | 3 ++-
 9 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index b9b6abc..f8d8c70 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -73,6 +73,7 @@ Release Notes.
 * Fix InfluxDB storage-plugin Metrics#multiGet issue.
 * Replace zuul proxy with spring cloud gateway 2.x. in webapp module.
 * Upgrade etcd cluster coordinator and dynamic configuration to v3.x.
+* Configuration: Allow to configure server maximum request header size.
 
 #### UI
 
diff --git a/docs/en/setup/backend/configuration-vocabulary.md 
b/docs/en/setup/backend/configuration-vocabulary.md
index 843f95e..cf8e0c4 100644
--- a/docs/en/setup/backend/configuration-vocabulary.md
+++ b/docs/en/setup/backend/configuration-vocabulary.md
@@ -12,6 +12,7 @@ core|default|role|Option values, `Mixed/Receiver/Aggregator`. 
**Receiver** mode
 | - | - | restIdleTimeOut| Connector idle timeout in milliseconds of restful 
service| SW_CORE_REST_JETTY_IDLE_TIMEOUT|30000|
 | - | - | restAcceptorPriorityDelta| Thread priority delta to give to acceptor 
threads of restful service| SW_CORE_REST_JETTY_DELTA|0|
 | - | - | restAcceptQueueSize| ServerSocketChannel backlog  of restful 
service| SW_CORE_REST_JETTY_QUEUE_SIZE|0|
+| - | - | httpMaxRequestHeaderSize| Maximum request header size accepted| 
SW_CORE_HTTP_MAX_REQUEST_HEADER_SIZE|8192|
 | - | - | gRPCHost|Binding IP of gRPC service. Services include gRPC data 
report and internal communication among OAP nodes|SW_CORE_GRPC_HOST|0.0.0.0|
 | - | - | gRPCPort| Binding port of gRPC service | SW_CORE_GRPC_PORT|11800|
 | - | - | gRPCSslEnabled| Activate SSL for gRPC service | 
SW_CORE_GRPC_SSL_ENABLED|false|
@@ -175,6 +176,7 @@ core|default|role|Option values, 
`Mixed/Receiver/Aggregator`. **Receiver** mode
 | - | - | restIdleTimeOut| Connector idle timeout in milliseconds of restful 
service| SW_RECEIVER_SHARING_JETTY_IDLE_TIMEOUT|30000|
 | - | - | restAcceptorPriorityDelta| Thread priority delta to give to acceptor 
threads of restful service| SW_RECEIVER_SHARING_JETTY_DELTA|0|
 | - | - | restAcceptQueueSize| ServerSocketChannel backlog  of restful 
service| SW_RECEIVER_SHARING_JETTY_QUEUE_SIZE|0|
+| - | - | httpMaxRequestHeaderSize| Maximum request header size accepted| 
SW_RECEIVER_SHARING_HTTP_MAX_REQUEST_HEADER_SIZE|8192|
 | - | - | gRPCHost|Binding IP of gRPC service. Services include gRPC data 
report and internal communication among OAP nodes| SW_RECEIVER_GRPC_HOST | 
0.0.0.0. Not Activated |
 | - | - | gRPCPort| Binding port of gRPC service | SW_RECEIVER_GRPC_PORT | Not 
Activated |
 | - | - | gRPCThreadPoolSize|Pool size of gRPC server| 
SW_RECEIVER_GRPC_THREAD_POOL_SIZE | CPU core * 4|
diff --git a/oap-server/server-bootstrap/src/main/resources/application.yml 
b/oap-server/server-bootstrap/src/main/resources/application.yml
index 7866d4c..bf5f33f 100755
--- a/oap-server/server-bootstrap/src/main/resources/application.yml
+++ b/oap-server/server-bootstrap/src/main/resources/application.yml
@@ -71,6 +71,7 @@ core:
     restIdleTimeOut: ${SW_CORE_REST_JETTY_IDLE_TIMEOUT:30000}
     restAcceptorPriorityDelta: ${SW_CORE_REST_JETTY_DELTA:0}
     restAcceptQueueSize: ${SW_CORE_REST_JETTY_QUEUE_SIZE:0}
+    httpMaxRequestHeaderSize: ${SW_CORE_HTTP_MAX_REQUEST_HEADER_SIZE:8192}
     gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
     gRPCPort: ${SW_CORE_GRPC_PORT:11800}
     maxConcurrentCallsPerConnection: ${SW_CORE_GRPC_MAX_CONCURRENT_CALL:0}
@@ -296,6 +297,7 @@ receiver-sharing-server:
     restIdleTimeOut: ${SW_RECEIVER_SHARING_JETTY_IDLE_TIMEOUT:30000}
     restAcceptorPriorityDelta: ${SW_RECEIVER_SHARING_JETTY_DELTA:0}
     restAcceptQueueSize: ${SW_RECEIVER_SHARING_JETTY_QUEUE_SIZE:0}
+    httpMaxRequestHeaderSize: 
${SW_RECEIVER_SHARING_HTTP_MAX_REQUEST_HEADER_SIZE:8192}
     # For gRPC server
     gRPCHost: ${SW_RECEIVER_GRPC_HOST:0.0.0.0}
     gRPCPort: ${SW_RECEIVER_GRPC_PORT:0}
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
index 5d3a022..6fe780b 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
@@ -182,6 +182,12 @@ public class CoreModuleConfig extends ModuleConfig {
     @Setter
     private boolean enableEndpointNameGroupingByOpenapi = true;
 
+    /**
+     * The maximum size in bytes allowed for request headers.
+     * Use -1 to disable it.
+     */
+    private int httpMaxRequestHeaderSize = 8192;
+
     public CoreModuleConfig() {
         this.downsampling = new ArrayList<>();
     }
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
index af6c2ec..31f5112 100755
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
@@ -221,6 +221,8 @@ public class CoreModuleProvider extends ModuleProvider {
                                                                
.jettyMaxThreads(moduleConfig.getRestMaxThreads())
                                                                
.jettyAcceptQueueSize(
                                                                    
moduleConfig.getRestAcceptQueueSize())
+                                                               
.jettyHttpMaxRequestHeaderSize(
+                                                                   
moduleConfig.getHttpMaxRequestHeaderSize())
                                                                .build();
         jettyServer = new JettyServer(jettyServerConfig);
         jettyServer.initialize();
diff --git 
a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java
 
b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java
index 388fbc2..fb8c95f 100644
--- 
a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java
+++ 
b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java
@@ -23,6 +23,8 @@ import org.apache.skywalking.oap.server.library.server.Server;
 import org.apache.skywalking.oap.server.library.server.ServerException;
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.servlet.ServletMapping;
@@ -60,7 +62,10 @@ public class JettyServer implements Server {
 
         server = new org.eclipse.jetty.server.Server(threadPool);
 
-        ServerConnector connector = new ServerConnector(server);
+        HttpConfiguration httpConfiguration = new HttpConfiguration();
+        
httpConfiguration.setRequestHeaderSize(jettyServerConfig.getJettyHttpMaxRequestHeaderSize());
+
+        ServerConnector connector = new ServerConnector(server, new 
HttpConnectionFactory(httpConfiguration));
         connector.setHost(jettyServerConfig.getHost());
         connector.setPort(jettyServerConfig.getPort());
         connector.setIdleTimeout(jettyServerConfig.getJettyIdleTimeOut());
diff --git 
a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java
 
b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java
index c6ca056..64fb5fc 100644
--- 
a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java
+++ 
b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServerConfig.java
@@ -41,4 +41,6 @@ public class JettyServerConfig {
     private int jettyAcceptorPriorityDelta = 0;
     @Builder.Default
     private int jettyAcceptQueueSize = 0;
+    @Builder.Default
+    private int jettyHttpMaxRequestHeaderSize = 8192;
 }
diff --git 
a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java
 
b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java
index c3866df..afea38d 100644
--- 
a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java
+++ 
b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java
@@ -50,4 +50,10 @@ public class SharingServerConfig extends ModuleConfig {
     private boolean gRPCSslEnabled = false;
     private String gRPCSslKeyPath;
     private String gRPCSslCertChainPath;
+
+    /**
+     * The maximum size in bytes allowed for request headers.
+     * Use -1 to disable it.
+     */
+    private int httpMaxRequestHeaderSize = 8192;
 }
diff --git 
a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java
 
b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java
index 9984d42..53613ab 100644
--- 
a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java
+++ 
b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java
@@ -78,7 +78,8 @@ public class SharingServerModuleProvider extends 
ModuleProvider {
                                  
.jettyAcceptQueueSize(config.getRestAcceptQueueSize())
                                  .jettyAcceptorPriorityDelta(
                                      config.getRestAcceptorPriorityDelta())
-                                 
.jettyIdleTimeOut(config.getRestIdleTimeOut()).build();
+                                 .jettyIdleTimeOut(config.getRestIdleTimeOut())
+                                 
.jettyHttpMaxRequestHeaderSize(config.getHttpMaxRequestHeaderSize()).build();
             jettyServerConfig.setHost(Strings.isBlank(config.getRestHost()) ? 
"0.0.0.0" : config.getRestHost());
             jettyServerConfig.setPort(config.getRestPort());
             jettyServerConfig.setContextPath(config.getRestContextPath());

Reply via email to