Skip to content

Fix stream transport TLS cert hot-reload by using live SSLContext fro… - #20734

Merged
rishabhmaurya merged 1 commit into
opensearch-project:mainfrom
rishabhmaurya:sTransport-fix-hot-reload-main
Feb 26, 2026
Merged

Fix stream transport TLS cert hot-reload by using live SSLContext fro…#20734
rishabhmaurya merged 1 commit into
opensearch-project:mainfrom
rishabhmaurya:sTransport-fix-hot-reload-main

Conversation

@rishabhmaurya

@rishabhmaurya rishabhmaurya commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

…m SecureTransportSettingsProvider

Description

Stream transport failed after reloadcerts with "cert file read errors". The original DefaultSslContextProvider built JdkSslContext using KeyManagerFactory/TrustManagerFactory obtained from SslConfiguration, which reads cert files from disk.It can happen that some implementation calls reloadcerts which rebuild the in-memory SSLContext and then delete the cert files. Any new connection after deletion triggers a fresh JdkSslContext build, which fails because the files no longer exist.

Why SecureTransportSettingsProvider needed a new method
transport-netty4 avoids this by calling buildSecureServerTransportEngine() / buildSecureClientTransportEngine() per connection — these return engines from the live in-memory SSLContext with no file reads. However, Arrow Flight uses gRPC-netty's ServerTlsHandler / ClientTlsHandler, which require a SslContext object (not a raw SSLEngine). The correct pattern (used by transport-grpc) is to wrap the live javax.SSLContext once in a JdkSslContextJdkSslContext holds a reference to the SSLContext and calls createSSLEngine() on it per connection, so re-initializing the SSLContext with new key material takes effect on the next handshake automatically.

transport-grpc gets the live SSLContext via SecureAuxTransportSettingsProvider.buildSecureAuxServerTransportContext(), but Arrow Flight is a Transport (not AuxTransport) and receives SecureTransportSettingsProvider, which had no equivalent method. Adding buildSecureTransportContext() (default returns Optional.empty()) exposes the live SSLContext through the same interface Arrow Flight already has.

Security plugin change
The security plugin implements buildSecureTransportContext() to return the live SSLContext from SslContextHandler — one line, identical to how buildSecureAuxServerTransportContext() works. See: opensearch-project/security#5971

Hostname verification and ALPN
With the client using JdkSslContext directly, gRPC-netty ClientTlsHandler behaviors required additional handling:

  1. ALPN: ClientTlsHandler reads getSSLParameters(), adds endpointIdentificationAlgorithm, then calls setSSLParameters(). ALPN must already be set on the engine before this round-trip, so AlpnPresettingClientSslContext pre-sets it in newEngine().

  2. Hostname verification: ClientTlsHandler unconditionally sets endpointIdentificationAlgorithm="HTTPS" after newEngine() returns, regardless of the SslContext configuration. When enforce_hostname_verification=false, this causes handshake failures if the server cert lacks the peer IP as a SAN. AlpnAwareSSLEngineWrapper intercepts setSSLParameters() and strips the algorithm. It must live in the io.netty.handler.ssl package to implement ApplicationProtocolAccessor (package-private in Netty), which is required for SslHandler.applicationProtocol() to return the negotiated protocol post-handshake

Related Issues

Resolves #[Issue number to be closed when this PR is merged]

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.

@github-actions

Copy link
Copy Markdown
Contributor

PR Code Analyzer ❗

AI-powered 'Code-Diff-Analyzer' found issues on commit 0a82204.

PathLineSeverityDescription
plugins/arrow-flight-rpc/src/main/java/io/netty/handler/ssl/AlpnAwareSSLEngineWrapper.java47criticalUnconditionally strips endpointIdentificationAlgorithm by setting it to empty string, completely disabling hostname verification in TLS connections. This enables trivial man-in-the-middle attacks when this wrapper is used.
plugins/arrow-flight-rpc/src/main/java/io/netty/handler/ssl/AlpnAwareSSLEngineWrapper.java8highPackage name spoofing: Class resides in io.netty.handler.ssl package but is not part of Netty library. Appears designed to access package-private Netty interfaces (ApplicationProtocolAccessor) to bypass normal security boundaries. This pattern is commonly used in supply chain attacks.
plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java176mediumArchitecture intentionally bypasses hostname verification when enforceHostnameVerification is false. While technically respecting a configuration flag, the implementation makes it trivial to disable a critical security control via the AlpnAwareSSLEngineWrapper.

