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

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


The following commit(s) were added to refs/heads/master by this push:
     new a5327e7039 Add Support for Disabling Default User Agent for Http 
Client (#10895)
a5327e7039 is described below

commit a5327e70392aad1d83d339e03d52fd9323703483
Author: Ankit Sultana <ankitsult...@uber.com>
AuthorDate: Thu Jun 15 02:11:53 2023 +0530

    Add Support for Disabling Default User Agent for Http Client (#10895)
    
    * Add Support for Disabling Default User Agent for Http Client
    
    * set default non-null value of httpclientconfig
    
    * Update 
pinot-common/src/main/java/org/apache/pinot/common/utils/http/HttpClientConfig.java
    
    Co-authored-by: Xiaotian (Jackie) Jiang 
<17555551+jackie-ji...@users.noreply.github.com>
    
    * Update UT to ensure config is indeed picked up
    
    ---------
    
    Co-authored-by: Xiaotian (Jackie) Jiang 
<17555551+jackie-ji...@users.noreply.github.com>
---
 .../pinot/common/utils/http/HttpClientConfig.java     | 19 +++++++++++++++++--
 .../pinot/common/utils/http/HttpClientConfigTest.java |  3 +++
 .../ServerSegmentCompletionProtocolHandler.java       |  6 +++++-
 3 files changed, 25 insertions(+), 3 deletions(-)

diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/http/HttpClientConfig.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/http/HttpClientConfig.java
index d7eedf5380..d424efbfaa 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/http/HttpClientConfig.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/http/HttpClientConfig.java
@@ -28,13 +28,16 @@ public class HttpClientConfig {
 
   protected static final String MAX_CONNS_CONFIG_NAME = 
"http.client.maxConnTotal";
   protected static final String MAX_CONNS_PER_ROUTE_CONFIG_NAME = 
"http.client.maxConnPerRoute";
+  protected static final String DISABLE_DEFAULT_USER_AGENT_CONFIG_NAME = 
"http.client.disableDefaultUserAgent";
 
   private final int _maxConnTotal;
   private final int _maxConnPerRoute;
+  private final boolean _disableDefaultUserAgent;
 
-  private HttpClientConfig(int maxConnTotal, int maxConnPerRoute) {
+  private HttpClientConfig(int maxConnTotal, int maxConnPerRoute, boolean 
disableDefaultUserAgent) {
     _maxConnTotal = maxConnTotal;
     _maxConnPerRoute = maxConnPerRoute;
+    _disableDefaultUserAgent = disableDefaultUserAgent;
   }
 
   public int getMaxConnTotal() {
@@ -45,6 +48,10 @@ public class HttpClientConfig {
     return _maxConnPerRoute;
   }
 
+  public boolean isDisableDefaultUserAgent() {
+    return _disableDefaultUserAgent;
+  }
+
   /**
    * Creates a {@link HttpClientConfig.Builder} and initializes it with 
relevant configs from the provided
    * configuration. Since http-clients are used in a bunch of places in the 
code, each use-case can have their own
@@ -61,6 +68,8 @@ public class HttpClientConfig {
     if (StringUtils.isNotEmpty(maxConnsPerRoute)) {
       builder.withMaxConnsPerRoute(Integer.parseInt(maxConnsPerRoute));
     }
+    boolean disableDefaultUserAgent = 
pinotConfiguration.getProperty(DISABLE_DEFAULT_USER_AGENT_CONFIG_NAME, false);
+    builder.withDisableDefaultUserAgent(disableDefaultUserAgent);
     return builder;
   }
 
@@ -71,6 +80,7 @@ public class HttpClientConfig {
   public static class Builder {
     private int _maxConns = -1;
     private int _maxConnsPerRoute = -1;
+    private boolean _disableDefaultUserAgent = false;
 
     private Builder() {
     }
@@ -85,8 +95,13 @@ public class HttpClientConfig {
       return this;
     }
 
+    public Builder withDisableDefaultUserAgent(boolean 
disableDefaultUserAgent) {
+      _disableDefaultUserAgent = disableDefaultUserAgent;
+      return this;
+    }
+
     public HttpClientConfig build() {
-      return new HttpClientConfig(_maxConns, _maxConnsPerRoute);
+      return new HttpClientConfig(_maxConns, _maxConnsPerRoute, 
_disableDefaultUserAgent);
     }
   }
 }
diff --git 
a/pinot-common/src/test/java/org/apache/pinot/common/utils/http/HttpClientConfigTest.java
 
b/pinot-common/src/test/java/org/apache/pinot/common/utils/http/HttpClientConfigTest.java
index 3cccac0f0e..f01340e031 100644
--- 
a/pinot-common/src/test/java/org/apache/pinot/common/utils/http/HttpClientConfigTest.java
+++ 
b/pinot-common/src/test/java/org/apache/pinot/common/utils/http/HttpClientConfigTest.java
@@ -31,13 +31,16 @@ public class HttpClientConfigTest {
     PinotConfiguration pinotConfiguration = new PinotConfiguration();
     pinotConfiguration.setProperty(HttpClientConfig.MAX_CONNS_CONFIG_NAME, 
"123");
     
pinotConfiguration.setProperty(HttpClientConfig.MAX_CONNS_PER_ROUTE_CONFIG_NAME,
 "11");
+    
pinotConfiguration.setProperty(HttpClientConfig.DISABLE_DEFAULT_USER_AGENT_CONFIG_NAME,
 "true");
     HttpClientConfig httpClientConfig = 
HttpClientConfig.newBuilder(pinotConfiguration).build();
     Assert.assertEquals(123, httpClientConfig.getMaxConnTotal());
     Assert.assertEquals(11, httpClientConfig.getMaxConnPerRoute());
+    Assert.assertTrue(httpClientConfig.isDisableDefaultUserAgent());
 
     // Ensure default builder uses negative values
     HttpClientConfig defaultConfig = HttpClientConfig.newBuilder(new 
PinotConfiguration()).build();
     Assert.assertTrue(defaultConfig.getMaxConnTotal() < 0, "default value 
should be < 0");
     Assert.assertTrue(defaultConfig.getMaxConnPerRoute() < 0, "default value 
should be < 0");
+    Assert.assertFalse(defaultConfig.isDisableDefaultUserAgent(), "Default 
user agent should be enabled by default");
   }
 }
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/server/realtime/ServerSegmentCompletionProtocolHandler.java
 
b/pinot-core/src/main/java/org/apache/pinot/server/realtime/ServerSegmentCompletionProtocolHandler.java
index 95e8917f00..03227f2920 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/server/realtime/ServerSegmentCompletionProtocolHandler.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/server/realtime/ServerSegmentCompletionProtocolHandler.java
@@ -29,6 +29,7 @@ import org.apache.pinot.common.metrics.ServerMetrics;
 import org.apache.pinot.common.protocols.SegmentCompletionProtocol;
 import org.apache.pinot.common.utils.ClientSSLContextGenerator;
 import org.apache.pinot.common.utils.FileUploadDownloadClient;
+import org.apache.pinot.common.utils.http.HttpClientConfig;
 import 
org.apache.pinot.core.data.manager.realtime.Server2ControllerSegmentUploader;
 import org.apache.pinot.core.util.SegmentCompletionProtocolUtils;
 import org.apache.pinot.spi.auth.AuthProvider;
@@ -52,6 +53,7 @@ public class ServerSegmentCompletionProtocolHandler {
   private static final String HTTP_PROTOCOL = CommonConstants.HTTP_PROTOCOL;
 
   private static SSLContext _sslContext;
+  private static HttpClientConfig _httpClientConfig = 
HttpClientConfig.DEFAULT_HTTP_CLIENT_CONFIG;
   private static Integer _controllerHttpsPort;
   private static int _segmentUploadRequestTimeoutMs;
   private static AuthProvider _authProvider;
@@ -76,10 +78,12 @@ public class ServerSegmentCompletionProtocolHandler {
         .getProperty(CONFIG_OF_SEGMENT_UPLOAD_REQUEST_TIMEOUT_MS, 
DEFAULT_SEGMENT_UPLOAD_REQUEST_TIMEOUT_MS);
 
     _authProvider = AuthProviderUtils.extractAuthProvider(uploaderConfig, 
CONFIG_OF_SEGMENT_UPLOADER_AUTH);
+
+    _httpClientConfig = HttpClientConfig.newBuilder(uploaderConfig).build();
   }
 
   public ServerSegmentCompletionProtocolHandler(ServerMetrics serverMetrics, 
String tableNameWithType) {
-    _fileUploadDownloadClient = new FileUploadDownloadClient(_sslContext);
+    _fileUploadDownloadClient = new 
FileUploadDownloadClient(_httpClientConfig, _sslContext);
     _serverMetrics = serverMetrics;
     _rawTableName = TableNameBuilder.extractRawTableName(tableNameWithType);
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to