Skip to content

[Plugins] Relax jar hell check when extended plugins share transitive dependencies#20103

Merged
karenyrx merged 3 commits intoopensearch-project:mainfrom
karenyrx:pluginsjarhell
Dec 20, 2025
Merged

[Plugins] Relax jar hell check when extended plugins share transitive dependencies#20103
karenyrx merged 3 commits intoopensearch-project:mainfrom
karenyrx:pluginsjarhell

Conversation

@karenyrx
Copy link
Copy Markdown
Contributor

@karenyrx karenyrx commented Nov 26, 2025

Description

Currently, k-nn extends transport-grpc, and neural-search extends knn, but when neural-search tries to extend transport-grpc (which is already in knn) it gives jar hell when trying to build

Test Plan

Tested with opensearch-project/neural-search#1665

  • Before: neural-search fails to build with following error:

| Caused by: java.lang.IllegalStateException: jar hell! extended plugins [opensearch-knn, transport-grpc] have duplicate codebases with each other: [file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/error_prone_annotations-2.24.1.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/protobufs-0.24.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-protobuf-lite-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/failureaccess-1.0.2.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-stub-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/perfmark-api-0.27.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/guava-33.2.1-jre.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-netty-shaded-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-api-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-core-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/transport-grpc-spi-3.4.0-SNAPSHOT.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-protobuf-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-util-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/grpc-services-1.75.0.jar, file:/home/runner/work/neural-search/neural-search/build/testclusters/integTest-0/distro/3.4.0-ARCHIVE/modules/transport-grpc/transport-grpc-3.4.0-SNAPSHOT.jar]
  • After:
    Newly emitted log shows the the intersection of all shared ancestor dependencies between opensearch-knn and transport-grpc:
{"level":"INFO","timestamp":"2025-11-26T08:11:04,080","thread":"main","file":"PluginsService.java", "line":"734","message":"Plugin [opensearch-neural-search] extends multiple plugins/modules that share common dependencies: [file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/transport-grpc-spi-3.3.1.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/failureaccess-1.0.2.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/guava-33.2.1-jre.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/protobufs-0.24.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-api-1.75.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/transport-grpc-3.3.1.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-services-1.75.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-protobuf-1.75.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-netty-shaded-1.75.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/perfmark-api-0.27.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-core-1.75.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-util-1.75.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-protobuf-lite-1.75.0.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/error_prone_annotations-2.24.1.jar, file:/usr/share/opensearch-all/opensearch-v3.x/modules/transport-grpc/grpc-stub-1.75.0.jar]. This is expected when extended plugins share common ancestors."}

Hybrid queries are successfully discovered via transport-grpc-spi

{"level":"INFO","timestamp":"2025-11-26T08:11:04,496","thread":"main","file":"GrpcPlugin.java", "line":"101","message":"Discovered QueryBuilderProtoConverter extension: org.opensearch.knn.grpc.proto.request.search.query.KNNQueryBuilderProtoConverter (handles: KNN)"}
{"level":"INFO","timestamp":"2025-11-26T08:11:04,496","thread":"main","file":"GrpcPlugin.java", "line":"101","message":"Discovered QueryBuilderProtoConverter extension: org.opensearch.neuralsearch.grpc.proto.request.search.query.HybridQueryBuilderProtoConverter (handles: HYBRID)"}
{"level":"INFO","timestamp":"2025-11-26T08:11:04,496","thread":"main","file":"GrpcPlugin.java", "line":"108","message":"Successfully loaded 2 QueryBuilderProtoConverter extensions"}

Hybrid queries are successfully registered with transport-grpc:

{"level":"INFO","timestamp":"2025-11-26T08:11:07,760","thread":"main","file":"GrpcPlugin.java", "line":"318","message":"Processing external converter: org.opensearch.neuralsearch.grpc.proto.request.search.query.HybridQueryBuilderProtoConverter (handles: HYBRID)"}
{"level":"INFO","timestamp":"2025-11-26T08:11:07,761","thread":"main","file":"GrpcPlugin.java", "line":"326","message":"Injected registry into converter: org.opensearch.neuralsearch.grpc.proto.request.search.query.HybridQueryBuilderProtoConverter"}
{"level":"INFO","timestamp":"2025-11-26T08:11:07,761","thread":"main","file":"QueryBuilderProtoConverterSpiRegistry.java", "line":"121","message":"Registered query converter for HYBRID: org.opensearch.neuralsearch.grpc.proto.request.search.query.HybridQueryBuilderProtoConverter"}
{"level":"INFO","timestamp":"2025-11-26T08:11:07,761","thread":"main","file":"GrpcPlugin.java", "line":"331","message":"Successfully injected registry and registered all 2 external converters"}
{"level":"INFO","timestamp":"2025-11-26T08:11:07,761","thread":"main","file":"QueryBuilderProtoConverterSpiRegistry.java", "line":"85","message":"Set registry on 26 converters"}