The table above displays the top 10 most important findings.

Total: 3 | Critical: 1 | High: 1 | Medium: 1 | Low: 0


Pull Requests Author(s): Please update your Pull Request according to the report above.

Repository Maintainer(s): You can bypass diff analyzer by adding label skip-diff-analyzer after reviewing the changes carefully, then re-run failed actions. To re-enable the analyzer, remove the label, then re-run all actions.


⚠️ Note: The Code-Diff-Analyzer helps protect against potentially harmful code patterns. Please ensure you have thoroughly reviewed the changes beforehand.

Thanks.

@rishabhmaurya rishabhmaurya added the skip-diff-analyzer Maintainer to skip code-diff-analyzer check, after reviewing issues in AI analysis. label Feb 26, 2026
@github-actions

github-actions Bot commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

PR Reviewer Guide 🔍

(Review updated until commit 9592324)

Here are some key observations to aid the review process:

🧪 PR contains tests
🔒 Security concerns

Hostname verification bypass:
The AlpnAwareSSLEngineWrapper.setSSLParameters method unconditionally sets endpointIdentificationAlgorithm to an empty string (line 48), which disables hostname verification. While this appears intentional when enforceHostnameVerification is false, the wrapper itself has no awareness of this flag and will strip hostname verification on every setSSLParameters call. If this wrapper is accidentally used in a context where hostname verification should be enforced, it creates a vulnerability to man-in-the-middle attacks. Ensure the wrapper is only instantiated when hostname verification is explicitly disabled, and consider adding safeguards or documentation to prevent misuse.

✅ No TODO sections
🔀 Multiple PR themes

Sub-PR theme: Add AlpnAwareSSLEngineWrapper for ALPN and hostname verification control

Relevant files:

  • plugins/arrow-flight-rpc/src/main/java/io/netty/handler/ssl/AlpnAwareSSLEngineWrapper.java
  • plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProviderTests.java

Sub-PR theme: Add buildSecureTransportContext method to SecureTransportSettingsProvider interface

Relevant files:

  • server/src/main/java/org/opensearch/plugins/SecureTransportSettingsProvider.java

Sub-PR theme: Refactor DefaultSslContextProvider to support live SSLContext hot-reload

Relevant files:

  • plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java
  • plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProvider.java
  • plugins/arrow-flight-rpc/src/internalClusterTest/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProviderFlightIT.java

⚡ Recommended focus areas for review

Thread Safety

The double-checked locking pattern for lazy initialization of serverSslContext and clientSslContext may not be fully thread-safe without marking the fields as volatile. While the fields are declared volatile, verify that the initialization logic within the synchronized blocks cannot be reordered or partially observed by other threads.

    if (serverSslContext == null) {
        synchronized (this) {
            if (serverSslContext == null) {
                serverSslContext = new LiveSslContext(false);
            }
        }
    }
    return serverSslContext;
}

