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