Related Issues

Resolves #20100

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.

Summary by CodeRabbit

  • Bug Fixes

    • Relaxed jar-hell validation for extended plugins that share transitive dependencies: deployments are no longer blocked for this case, and informational logs record plugin names and overlap details while other conflict checks remain.
  • Tests

    • Updated tests to verify no exception is thrown and to validate transitive dependency collection instead of expecting a failure.

✏️ Tip: You can customize this high-level summary in your review settings.

@github-actions github-actions bot added bug Something isn't working Plugins labels Nov 26, 2025
@karenyrx karenyrx changed the title plugin service allow multiple extended plugins both extend the same m… [Plugins] Relax jar hell check when extended plugins share transitive dependencies Nov 26, 2025
…odule/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

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

@peterzhuamazon
Copy link
Copy Markdown
Member

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Nov 26, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Nov 26, 2025

Walkthrough

Relaxed the jar-hell check: when extended plugins share overlapping classpath URLs the code now logs an informational message with the plugin name and overlapping URLs instead of throwing an IllegalStateException, allowing loading to continue; added CHANGELOG entry documenting the change.

Changes

Cohort / File(s) Summary
Changelog entry
CHANGELOG.md
Added an Unreleased 3.x note: "Relax jar hell check when extended plugins share transitive dependencies" with PR link.
Plugin jar-hell check
server/src/main/java/org/opensearch/plugins/PluginsService.java
In checkBundleJarHell, replaced the thrown IllegalStateException for overlapping URLs among extended plugins with a logger.info that includes the plugin name and the intersection; control flow continues without throwing.
Tests updated
server/src/test/java/org/opensearch/plugins/PluginsServiceTests.java
Updated testJarHellDuplicateCodebaseAcrossDeps to expect no exception and to assert that transitive dependency URLs include both the plugin's jar and the duplicate jar (verifies transitive dependency collection instead of erroring).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Focus review on:
    • server/src/main/java/org/opensearch/plugins/PluginsService.java — correctness of the new logging, exact conditions where the exception was removed, and that downstream JarHell checks still run.
    • server/src/test/java/org/opensearch/plugins/PluginsServiceTests.java — test intent and assertions updated to reflect relaxed behavior.
    • CHANGELOG.md — entry formatting and PR link.

Poem

🐰 I hopped between jars with a gentle sigh,

Two plugins shared paths but we didn't cry.
A quiet log whisper, no crash in sight,
Now shared codebeasts sleep through the night. ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: relaxing jar hell checks for extended plugins sharing transitive dependencies.
Description check ✅ Passed The PR description comprehensively covers the problem, test plan, results, and includes all required checklist items with explicit completion status.
Linked Issues check ✅ Passed The code changes fully address issue #20100 by replacing the jar-hell exception with informational logging when extended plugins share transitive dependencies, and the test validates the new behavior.
Out of Scope Changes check ✅ Passed All changes (CHANGELOG update, PluginsService logic modification, test update) are directly scoped to the jar-hell check relaxation objective.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 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.

@peterzhuamazon
Copy link
Copy Markdown
Member

This PR raised before coderabbitai is online on the repo, so I manually trigger it here.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
server/src/main/java/org/opensearch/plugins/PluginsService.java (1)

728-735: Relaxed transitive-overlap check matches intended semantics; logging looks correct

The new info log on Lines [731-735] for intersection between accumulated urls and pluginUrls correctly turns what used to be a fatal “duplicate codebases among extended plugins” error into diagnostic output, while:

  • Still throwing when the candidate plugin’s own bundle.urls intersect any extended plugin’s URLs (real duplicate codebase for the plugin itself).
  • Still running JarHell.checkJarHell on:
    • The growing union of extended-plugins’ URLs, and
    • The union of those URLs plus the bundle’s own URLs, and
    • The plugin+core union later in the method.

