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