diff --git a/CHANGELOG.md b/CHANGELOG.md index b37c3e4e74161..df9eb6ab93bf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Update RemoteClusterStateCleanupManager to performed batched deletions of stale ClusterMetadataManifests and address deletion timeout issues ([#20566](https://github.com/opensearch-project/OpenSearch/pull/20566)) - Fix the regression of terms agg optimization at high cardinality ([#20623](https://github.com/opensearch-project/OpenSearch/pull/20623)) - Support Docker distribution builds for ppc64le, arm64 and s390x ([#20678](https://github.com/opensearch-project/OpenSearch/pull/20678)) +- Harden detection of HTTP/3 support by ensuring Quic native libraries are available for the target platform ([#20680](https://github.com/opensearch-project/OpenSearch/pull/20680)) ### Dependencies - Bump shadow-gradle-plugin from 8.3.9 to 9.3.1 ([#20569](https://github.com/opensearch-project/OpenSearch/pull/20569)) diff --git a/libs/netty4/src/main/java/org/opensearch/http/netty4/http3/Http3Utils.java b/libs/netty4/src/main/java/org/opensearch/http/netty4/http3/Http3Utils.java index 94c0fbdb44e0d..c72b032841c96 100644 --- a/libs/netty4/src/main/java/org/opensearch/http/netty4/http3/Http3Utils.java +++ b/libs/netty4/src/main/java/org/opensearch/http/netty4/http3/Http3Utils.java @@ -8,6 +8,8 @@ package org.opensearch.http.netty4.http3; +import io.netty.handler.codec.quic.Quic; + /** * Adapted from reactor.netty.http.internal.Http3 class */ @@ -22,7 +24,10 @@ public final class Http3Utils { } catch (Throwable t) { http3 = false; } - isHttp3Available = http3; + // Quic codec (which is used by HTTP/3 implementation) is provided by the + // native library and may not be available on all platforms (even if HTTP/3 + // codec is present). + isHttp3Available = http3 && Quic.isAvailable(); } private Http3Utils() {