You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ti...@apache.org on 2023/06/14 20:42:01 UTC

[pinot] branch master updated: Add Support for Disabling Default User Agent for Http Client (#10895)

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 <an...@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 <17...@users.noreply.github.com>
    
    * Update UT to ensure config is indeed picked up
    
    ---------
    
    Co-authored-by: Xiaotian (Jackie) Jiang <17...@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-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org