This cleanly solves the “multiple plugins extend the same ancestor/module” diamond case without weakening actual jar-hell protection.

If you expect many such configurations in production, you might consider downgrading this to debug once the behavior is well validated to avoid noisy logs, but info is reasonable initially for visibility.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 468f944 and d4e646b.

📒 Files selected for processing (2)
  • CHANGELOG.md (1 hunks)
  • server/src/main/java/org/opensearch/plugins/PluginsService.java (1 hunks)
🔇 Additional comments (1)
CHANGELOG.md (1)

36-36: Changelog entry accurately documents the behavioral change

The new “Relax jar hell check…” bullet on Line [36] is clear, correctly scoped to extended plugins sharing transitive dependencies, and links to the right PR. No further edits needed.

Signed-off-by: Karen X <karenxyr@gmail.com>
@karenyrx karenyrx marked this pull request as ready for review December 19, 2025 20:44
@karenyrx karenyrx requested a review from a team as a code owner December 19, 2025 20:44
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for 08166c6: 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
Copy Markdown
Contributor

❌ Gradle check result for 08166c6: 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
Copy Markdown
Contributor

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

Signed-off-by: Karen X <karenxyr@gmail.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
server/src/test/java/org/opensearch/plugins/PluginsServiceTests.java (1)

558-558: Prefer hamcrest matcher for consistency.

The file predominantly uses hamcrest matchers (e.g., line 668, line 961). Consider using assertThat(deps, notNullValue()) instead of assertNotNull(deps) to maintain consistency with the rest of the test file.

🔎 Suggested change
-        assertNotNull(deps);
+        assertThat(deps, notNullValue());
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 08166c6 and 5ef379c.

