Support for HTTP/3 (client side)#21718
Conversation
PR Code Analyzer ❗AI-powered 'Code-Diff-Analyzer' found issues on commit dcf871e.
The table above displays the top 10 most important findings. Pull Requests Author(s): Please update your Pull Request according to the report above. Repository Maintainer(s): You can Thanks. |
PR Reviewer Guide 🔍(Review updated until commit 08a54ad)Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Latest suggestions up to 08a54ad Explore these optional code suggestions:
Previous suggestionsSuggestions up to commit 56f8647
Suggestions up to commit 25b49fb
Suggestions up to commit 20d8b95
Suggestions up to commit 88c2605
Suggestions up to commit a90bcb3
|
|
❌ Gradle check result for dcf871e: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
|
Persistent review updated to latest commit 5ea49ca |
|
❌ Gradle check result for 5ea49ca: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
|
❌ Gradle check result for 5ea49ca: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
|
Persistent review updated to latest commit 111049e |
|
❌ Gradle check result for 111049e: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
|
Persistent review updated to latest commit a90bcb3 |
|
Persistent review updated to latest commit 88c2605 |
|
❌ Gradle check result for 88c2605: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
|
Persistent review updated to latest commit 20d8b95 |
|
❌ Gradle check result for 20d8b95: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
|
Persistent review updated to latest commit 25b49fb |
|
❌ Gradle check result for 25b49fb: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
|
Persistent review updated to latest commit 56f8647 |
|
❌ Gradle check result for 56f8647: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
Signed-off-by: Andriy Redko <drreta@gmail.com>
|
Persistent review updated to latest commit 08a54ad |
|
❌ Gradle check result for 08a54ad: null Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
Description
Support for HTTP/3 (client side) by introducing alternative, zero dependencies HTTP client built on top of JDK's
HttpClient.Motivation
Recently we have introduced an experimental HTTP/3 support on the served side. The client side turned out to be more complicated since the Apache HttpClient 5 that we rely on for rest client transport does not support HTTP/3 (and unluckily will in nearest future), see please https://issues.apache.org/jira/browse/HTTPCORE-793. This limitation leads to uneasy options:
Alternative base clients
There are basically two production ready clients that fit into OpenSearch technical stack:
HttpClientthat supports HTTP/3 as of JDK-26 [1], [2]OpenJDK looks particularly appealing since it requires no dependencies vs Netty that provides the foundation but requires more implementation work. Although our baseline is JDK-21, the applications could use JDK-26 (or later) and get HTTP/3 support for free, no changes required on OpenSearch side. Contrary, Netty's HTTP/3 implementation is built on top of native library (https://github.com/cloudflare/quiche) and is not available on many platforms.
Do we need new HTTP client?
The Rest Client is considered deprecated for a long time (we recommend to use
opensearch-java), so we could consider it to be an internal change. Also, we stuck on Java 8 baseline foropensearch-javaandHttpClientis only available in JDK-11, adding a support for it is possible as multi-release jar and will be added accordingly.[1] #21170
[2] https://openjdk.org/jeps/517
Related Issues
Closes #20634
Check List
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.