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 <[email protected]>
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
<[email protected]>
* Update UT to ensure config is indeed picked up
---------
Co-authored-by: Xiaotian (Jackie) Jiang
<[email protected]>
---
.../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: [email protected]
For additional commands, e-mail: [email protected]