📒 Files selected for processing (1)
  • server/src/test/java/org/opensearch/plugins/PluginsServiceTests.java (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
server/src/test/java/org/opensearch/plugins/PluginsServiceTests.java (2)
server/src/main/java/org/opensearch/plugins/PluginsService.java (1)
  • PluginsService (91-894)
libs/common/src/main/java/org/opensearch/common/bootstrap/JarHell.java (1)
  • JarHell (77-323)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
  • GitHub Check: gradle-check
  • GitHub Check: precommit (25, ubuntu-24.04-arm)
  • GitHub Check: precommit (25, macos-15-intel)
  • GitHub Check: precommit (21, windows-2025, true)
  • GitHub Check: precommit (25, macos-15)
  • GitHub Check: precommit (25, windows-latest)
  • GitHub Check: precommit (21, macos-15-intel)
  • GitHub Check: precommit (21, windows-latest)
  • GitHub Check: precommit (21, ubuntu-24.04-arm)
  • GitHub Check: precommit (25, ubuntu-latest)
  • GitHub Check: precommit (21, ubuntu-latest)
  • GitHub Check: precommit (21, macos-15)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: Analyze (java)
  • GitHub Check: detect-breaking-change
🔇 Additional comments (1)
server/src/test/java/org/opensearch/plugins/PluginsServiceTests.java (1)

554-559: Test correctly reflects the relaxed jar-hell behavior.

The updated test properly verifies that shared transitive dependencies (diamond dependency scenario) no longer throw an exception and that the transitive URL tracking still functions correctly. The assertions confirm both the plugin's own JAR and the shared dependency JAR are included in the transitive dependency set.

@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for 5ef379c: 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
Copy Markdown
Contributor

❌ Gradle check result for 5ef379c: 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
Copy Markdown
Contributor

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

@github-actions
Copy link
Copy Markdown
Contributor

❕ Gradle check result for 5ef379c: 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
Copy Markdown

codecov bot commented Dec 20, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 73.27%. Comparing base (01b48c3) to head (5ef379c).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##               main   #20103      +/-   ##
============================================
+ Coverage     73.25%   73.27%   +0.02%     
- Complexity    71790    71792       +2     
============================================
  Files          5795     5795              
  Lines        328299   328300       +1     
  Branches      47279    47279              
============================================
+ Hits         240489   240556      +67     
+ Misses        68471    68421      -50     
+ Partials      19339    19323      -16     

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

@karenyrx karenyrx merged commit 84bc68e into opensearch-project:main Dec 20, 2025
38 of 44 checks passed
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
… dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
… dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
… dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
… dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
… dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
… dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
bharath-techie pushed a commit that referenced this pull request Jan 19, 2026
* Add preserve_dots paramater to ObjectMapper

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Extend RootObjectMapper to support preserve_dots

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Implement flat field parsing in DocumentParser

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Implement validation in MapperService

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Add index template support for preserve_dots tests

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* error handling with descriptive messages

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing redundancy

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more edge cases, autoflatten and test cases

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more edge cases, autoflatten and test cases

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding autoflattening at nested level as well

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing gradle spotless checks

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Stab at optimizing the code via removing redundant code and fixing multiple functions

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing splitPathRespectingDisableObjects and trying to achieve it through existing getMapper function

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Revert "Reduction of if else statements by extracting conditional logic into focused methods"

This reverts commit 9ca7e6d.

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* [Plugins] Relax jar hell check when extended plugins share transitive dependencies (#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>

* Reverting change in CHANGELOG.md

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Add integ test for simulating node join left event when data node clu… (#19907)

* Add integration test for simulating node join left event when data node cluster state publication lag because the cluster applier thread being busy.

Signed-off-by: Swetha Guptha <gupthasg@amazon.com>
Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding few more UTs in DocumentParserTests and ObjectMapperTests for code patch coverage

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding changes in CHANGELOG.md

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more tests for code patch coverage for DocumentParser and ObjectMapper

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow1

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow2

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow3

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more tests for code patch coverage for DocumentParser and ObjectMapper second round and refactoring of code especially dynamic update portion

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing dead end code from Document Parser related to parseArray and parseObject

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow4

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow4

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow5

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow6

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow6

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow7

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow8

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing breaking changes in ObjectMapper builder method

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing spotless checks

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow9

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow9

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Handling v2 templates for dotted field feature and stab at using existing methods in switch case

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Handling v2 templates for dotted field feature and stab at using existing methods in switch case

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing org.opensearch.indices.template.SimpleIndexTemplateIT IT

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing array mapping  with nested disable_objects as true

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Addressed review comments and removed redundant code

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

---------

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>
Signed-off-by: mohit10011999 <pinkijyoti1995@gmail.com>
Signed-off-by: Karen X <karenxyr@gmail.com>
Signed-off-by: Swetha Guptha <gupthasg@amazon.com>
Co-authored-by: Mohit Kumar <mohitamg@amazon.com>
Co-authored-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
Co-authored-by: Swetha Guptha <gupthasg@amazon.com>
tanik98 pushed a commit to tanik98/OpenSearch that referenced this pull request Feb 18, 2026
… dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
tanyabti pushed a commit to tanyabti/OpenSearch that referenced this pull request Feb 24, 2026
…rch-project#19958)

* Add preserve_dots paramater to ObjectMapper

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Extend RootObjectMapper to support preserve_dots

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Implement flat field parsing in DocumentParser

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Implement validation in MapperService

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Add index template support for preserve_dots tests

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* error handling with descriptive messages

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing redundancy

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more edge cases, autoflatten and test cases

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more edge cases, autoflatten and test cases

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding autoflattening at nested level as well

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing gradle spotless checks

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Stab at optimizing the code via removing redundant code and fixing multiple functions

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing splitPathRespectingDisableObjects and trying to achieve it through existing getMapper function

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Revert "Reduction of if else statements by extracting conditional logic into focused methods"

This reverts commit 9ca7e6d.

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* [Plugins] Relax jar hell check when extended plugins share transitive dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>

* Reverting change in CHANGELOG.md

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Add integ test for simulating node join left event when data node clu… (opensearch-project#19907)

* Add integration test for simulating node join left event when data node cluster state publication lag because the cluster applier thread being busy.

Signed-off-by: Swetha Guptha <gupthasg@amazon.com>
Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding few more UTs in DocumentParserTests and ObjectMapperTests for code patch coverage

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding changes in CHANGELOG.md

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more tests for code patch coverage for DocumentParser and ObjectMapper

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow1

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow2

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow3

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more tests for code patch coverage for DocumentParser and ObjectMapper second round and refactoring of code especially dynamic update portion

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing dead end code from Document Parser related to parseArray and parseObject

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow4

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow4

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow5

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow6

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow6

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow7

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow8

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing breaking changes in ObjectMapper builder method

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing spotless checks

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow9

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow9

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Handling v2 templates for dotted field feature and stab at using existing methods in switch case

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Handling v2 templates for dotted field feature and stab at using existing methods in switch case

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing org.opensearch.indices.template.SimpleIndexTemplateIT IT

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing array mapping  with nested disable_objects as true

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Addressed review comments and removed redundant code

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

---------

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>
Signed-off-by: mohit10011999 <pinkijyoti1995@gmail.com>
Signed-off-by: Karen X <karenxyr@gmail.com>
Signed-off-by: Swetha Guptha <gupthasg@amazon.com>
Co-authored-by: Mohit Kumar <mohitamg@amazon.com>
Co-authored-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
Co-authored-by: Swetha Guptha <gupthasg@amazon.com>
tanyabti pushed a commit to tanyabti/OpenSearch that referenced this pull request Feb 24, 2026
…rch-project#19958)

* Add preserve_dots paramater to ObjectMapper

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Extend RootObjectMapper to support preserve_dots

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Implement flat field parsing in DocumentParser

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Implement validation in MapperService

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Add index template support for preserve_dots tests

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* error handling with descriptive messages

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing redundancy

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more edge cases, autoflatten and test cases

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more edge cases, autoflatten and test cases

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding autoflattening at nested level as well

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing gradle spotless checks

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Stab at optimizing the code via removing redundant code and fixing multiple functions

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing splitPathRespectingDisableObjects and trying to achieve it through existing getMapper function

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Reduction of if else statements by extracting conditional logic into focused methods

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Revert "Reduction of if else statements by extracting conditional logic into focused methods"

This reverts commit 9ca7e6d.

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* [Plugins] Relax jar hell check when extended plugins share transitive dependencies (opensearch-project#20103)

* plugin service allow multiple extended plugins both extend the same module/plugin

Signed-off-by: Karen X <karenxyr@gmail.com>

* fix tests

Signed-off-by: Karen X <karenxyr@gmail.com>

---------

Signed-off-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>

* Reverting change in CHANGELOG.md

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Add integ test for simulating node join left event when data node clu… (opensearch-project#19907)

* Add integration test for simulating node join left event when data node cluster state publication lag because the cluster applier thread being busy.

Signed-off-by: Swetha Guptha <gupthasg@amazon.com>
Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding few more UTs in DocumentParserTests and ObjectMapperTests for code patch coverage

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding changes in CHANGELOG.md

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more tests for code patch coverage for DocumentParser and ObjectMapper

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow1

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow2

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow3

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Adding more tests for code patch coverage for DocumentParser and ObjectMapper second round and refactoring of code especially dynamic update portion

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Removing dead end code from Document Parser related to parseArray and parseObject

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow4

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow4

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow5

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow6

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow6

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow7

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow8

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing breaking changes in ObjectMapper builder method

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing spotless checks

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow9

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Trigger workflow9

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Handling v2 templates for dotted field feature and stab at using existing methods in switch case

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Handling v2 templates for dotted field feature and stab at using existing methods in switch case

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing org.opensearch.indices.template.SimpleIndexTemplateIT IT

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Fixing array mapping  with nested disable_objects as true

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

* Addressed review comments and removed redundant code

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>

---------

Signed-off-by: Mohit Kumar <mohitamg@amazon.com>
Signed-off-by: mohit10011999 <pinkijyoti1995@gmail.com>
Signed-off-by: Karen X <karenxyr@gmail.com>
Signed-off-by: Swetha Guptha <gupthasg@amazon.com>
Co-authored-by: Mohit Kumar <mohitamg@amazon.com>
Co-authored-by: Karen X <karenxyr@gmail.com>
Co-authored-by: karenx <karenx@uber.com>
Co-authored-by: Swetha Guptha <gupthasg@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working Plugins

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Jar Hell Error When Multiple Plugins Extend the Same Module/Plugin

3 participants