Skip to content

Harden detection of HTTP/3 support by ensuring Quic native libraries are available for the target platform#20680

Merged
reta merged 1 commit intoopensearch-project:mainfrom
reta:harden.http3.detection
Feb 20, 2026
Merged

Harden detection of HTTP/3 support by ensuring Quic native libraries are available for the target platform#20680
reta merged 1 commit intoopensearch-project:mainfrom
reta:harden.http3.detection

Conversation

@reta
Copy link
Contributor

@reta reta commented Feb 19, 2026

Description

Harden detection of HTTP/3 support by ensuring Quic native libraries are available for the target platform. I have got access to a few boxes where Quic is not available yet:

  1> Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_quiche42_linux_ppcle_64.so
  1>    at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:189)
  1>    ... 40 more
  1>    Suppressed: java.lang.UnsatisfiedLinkError: no netty_quiche42_linux_ppcle_64 in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
  1>            at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2285)
  1>            at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:822)
  1>            at java.base/java.lang.System.loadLibrary(System.java:1685)
  1>            at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
  1>            at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:395)
  1>            at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:166)
  1>            ... 40 more
  1>            Suppressed: java.lang.UnsatisfiedLinkError: no netty_quiche42_linux_ppcle_64 in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
  1>                    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2285)
  1>                    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:822)
  1>                    at java.base/java.lang.System.loadLibrary(System.java:1685)
  1>                    at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
  1>                    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  1>                    at java.base/java.lang.reflect.Method.invoke(Method.java:565)
  1>                    at io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:421)
  1>                    at java.base/java.security.AccessController.doPrivileged(AccessController.java:74)
  1>                    at io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:413)
  1>                    at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:387)
  1>                    ... 41 more

All supported platforms are listed in the documentation: https://docs.opensearch.org/latest/install-and-configure/configuring-opensearch/network-settings/#experimental-http-settings

Related Issues

N/A

Check List

  • Functionality includes testing.
  • API changes companion pull request created, if applicable.
  • Public documentation issue/PR created, if applicable.

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.

@reta reta requested a review from a team as a code owner February 19, 2026 18:15
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 19, 2026

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The pull request adds a hardening check to HTTP/3 support detection by verifying that QUIC native libraries are available on the target platform, in addition to checking if the Http3 class is loadable.

Changes

Cohort / File(s) Summary
HTTP/3 QUIC Native Library Availability Check
libs/netty4/src/main/java/org/opensearch/http/netty4/http3/Http3Utils.java
Modified isHttp3Available initialization to require both Http3 class availability and QUIC native codec availability via Quic.isAvailable(). Added import for io.netty.handler.codec.quic.Quic and explanatory comment.
Changelog Documentation
CHANGELOG.md
Added entry documenting the HTTP/3 support detection hardening fix under Unreleased 3.x > Fixed section.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title accurately and concisely summarizes the primary change: hardening HTTP/3 support detection to verify Quic native library availability for the target platform.
Description check ✅ Passed The description is mostly complete with a detailed explanation of the problem, relevant error traces, reference to supported platforms documentation, and acknowledgment of the contribution terms.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Contributor

❌ Gradle check result for a63e52c: 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?

…are available for the target platform

Signed-off-by: Andriy Redko <drreta@gmail.com>
@reta reta force-pushed the harden.http3.detection branch from a63e52c to 9977655 Compare February 19, 2026 19:53
@github-actions
Copy link
Contributor

❌ Gradle check result for 9977655: 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?

@reta
Copy link
Contributor Author

reta commented Feb 19, 2026

❌ Gradle check result for 9977655: 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?

Will pick this one up right away

@github-actions
Copy link
Contributor

❌ Gradle check result for 9977655: 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?

@github-actions
Copy link
Contributor

❕ Gradle check result for 9977655: UNSTABLE

Please review all flaky tests that succeeded after retry and create an issue if one does not already exist to track the flaky failure.

@codecov
Copy link

codecov bot commented Feb 19, 2026

Codecov Report

❌ Patch coverage is 0% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 73.23%. Comparing base (6b557db) to head (9977655).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
...a/org/opensearch/http/netty4/http3/Http3Utils.java 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main   #20680      +/-   ##
============================================
- Coverage     73.32%   73.23%   -0.09%     
+ Complexity    72064    71994      -70     
============================================
  Files          5781     5781              
  Lines        329395   329402       +7     
  Branches      47525    47527       +2     
============================================
- Hits         241536   241250     -286     
- Misses        68507    68829     +322     
+ Partials      19352    19323      -29     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@reta
Copy link
Contributor Author

reta commented Feb 19, 2026

@cwperks @andrross could you please take a look folks? really small one, thank you

@reta reta merged commit 3b2e27a into opensearch-project:main Feb 20, 2026
38 of 43 checks passed
@reta reta added the backport 3.5 Backport to 3.5 branch label Feb 20, 2026
opensearch-trigger-bot bot pushed a commit that referenced this pull request Feb 20, 2026
…are available for the target platform (#20680)

Signed-off-by: Andriy Redko <drreta@gmail.com>
(cherry picked from commit 3b2e27a)
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport 3.5 Backport to 3.5 branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments