diff --git a/CHANGELOG-3.0.md b/CHANGELOG-3.0.md index 48d978bede420..fddead96aaf45 100644 --- a/CHANGELOG-3.0.md +++ b/CHANGELOG-3.0.md @@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Views, simplify data access and manipulation by providing a virtual layer over one or more indices ([#11957](https://github.com/opensearch-project/OpenSearch/pull/11957)) ### Dependencies +- Bump Apache HttpCore5/HttpClient5 dependencies from 5.2.5/5.3.1 to 5.3.1/5.4.1 to support ExtendedSocketOption in HttpAsyncClient ([#16757](https://github.com/opensearch-project/OpenSearch/pull/16757)) ### Changed - Changed locale provider from COMPAT to CLDR ([#14345](https://github.com/opensearch-project/OpenSearch/pull/14345)) diff --git a/client/rest/licenses/httpclient5-5.3.1.jar.sha1 b/client/rest/licenses/httpclient5-5.3.1.jar.sha1 deleted file mode 100644 index c8f32c1ec23a1..0000000000000 --- a/client/rest/licenses/httpclient5-5.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -56b53c8f4bcdaada801d311cf2ff8a24d6d96883 \ No newline at end of file diff --git a/client/rest/licenses/httpclient5-5.4.1.jar.sha1 b/client/rest/licenses/httpclient5-5.4.1.jar.sha1 new file mode 100644 index 0000000000000..3a4fec6e8afc7 --- /dev/null +++ b/client/rest/licenses/httpclient5-5.4.1.jar.sha1 @@ -0,0 +1 @@ +ce913081e592ee8eeee35c4e577d7dce13cba7a4 diff --git a/client/rest/licenses/httpcore5-5.2.5.jar.sha1 b/client/rest/licenses/httpcore5-5.2.5.jar.sha1 deleted file mode 100644 index ca97e8612ea39..0000000000000 --- a/client/rest/licenses/httpcore5-5.2.5.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -dab1e18842971a45ca8942491ce005ab86a028d7 \ No newline at end of file diff --git a/client/rest/licenses/httpcore5-5.3.1.jar.sha1 b/client/rest/licenses/httpcore5-5.3.1.jar.sha1 new file mode 100644 index 0000000000000..90f194e770368 --- /dev/null +++ b/client/rest/licenses/httpcore5-5.3.1.jar.sha1 @@ -0,0 +1 @@ +eaf64237945d7d0f301d48420e8bdb7f565a7b0e diff --git a/client/rest/licenses/httpcore5-h2-5.2.5.jar.sha1 b/client/rest/licenses/httpcore5-h2-5.2.5.jar.sha1 deleted file mode 100644 index bb40fe65854f6..0000000000000 --- a/client/rest/licenses/httpcore5-h2-5.2.5.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -09425df4d1365cee86a8e031a036bdca4343da4b \ No newline at end of file diff --git a/client/rest/licenses/httpcore5-h2-5.3.1.jar.sha1 b/client/rest/licenses/httpcore5-h2-5.3.1.jar.sha1 new file mode 100644 index 0000000000000..bc122991af736 --- /dev/null +++ b/client/rest/licenses/httpcore5-h2-5.3.1.jar.sha1 @@ -0,0 +1 @@ +760c34db3ba41b0ffa07e956bc308d3a12356915 diff --git a/client/rest/licenses/httpcore5-reactive-5.2.5.jar.sha1 b/client/rest/licenses/httpcore5-reactive-5.2.5.jar.sha1 deleted file mode 100644 index ab9241fc93d45..0000000000000 --- a/client/rest/licenses/httpcore5-reactive-5.2.5.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -f68949965075b957c12b4c1ef89fd4bab2a0fdb1 \ No newline at end of file diff --git a/client/rest/licenses/httpcore5-reactive-5.3.1.jar.sha1 b/client/rest/licenses/httpcore5-reactive-5.3.1.jar.sha1 new file mode 100644 index 0000000000000..cb71833aad877 --- /dev/null +++ b/client/rest/licenses/httpcore5-reactive-5.3.1.jar.sha1 @@ -0,0 +1 @@ +c4c0c3c7bbcb0db54aa7ddd39e34a835428c99c0 diff --git a/client/rest/src/main/java/org/opensearch/client/RestClientBuilder.java b/client/rest/src/main/java/org/opensearch/client/RestClientBuilder.java index 3e38f9ae95dec..78a1d3e3fcf06 100644 --- a/client/rest/src/main/java/org/opensearch/client/RestClientBuilder.java +++ b/client/rest/src/main/java/org/opensearch/client/RestClientBuilder.java @@ -308,10 +308,15 @@ private CloseableHttpAsyncClient createHttpClient() { // default timeouts are all infinite RequestConfig.Builder requestConfigBuilder = RequestConfig.custom() .setConnectTimeout(Timeout.ofMilliseconds(DEFAULT_CONNECT_TIMEOUT_MILLIS)) - .setResponseTimeout(Timeout.ofMilliseconds(DEFAULT_RESPONSE_TIMEOUT_MILLIS)); + .setResponseTimeout(Timeout.ofMilliseconds(DEFAULT_RESPONSE_TIMEOUT_MILLIS)) + .setProtocolUpgradeEnabled(false); if (requestConfigCallback != null) { requestConfigBuilder = requestConfigCallback.customizeRequestConfig(requestConfigBuilder); } + RequestConfig requestConfig = requestConfigBuilder.build(); + if (requestConfig.isProtocolUpgradeEnabled()) { + throw new IllegalArgumentException("protocol upgrade is not supported"); + } try { final TlsStrategy tlsStrategy = ClientTlsStrategyBuilder.create() @@ -332,7 +337,7 @@ public TlsDetails create(final SSLEngine sslEngine) { .build(); HttpAsyncClientBuilder httpClientBuilder = HttpAsyncClientBuilder.create() - .setDefaultRequestConfig(requestConfigBuilder.build()) + .setDefaultRequestConfig(requestConfig) .setConnectionManager(connectionManager) .setTargetAuthenticationStrategy(DefaultAuthenticationStrategy.INSTANCE) .disableAutomaticRetries(); diff --git a/client/rest/src/test/java/org/opensearch/client/RestClientBuilderTests.java b/client/rest/src/test/java/org/opensearch/client/RestClientBuilderTests.java index 7165174e688e1..c9ad10a476f74 100644 --- a/client/rest/src/test/java/org/opensearch/client/RestClientBuilderTests.java +++ b/client/rest/src/test/java/org/opensearch/client/RestClientBuilderTests.java @@ -37,6 +37,7 @@ import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpHost; import org.apache.hc.core5.http.message.BasicHeader; +import org.apache.hc.core5.reactor.IOReactorConfig; import org.apache.hc.core5.util.Timeout; import java.io.IOException; @@ -143,6 +144,12 @@ public void testBuild() throws IOException { builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { + IOReactorConfig.Builder iOReactorConfig = IOReactorConfig.custom(); + iOReactorConfig.setTcpKeepCount(randomIntBetween(4, 10)); + iOReactorConfig.setTcpKeepInterval(randomIntBetween(5, 10)); + iOReactorConfig.setTcpKeepIdle(randomIntBetween(100, 200)); + iOReactorConfig.setIoThreadCount(2); + httpClientBuilder.setIOReactorConfig(iOReactorConfig.build()); return httpClientBuilder; } }); diff --git a/client/rest/src/test/java/org/opensearch/client/documentation/RestClientDocumentation.java b/client/rest/src/test/java/org/opensearch/client/documentation/RestClientDocumentation.java index 42c31864e0578..d9c82307cae8a 100644 --- a/client/rest/src/test/java/org/opensearch/client/documentation/RestClientDocumentation.java +++ b/client/rest/src/test/java/org/opensearch/client/documentation/RestClientDocumentation.java @@ -376,6 +376,24 @@ public HttpAsyncClientBuilder customizeHttpClient( }); //end::rest-client-config-threads } + { + //tag::rest-client-config-tcpKeepIdle/tcpKeepInterval/tcpKeepCount + RestClientBuilder builder = RestClient.builder( + new HttpHost("localhost", 9200)) + .setHttpClientConfigCallback(new HttpClientConfigCallback() { + @Override + public HttpAsyncClientBuilder customizeHttpClient( + HttpAsyncClientBuilder httpClientBuilder) { + return httpClientBuilder.setIOReactorConfig( + IOReactorConfig.custom() + .setTcpKeepIdle(200) + .setTcpKeepInterval(10) + .setTcpKeepCount(10) + .build()); + } + }); + //end::rest-client-config-tcpKeepIdle/tcpKeepInterval/tcpKeepCount + } { //tag::rest-client-config-basic-auth final BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); diff --git a/client/sniffer/licenses/httpclient5-5.3.1.jar.sha1 b/client/sniffer/licenses/httpclient5-5.3.1.jar.sha1 deleted file mode 100644 index c8f32c1ec23a1..0000000000000 --- a/client/sniffer/licenses/httpclient5-5.3.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -56b53c8f4bcdaada801d311cf2ff8a24d6d96883 \ No newline at end of file diff --git a/client/sniffer/licenses/httpclient5-5.4.1.jar.sha1 b/client/sniffer/licenses/httpclient5-5.4.1.jar.sha1 new file mode 100644 index 0000000000000..3a4fec6e8afc7 --- /dev/null +++ b/client/sniffer/licenses/httpclient5-5.4.1.jar.sha1 @@ -0,0 +1 @@ +ce913081e592ee8eeee35c4e577d7dce13cba7a4 diff --git a/client/sniffer/licenses/httpcore5-5.2.5.jar.sha1 b/client/sniffer/licenses/httpcore5-5.2.5.jar.sha1 deleted file mode 100644 index ca97e8612ea39..0000000000000 --- a/client/sniffer/licenses/httpcore5-5.2.5.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -dab1e18842971a45ca8942491ce005ab86a028d7 \ No newline at end of file diff --git a/client/sniffer/licenses/httpcore5-5.3.1.jar.sha1 b/client/sniffer/licenses/httpcore5-5.3.1.jar.sha1 new file mode 100644 index 0000000000000..90f194e770368 --- /dev/null +++ b/client/sniffer/licenses/httpcore5-5.3.1.jar.sha1 @@ -0,0 +1 @@ +eaf64237945d7d0f301d48420e8bdb7f565a7b0e diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index be59e1d3a5ab6..b6b36ca01dfd5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -41,8 +41,8 @@ reactor_netty = "1.1.23" reactor = "3.5.20" # client dependencies -httpclient5 = "5.3.1" -httpcore5 = "5.2.5" +httpclient5 = "5.4.1" +httpcore5 = "5.3.1" httpclient = "4.5.14" httpcore = "4.4.16" httpasyncclient = "4.1.5" diff --git a/test/framework/src/main/java/org/opensearch/bootstrap/BootstrapForTesting.java b/test/framework/src/main/java/org/opensearch/bootstrap/BootstrapForTesting.java index 933385dedcf49..79cead80fff3e 100644 --- a/test/framework/src/main/java/org/opensearch/bootstrap/BootstrapForTesting.java +++ b/test/framework/src/main/java/org/opensearch/bootstrap/BootstrapForTesting.java @@ -301,11 +301,15 @@ static Set parseClassPathWithSymlinks() throws Exception { private static Set getTrustedHosts() { // try { - return Collections.list(NetworkInterface.getNetworkInterfaces()) + List hosts = Collections.list(NetworkInterface.getNetworkInterfaces()) .stream() .flatMap(iface -> Collections.list(iface.getInetAddresses()).stream()) .map(address -> NetworkAddress.format(address)) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); + // 0:0:0:0:0:0:0:1 is simplified to ::1, in it test, the incoming address can be 0:0:0:0:0:0:0:1, + // so we should add it to trusted hosts. + hosts.add("0:0:0:0:0:0:0:1"); + return Collections.unmodifiableSet(new HashSet<>(hosts)); } catch (final SocketException e) { return Collections.emptySet(); }