@Override
public SslContext getClientSslContext() {
    if (clientSslContext == null) {
        synchronized (this) {
            if (clientSslContext == null) {
                clientSslContext = new AlpnPresettingClientSslContext(new LiveSslContext(true), enforceHostnameVerification);
            }
        }
    }
    return clientSslContext;
Security Concern

The wrapper unconditionally strips endpointIdentificationAlgorithm by setting it to empty string in setSSLParameters. This disables hostname verification regardless of the original parameter value, which could be a security risk if the wrapper is used in contexts where hostname verification should be enforced. Verify this behavior aligns with the intended security model.

public void setSSLParameters(SSLParameters p) {
    p.setEndpointIdentificationAlgorithm("");
    d.setSSLParameters(p);
}
Resource Cleanup

The test creates an ExecutorService but relies on shutdownNow() in the finally block. If an exception occurs before reaching the finally block or if shutdownNow() fails, the executor threads may not be properly cleaned up. Consider using try-with-resources or ensuring cleanup in a tearDown method.

ExecutorService exec = Executors.newSingleThreadExecutor();

try (RootAllocator allocator = new RootAllocator(Integer.MAX_VALUE)) {
    FlightServer server = OSFlightServer.builder()
        .allocator(allocator.newChildAllocator("server", 0, Long.MAX_VALUE))
        .location(location)
        .producer(new NoOpFlightProducer())
        .sslContext(sslServer.getServerSslContext())
        .executor(exec)
        .build();
    server.start();

    try (
        FlightClient client = OSFlightClient.builder()
            .allocator(allocator.newChildAllocator("client", 0, Long.MAX_VALUE))
            .location(location)
            .sslContext(sslClient.getClientSslContext())
            .build()
    ) {
        try {
            triggerHandshake(client);
            assertEquals(cnBefore, getCN(capturedChain));

            reload.run();
            getChannel(client).enterIdle();

            triggerHandshake(client);
            assertEquals(cnAfter, getCN(capturedChain));
        } finally {
            server.shutdown();
            server.awaitTermination();
            server.close();
            exec.shutdownNow();
        }
Error Handling

The buildJdkSslContext method catches SSLException and wraps it in a RuntimeException, losing the original exception type. This may make it harder for callers to handle SSL-specific errors appropriately. Consider whether the exception should be propagated as-is or wrapped in a more specific custom exception.

private JdkSslContext buildJdkSslContext(boolean isClient) {
    try {
        SSLContext sslContext = secureTransportSettingsProvider.buildSecureTransportContext(settings)
            .orElseThrow(() -> new IllegalStateException("No SSLContext from SecureTransportSettingsProvider"));
        SecureTransportSettingsProvider.SecureTransportParameters params = secureTransportSettingsProvider.parameters(settings)
            .orElseThrow(() -> new IllegalStateException("No SecureTransportParameters from SecureTransportSettingsProvider"));
        ClientAuth clientAuth = ClientAuth.valueOf(params.clientAuth().orElse("NONE").toUpperCase(Locale.ROOT));
        return new JdkSslContext(
            sslContext,
            isClient,
            params.cipherSuites().isEmpty() ? null : params.cipherSuites(),
            SupportedCipherSuiteFilter.INSTANCE,
            ALPN_H2,
            isClient ? ClientAuth.NONE : clientAuth,
            DEFAULT_SSL_PROTOCOLS,
            enforceHostnameVerification
        );
    } catch (SSLException e) {
        throw new RuntimeException(e);
    }
}

@github-actions

github-actions Bot commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

PR Code Suggestions ✨

Latest suggestions up to 9592324
Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Add volatile to ensure thread-safe initialization

The double-checked locking pattern is used without declaring serverSslContext and
clientSslContext as volatile. Without the volatile keyword, the pattern is broken in
Java because another thread may see a partially constructed object. Declare both
fields as volatile to ensure proper visibility across threads.

plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java [65-66]

-@Override
-public SslContext getServerSslContext() {
-    if (serverSslContext == null) {
-        synchronized (this) {
-            if (serverSslContext == null) {
-                serverSslContext = new LiveSslContext(false);
-            }
-        }
-    }
-    return serverSslContext;
-}
+private volatile SslContext serverSslContext;
+private volatile SslContext clientSslContext;
 
-@Override
-public SslContext getClientSslContext() {
-    if (clientSslContext == null) {
-        synchronized (this) {
-            if (clientSslContext == null) {
-                clientSslContext = new AlpnPresettingClientSslContext(new LiveSslContext(true), enforceHostnameVerification);
-            }
-        }
-    }
-    return clientSslContext;
-}
-
Suggestion importance[1-10]: 9

__

Why: This is a critical concurrency bug. The double-checked locking pattern without volatile can result in threads seeing partially constructed SslContext objects due to instruction reordering. This could cause subtle runtime failures in production under concurrent access.

High
General
Avoid mutating caller's SSLParameters object

Mutating the input SSLParameters object directly can cause unexpected side effects
for the caller, as they may reuse the same object. Create a defensive copy of the
parameters before modifying them to avoid altering the caller's state.

plugins/arrow-flight-rpc/src/main/java/io/netty/handler/ssl/AlpnAwareSSLEngineWrapper.java [47-50]

 @Override
 public void setSSLParameters(SSLParameters p) {
-    p.setEndpointIdentificationAlgorithm("");
-    d.setSSLParameters(p);
+    SSLParameters copy = new SSLParameters(
+        p.getCipherSuites(),
+        p.getProtocols()
+    );
+    copy.setEndpointIdentificationAlgorithm("");
+    d.setSSLParameters(copy);
 }
Suggestion importance[1-10]: 7

__

Why: Mutating the input SSLParameters object can cause unexpected side effects if the caller reuses it. However, the improved_code is incomplete—it doesn't copy all fields like setWantClientAuth, setNeedClientAuth, setServerNames, etc. A proper defensive copy would require cloning all relevant fields or using a copy constructor if available.

Medium
Ensure proper exception handling during shutdown

The server.close() call after server.awaitTermination() may fail if the server is
not properly shut down. The FlightServer is created outside the try-with-resources
block, so exceptions during shutdown won't be properly handled. Move the server
lifecycle management into a try-with-resources block or ensure proper exception
handling in the finally block.

plugins/arrow-flight-rpc/src/internalClusterTest/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProviderFlightIT.java [147-179]

 try (RootAllocator allocator = new RootAllocator(Integer.MAX_VALUE)) {
     FlightServer server = OSFlightServer.builder()
         .allocator(allocator.newChildAllocator("server", 0, Long.MAX_VALUE))
         .location(location)
         .producer(new NoOpFlightProducer())
         .sslContext(sslServer.getServerSslContext())
         .executor(exec)
         .build();
     server.start();
 
     try (
         FlightClient client = OSFlightClient.builder()
             .allocator(allocator.newChildAllocator("client", 0, Long.MAX_VALUE))
             .location(location)
             .sslContext(sslClient.getClientSslContext())
             .build()
     ) {
         try {
             triggerHandshake(client);
             assertEquals(cnBefore, getCN(capturedChain));
 
             reload.run();
             getChannel(client).enterIdle();
 
             triggerHandshake(client);
             assertEquals(cnAfter, getCN(capturedChain));
         } finally {
-            server.shutdown();
-            server.awaitTermination();
-            server.close();
-            exec.shutdownNow();
+            try {
+                server.shutdown();
+                server.awaitTermination();
+            } finally {
+                server.close();
+                exec.shutdownNow();
+            }
         }
     }
 }
Suggestion importance[1-10]: 5

__

Why: The suggestion correctly identifies that server.close() could fail if shutdown is incomplete, but the existing code already handles this in a finally block which guarantees execution. Wrapping in nested try-finally adds defensive exception handling but provides only marginal improvement since the test would fail anyway if shutdown throws.

Low

Previous suggestions

Suggestions up to commit 0a82204
CategorySuggestion                                                                                                                                    Impact
General
Avoid mutating input parameters

Mutating the input SSLParameters object directly can cause unexpected side effects
for the caller. Create a defensive copy before modifying to avoid altering the
caller's original object.

plugins/arrow-flight-rpc/src/main/java/io/netty/handler/ssl/AlpnAwareSSLEngineWrapper.java [47-50]

 @Override
 public void setSSLParameters(SSLParameters p) {
-    p.setEndpointIdentificationAlgorithm("");
-    d.setSSLParameters(p);
+    SSLParameters copy = new SSLParameters(
+        p.getCipherSuites(),
+        p.getProtocols()
+    );
+    copy.setEndpointIdentificationAlgorithm("");
+    d.setSSLParameters(copy);
 }
Suggestion importance[1-10]: 7

__

Why: Mutating the input SSLParameters object can cause unexpected side effects for callers. Creating a defensive copy is a good practice, though the impact depends on how the method is called in practice.

Medium
Ensure thread-safe field access

The enforceHostnameVerification field is read without synchronization during lazy
initialization. If this field can be modified after construction, declare it as
volatile or ensure it's final to prevent visibility issues.

plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java [64]

-private volatile SslContext clientSslContext;
+private final boolean enforceHostnameVerification;
 
 @Override
 public SslContext getClientSslContext() {
     if (clientSslContext == null) {
         synchronized (this) {
             if (clientSslContext == null) {
                 clientSslContext = new AlpnPresettingClientSslContext(buildJdkSslContext(true), enforceHostnameVerification);
             }
         }
     }
     return clientSslContext;
 }
Suggestion importance[1-10]: 5

__

Why: The enforceHostnameVerification field is set in the constructor and only read afterward. Making it final is a good practice for immutability and thread safety, though it's a minor improvement since the field is not modified after construction.

Low

@github-actions

Copy link
Copy Markdown
Contributor

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

…m SecureTransportSettingsProvider

Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
@rishabhmaurya
rishabhmaurya force-pushed the sTransport-fix-hot-reload-main branch from 0a82204 to 9592324 Compare February 26, 2026 04:04
@github-actions

Copy link
Copy Markdown
Contributor

Persistent review updated to latest commit 9592324

@rishabhmaurya rishabhmaurya changed the title fix stream transport TLS cert hot-reload by using live SSLContext fro… Fix stream transport TLS cert hot-reload by using live SSLContext fro… Feb 26, 2026
@rishabhmaurya
rishabhmaurya marked this pull request as ready for review February 26, 2026 04:09
@rishabhmaurya
rishabhmaurya requested a review from a team as a code owner February 26, 2026 04:09
@github-actions

Copy link
Copy Markdown
Contributor

✅ Gradle check result for 9592324: SUCCESS

@codecov

codecov Bot commented Feb 26, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 46.39175% with 52 lines in your changes missing coverage. Please review.
✅ Project coverage is 73.27%. Comparing base (5c183b8) to head (9592324).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
...o/netty/handler/ssl/AlpnAwareSSLEngineWrapper.java 15.21% 38 Missing and 1 partial ⚠️
...light/bootstrap/tls/DefaultSslContextProvider.java 76.00% 8 Missing and 4 partials ⚠️
...earch/plugins/SecureTransportSettingsProvider.java 0.00% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main   #20734      +/-   ##
============================================
+ Coverage     73.23%   73.27%   +0.03%     
- Complexity    72016    72051      +35     
============================================
  Files          5783     5784       +1     
  Lines        329438   329525      +87     
  Branches      47534    47545      +11     
============================================
+ Hits         241268   241456     +188     
+ Misses        68868    68694     -174     
- Partials      19302    19375      +73     

☔ 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.

@rishabhmaurya
rishabhmaurya merged commit 3154811 into opensearch-project:main Feb 26, 2026
38 of 39 checks passed
Comment thread CHANGELOG.md
Comment on lines +17 to +36
- Add support for fields containing dots in their name as literals ([#19958](https://github.com/opensearch-project/OpenSearch/pull/19958))
- Add support for forward translog reading ([#20163](https://github.com/opensearch-project/OpenSearch/pull/20163))
- Added public getter method in `SourceFieldMapper` to return excluded field ([#20205](https://github.com/opensearch-project/OpenSearch/pull/20205))
- Add integ test for simulating node join left event when data node cluster state publication lag because the cluster applier thread being busy ([#19907](https://github.com/opensearch-project/OpenSearch/pull/19907)).
- Relax jar hell check when extended plugins share transitive dependencies ([#20103](https://github.com/opensearch-project/OpenSearch/pull/20103))
- Added public getter method in `SourceFieldMapper` to return included field ([#20290](https://github.com/opensearch-project/OpenSearch/pull/20290))
- Support for HTTP/3 (server side) ([#20017](https://github.com/opensearch-project/OpenSearch/pull/20017))
- Add circuit breaker support for gRPC transport to prevent out-of-memory errors ([#20203](https://github.com/opensearch-project/OpenSearch/pull/20203))
- Add index-level-encryption support for snapshots and remote-store ([#20095](https://github.com/opensearch-project/OpenSearch/pull/20095))
- Adding BackWardCompatibility test for remote publication enabled cluster ([#20221](https://github.com/opensearch-project/OpenSearch/pull/20221))
- Support for hll field mapper to support cardinality rollups ([#20129](https://github.com/opensearch-project/OpenSearch/pull/20129))
- Add tracing support for StreamingRestChannel ([#20361](https://github.com/opensearch-project/OpenSearch/pull/20361))
- Introduce new libs/netty4 module to share common implementation between netty-based plugins and modules (transport-netty4, transport-reactor-netty4) ([#20447](https://github.com/opensearch-project/OpenSearch/pull/20447))
- Add validation to make crypto store settings immutable ([#20123](https://github.com/opensearch-project/OpenSearch/pull/20123))
- Introduce concurrent translog recovery to accelerate segment replication primary promotion ([#20251](https://github.com/opensearch-project/OpenSearch/pull/20251))
- Update to `almalinux:10` ([#20482](https://github.com/opensearch-project/OpenSearch/pull/20482))
- Add X-Request-Id to uniquely identify a search request ([#19798](https://github.com/opensearch-project/OpenSearch/pull/19798))
- Added TopN selection logic for streaming terms aggregations ([#20481](https://github.com/opensearch-project/OpenSearch/pull/20481))
- Added support for Intra Segment Search ([#19704](https://github.com/opensearch-project/OpenSearch/pull/19704))
- Introduce AdditionalCodecs and EnginePlugin::getAdditionalCodecs hook to allow additional Codec registration ([#20411](https://github.com/opensearch-project/OpenSearch/pull/20411))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rishabhmaurya looks like we added to the changelog

imRishN pushed a commit to imRishN/OpenSearch that referenced this pull request Mar 1, 2026
…m SecureTransportSettingsProvider (opensearch-project#20734)

Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>
varunbharadwaj added a commit that referenced this pull request Mar 2, 2026
…#20729)

* Implement FieldMappingIngestionMessageMapper for pull-based ingestion

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address bot comment

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address comments

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address comments

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Remove affiliation column for emeritus maintainers (#20725)

Emeritus maintainers are not active in the project, therefore I don't
see a lot of value in tracking their affiliation.

Signed-off-by: Andrew Ross <andrross@amazon.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add bitmap64 query support (#20606)

---------

Signed-off-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Divya <divyaruhil999@gmail.com>
Co-authored-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* fix stream transport TLS cert hot-reload by using live SSLContext from SecureTransportSettingsProvider (#20734)

Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Bump OpenTelemetry to 1.59.0 and OpenTelemetry Semconv to 1.40.0 (#20737)

Signed-off-by: Andriy Redko <drreta@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* [Pull-based Ingestion] Remove experimental tag for pull-based ingestion (#20704)

* remove experimental tag for pull-based ingestion

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>

* update BroadcastRequest to be marked as public API

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>

---------

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Bump Apache Lucene from 10.3.2 to 10.4.0 (#20735)

Signed-off-by: Ankit Jain <jainankitk@apache.org>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Minor

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address bot comment

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Make id mandatory when id field provided

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Introducing indexing & deletion strategy planner interfaces (#20585)

Signed-off-by: Shashank Gowri <shnkgo@amazon.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Refactor

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Empty commit

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Remove duplicate changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Empty commit

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

---------

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>
Signed-off-by: Andrew Ross <andrross@amazon.com>
Signed-off-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Divya <divyaruhil999@gmail.com>
Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Andriy Redko <drreta@gmail.com>
Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Signed-off-by: Ankit Jain <jainankitk@apache.org>
Signed-off-by: Shashank Gowri <shnkgo@amazon.com>
Co-authored-by: Andrew Ross <andrross@amazon.com>
Co-authored-by: Divya <117009486+divyaruhil@users.noreply.github.com>
Co-authored-by: Divya <DIVYA2@ibm.com>
Co-authored-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Co-authored-by: Andriy Redko <drreta@gmail.com>
Co-authored-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Co-authored-by: Ankit Jain <jainankitk@apache.org>
Co-authored-by: Shashank Gowri <shashankgowri@gmail.com>
aparajita31pandey pushed a commit to aparajita31pandey/OpenSearch that referenced this pull request Apr 18, 2026
…m SecureTransportSettingsProvider (opensearch-project#20734)

Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Aparajita Pandey <aparajita31pandey@gmail.com>
aparajita31pandey pushed a commit to aparajita31pandey/OpenSearch that referenced this pull request Apr 18, 2026
…opensearch-project#20729)

* Implement FieldMappingIngestionMessageMapper for pull-based ingestion

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address bot comment

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address comments

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address comments

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Remove affiliation column for emeritus maintainers (opensearch-project#20725)

Emeritus maintainers are not active in the project, therefore I don't
see a lot of value in tracking their affiliation.

Signed-off-by: Andrew Ross <andrross@amazon.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add bitmap64 query support (opensearch-project#20606)

---------

Signed-off-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Divya <divyaruhil999@gmail.com>
Co-authored-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* fix stream transport TLS cert hot-reload by using live SSLContext from SecureTransportSettingsProvider (opensearch-project#20734)

Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Bump OpenTelemetry to 1.59.0 and OpenTelemetry Semconv to 1.40.0 (opensearch-project#20737)

Signed-off-by: Andriy Redko <drreta@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* [Pull-based Ingestion] Remove experimental tag for pull-based ingestion (opensearch-project#20704)

* remove experimental tag for pull-based ingestion

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>

* update BroadcastRequest to be marked as public API

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>

---------

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Bump Apache Lucene from 10.3.2 to 10.4.0 (opensearch-project#20735)

Signed-off-by: Ankit Jain <jainankitk@apache.org>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Minor

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address bot comment

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Make id mandatory when id field provided

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Introducing indexing & deletion strategy planner interfaces (opensearch-project#20585)

Signed-off-by: Shashank Gowri <shnkgo@amazon.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Refactor

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Empty commit

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Remove duplicate changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Empty commit

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

---------

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>
Signed-off-by: Andrew Ross <andrross@amazon.com>
Signed-off-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Divya <divyaruhil999@gmail.com>
Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Andriy Redko <drreta@gmail.com>
Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Signed-off-by: Ankit Jain <jainankitk@apache.org>
Signed-off-by: Shashank Gowri <shnkgo@amazon.com>
Co-authored-by: Andrew Ross <andrross@amazon.com>
Co-authored-by: Divya <117009486+divyaruhil@users.noreply.github.com>
Co-authored-by: Divya <DIVYA2@ibm.com>
Co-authored-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Co-authored-by: Andriy Redko <drreta@gmail.com>
Co-authored-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Co-authored-by: Ankit Jain <jainankitk@apache.org>
Co-authored-by: Shashank Gowri <shashankgowri@gmail.com>
Signed-off-by: Aparajita Pandey <aparajita31pandey@gmail.com>
pradeep-L pushed a commit to pradeep-L/OpenSearch that referenced this pull request Apr 21, 2026
…m SecureTransportSettingsProvider (opensearch-project#20734)

Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
pradeep-L pushed a commit to pradeep-L/OpenSearch that referenced this pull request Apr 21, 2026
…opensearch-project#20729)

* Implement FieldMappingIngestionMessageMapper for pull-based ingestion

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address bot comment

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address comments

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address comments

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Remove affiliation column for emeritus maintainers (opensearch-project#20725)

Emeritus maintainers are not active in the project, therefore I don't
see a lot of value in tracking their affiliation.

Signed-off-by: Andrew Ross <andrross@amazon.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add bitmap64 query support (opensearch-project#20606)

---------

Signed-off-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Divya <divyaruhil999@gmail.com>
Co-authored-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* fix stream transport TLS cert hot-reload by using live SSLContext from SecureTransportSettingsProvider (opensearch-project#20734)

Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Bump OpenTelemetry to 1.59.0 and OpenTelemetry Semconv to 1.40.0 (opensearch-project#20737)

Signed-off-by: Andriy Redko <drreta@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* [Pull-based Ingestion] Remove experimental tag for pull-based ingestion (opensearch-project#20704)

* remove experimental tag for pull-based ingestion

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>

* update BroadcastRequest to be marked as public API

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>

---------

Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Bump Apache Lucene from 10.3.2 to 10.4.0 (opensearch-project#20735)

Signed-off-by: Ankit Jain <jainankitk@apache.org>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Minor

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Address bot comment

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Make id mandatory when id field provided

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Introducing indexing & deletion strategy planner interfaces (opensearch-project#20585)

Signed-off-by: Shashank Gowri <shnkgo@amazon.com>
Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Add changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Refactor

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Fix spotless check

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Empty commit

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Remove duplicate changelog

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

* Empty commit

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>

---------

Signed-off-by: Rishab Nahata <rishabnahata07@gmail.com>
Signed-off-by: Andrew Ross <andrross@amazon.com>
Signed-off-by: Divya <DIVYA2@ibm.com>
Signed-off-by: Divya <divyaruhil999@gmail.com>
Signed-off-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Signed-off-by: Andriy Redko <drreta@gmail.com>
Signed-off-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Signed-off-by: Ankit Jain <jainankitk@apache.org>
Signed-off-by: Shashank Gowri <shnkgo@amazon.com>
Co-authored-by: Andrew Ross <andrross@amazon.com>
Co-authored-by: Divya <117009486+divyaruhil@users.noreply.github.com>
Co-authored-by: Divya <DIVYA2@ibm.com>
Co-authored-by: Rishabh Maurya <rishabhmaurya05@gmail.com>
Co-authored-by: Andriy Redko <drreta@gmail.com>
Co-authored-by: Varun Bharadwaj <varunbharadwaj1995@gmail.com>
Co-authored-by: Ankit Jain <jainankitk@apache.org>
Co-authored-by: Shashank Gowri <shashankgowri@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-diff-analyzer Maintainer to skip code-diff-analyzer check, after reviewing issues in AI analysis.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants