Skip to content

bug fix for Restore with Index Sort (#20073)#20284

Merged
andrross merged 5 commits intoopensearch-project:mainfrom
vishdivs:main
Dec 19, 2025
Merged

bug fix for Restore with Index Sort (#20073)#20284
andrross merged 5 commits intoopensearch-project:mainfrom
vishdivs:main

Conversation

@vishdivs
Copy link
Copy Markdown
Contributor

@vishdivs vishdivs commented Dec 18, 2025

Description

This change is to fix the bug introduced by #18536, which breaks the restore flow for Index Sort enabled indexes, as it by defaults add the Parent Fields in the index fields.

  • This change adds the Parent Fields to the unprunned files call done in the restore flow.

Related Issues

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

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

  • New Features

    • Index file cleanup can optionally set a parent-field for newer sorted indexes to support index-sort scenarios.
  • Bug Fixes

    • Fixed snapshot/restore behavior for indexes using index sort so restores remain consistent with sorted index data.
  • Tests

    • Expanded tests for cleanup and restore flows with and without index sort, including failure scenarios and parent-field variations.
  • Documentation

    • CHANGELOG updated noting the fix for index-sort restore flow.

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

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Dec 18, 2025

Walkthrough

Pruning APIs were updated to accept an explicit boolean to enable a Lucene parent field. Store.shouldSetParentField() was added to decide when to enable the parent field. Call sites and tests were updated to pass and exercise both index-sort and non-index-sort paths.

Changes

Cohort / File(s) Summary
Core pruning API
server/src/main/java/org/opensearch/common/lucene/Lucene.java
pruneUnreferencedFiles signature changed to accept boolean isParentFieldEnabled; IndexWriterConfig may have setParentField(Lucene.PARENT_FIELD) applied when true and is used to construct the IndexWriter for cleanup.
Store decision logic
server/src/main/java/org/opensearch/index/store/Store.java
New public method public boolean shouldSetParentField() added; returns true when index created version ≥ 3.2.0 and index sort is enabled.
Call sites and cleanup flow
server/src/main/java/org/opensearch/index/engine/Engine.java, server/src/main/java/org/opensearch/repositories/blobstore/FileRestoreContext.java
Callers updated to build/configure IndexWriterConfig and pass isParentFieldEnabled (from store.shouldSetParentField()) into pruning; Engine cleanup refactored to use configurable IWCs, optionally set the parent field, and log exceptions during cleanup.
Tests — pruning, engine cleanup, snapshot/restore
server/src/test/java/org/opensearch/common/lucene/LuceneTests.java, server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java, server/src/test/java/org/opensearch/repositories/fs/FsRepositoryTests.java
Tests added/renamed to cover both index-sort and non-index-sort pruning paths, helper introduced in LuceneTests, new test for parent-field exception, new InternalEngineTests test for cleanup-on-merge-failure with index sort, and FsRepositoryTests additions to validate snapshot/restore with index sort and parent-field-aware indexing/deletion.
Changelog
CHANGELOG.md
Added entry referencing “Fix snapshot restore when an index sort is present” (PR #20284).

Sequence Diagram

sequenceDiagram
    participant Caller
    participant Engine
    participant Store
    participant Lucene

    Caller->>Engine: request cleanUpUnreferencedFiles(...)
    Engine->>Store: shouldSetParentField()
    Store-->>Engine: isParentFieldEnabled
    Engine->>Engine: build IndexWriterConfig (iwc)
    alt isParentFieldEnabled == true
        Engine->>Engine: iwc.setParentField(PARENT_FIELD)
    end
    Engine->>Lucene: pruneUnreferencedFiles(segmentsFile, dir, isParentFieldEnabled)
    Lucene->>Lucene: create IndexWriter with provided iwc
    Lucene->>Lucene: remove unreferenced files / write segments
    Lucene-->>Engine: return SegmentInfos
    Engine->>Engine: close IndexWriter / finalize cleanup
    Engine-->>Caller: cleanup complete (or logged error)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • Review focus:
    • server/src/main/java/org/opensearch/common/lucene/Lucene.java — API change, IndexWriterConfig usage, parent-field application.
    • server/src/main/java/org/opensearch/index/store/Store.java — version and index-sort detection logic.
    • server/src/main/java/org/opensearch/index/engine/Engine.java — IndexWriterConfig construction, cleanup paths, exception handling.
    • Tests (LuceneTests.java, InternalEngineTests.java, FsRepositoryTests.java) — coverage for both index-sort and non-index-sort paths and assertions.

Suggested labels

lucene

Suggested reviewers

  • msfroh
  • mch2
  • dbwiddis
  • ashking94
  • Bukhtawar
  • owaiskazi19
  • saratvemulapalli
  • cwperks
  • kotwanikunal
  • sohami
  • jed326
  • anasalkouz
  • Rishikesh1159
  • CEHENKLE
  • gbbafna
  • reta
  • sachinpkale
  • shwetathareja

"I nibbled at segments, hopped through the leaves,
I nudged a parent flag beneath the sheaves.
Files pruned like carrots, tidy and bright,
I danced through tests in the soft moonlight.
— a little rabbit 🐇"

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 8.70% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main bug fix purpose: resolving a restore issue with Index Sort enabled indexes.
Description check ✅ Passed The description identifies the root cause (bug from PR #18536), explains the issue (Parent Fields breaking restore), and states the solution (adding Parent Fields to unpruned files). However, the Related Issues section is incomplete with placeholder text.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 51bb712 and c58319a.

📒 Files selected for processing (1)
  • CHANGELOG.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • CHANGELOG.md
⏰ 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: check-files
  • GitHub Check: precommit (25, ubuntu-24.04-arm)
  • GitHub Check: precommit (21, macos-15)
  • GitHub Check: precommit (21, windows-2025, true)
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: precommit (25, macos-15-intel)
  • GitHub Check: precommit (25, macos-15)
  • GitHub Check: precommit (21, windows-latest)
  • GitHub Check: precommit (21, ubuntu-latest)
  • GitHub Check: precommit (21, macos-15-intel)
  • GitHub Check: precommit (21, ubuntu-24.04-arm)
  • GitHub Check: precommit (25, ubuntu-latest)
  • GitHub Check: precommit (25, windows-latest)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: Analyze (java)
  • GitHub Check: detect-breaking-change

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Signed-off-by: Divyansh Sharma <vishdivs@amazon.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: 1

🧹 Nitpick comments (2)
server/src/main/java/org/opensearch/index/engine/Engine.java (1)

1363-1377: IndexWriterConfig in cleanUpUnreferencedFiles is aligned with new parent-field behavior

Using an explicit IndexWriterConfig and gating iwc.setParentField on store.shouldSetParentField() keeps this cleanup path consistent with the rest of the index-writer usage while still being best-effort (exceptions only logged). The implementation looks correct.

server/src/main/java/org/opensearch/index/store/Store.java (1)

231-237: Unify parent-field gating logic to use cached flags

The gating itself looks correct (require index version ≥ 3.2.0 and index sort enabled), and newIndexWriterConfig and shouldSetParentField() are logically consistent. To avoid duplicated version checks and keep behavior from drifting, you could simplify:

public boolean shouldSetParentField() {
    return isParentFieldEnabledVersion && isIndexSortEnabled;
}

and keep using the same flags in newIndexWriterConfig.

Also applies to: 256-258, 1978-1988

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f31300f and a9784dd.

📒 Files selected for processing (5)
  • server/src/main/java/org/opensearch/common/lucene/Lucene.java (2 hunks)
  • server/src/main/java/org/opensearch/index/engine/Engine.java (1 hunks)
  • server/src/main/java/org/opensearch/index/store/Store.java (1 hunks)
  • server/src/main/java/org/opensearch/repositories/blobstore/FileRestoreContext.java (1 hunks)
  • server/src/test/java/org/opensearch/common/lucene/LuceneTests.java (3 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
server/src/main/java/org/opensearch/repositories/blobstore/FileRestoreContext.java (1)
server/src/main/java/org/opensearch/common/lucene/Lucene.java (1)
  • Lucene (114-992)
⏰ 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). (9)
  • GitHub Check: gradle-check
  • GitHub Check: copy-issue-labels
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: Analyze (java)
🔇 Additional comments (2)
server/src/main/java/org/opensearch/repositories/blobstore/FileRestoreContext.java (1)

201-209: Propagating parent-field configuration into restore pruning looks correct

Wiring store.shouldSetParentField() into Lucene.pruneUnreferencedFiles keeps the restore cleanup path consistent with the store’s index writer configuration, without changing error handling or control flow. No issues spotted here.

server/src/main/java/org/opensearch/common/lucene/Lucene.java (1)

200-235: Boolean parameterization of pruneUnreferencedFiles is consistent and backward-safe

Adding isParentFieldEnabled and only calling iwc.setParentField when true preserves the previous behavior when false, while enabling the new parent-field-aware path for callers that opt in via Store.shouldSetParentField(). Locking and pruning semantics remain unchanged.

@github-actions
Copy link
Copy Markdown
Contributor

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

@andrross
Copy link
Copy Markdown
Member

See my comment here: #20073 (comment)

Signed-off-by: Divyansh Sharma <vishdivs@amazon.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: 1

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a9784dd and 885a4d5.

📒 Files selected for processing (2)
  • server/src/test/java/org/opensearch/common/lucene/LuceneTests.java (4 hunks)
  • server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
server/src/test/java/org/opensearch/common/lucene/LuceneTests.java (1)
server/src/main/java/org/opensearch/common/lucene/Lucene.java (1)
  • Lucene (114-992)
⏰ 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: precommit (21, ubuntu-latest)
  • GitHub Check: precommit (25, ubuntu-24.04-arm)
  • GitHub Check: precommit (25, macos-15-intel)
  • GitHub Check: precommit (25, macos-15)
  • GitHub Check: precommit (21, windows-2025, true)
  • GitHub Check: precommit (25, ubuntu-latest)
  • GitHub Check: precommit (25, windows-latest)
  • GitHub Check: precommit (21, macos-15-intel)
  • GitHub Check: precommit (21, macos-15)
  • GitHub Check: precommit (21, ubuntu-24.04-arm)
  • GitHub Check: precommit (21, windows-latest)
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: detect-breaking-change
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: Analyze (java)
  • GitHub Check: check-files
🔇 Additional comments (5)
server/src/test/java/org/opensearch/common/lucene/LuceneTests.java (5)

63-63: LGTM!

The Sort import is required for configuring index sort in the test methods.


160-169: LGTM!

The test correctly sets up an index with parent field and index sort enabled, then exercises the pruning path with isParentFieldEnabled=true. This properly validates the index-sort scenario that was affected by the bug in PR #18536.


171-178: LGTM! Previous review concern addressed.

This test correctly exercises the isParentFieldEnabled=false path by omitting both parent field and index sort configuration. This resolves the concern raised in the previous review that both test variants were exercising the same code path.


180-180: LGTM!

The helper method signature correctly accepts the isParentFieldEnabled parameter and properly threads it through to the Lucene.pruneUnreferencedFiles call. This enables both test variants to exercise their respective code paths.

Also applies to: 211-211


232-263: LGTM! Good defensive test coverage.

This test verifies that attempting to prune an index created with parent field enabled while passing isParentFieldEnabled=false correctly throws an exception. This validates proper error handling for configuration mismatches during restore operations.

Minor observation: The test uses TextField.Store.YES consistently, while other test methods use random().nextBoolean() ? Field.Store.YES : Field.Store.NO. This difference is acceptable since the focus here is on testing the exception path rather than general pruning behavior.

@github-actions
Copy link
Copy Markdown
Contributor

✅ Gradle check result for 885a4d5: SUCCESS

@codecov
Copy link
Copy Markdown

codecov bot commented Dec 18, 2025

Codecov Report

❌ Patch coverage is 94.11765% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 73.21%. Comparing base (930ae74) to head (c58319a).
⚠️ Report is 12 commits behind head on main.

Files with missing lines Patch % Lines
...rc/main/java/org/opensearch/index/store/Store.java 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##               main   #20284   +/-   ##
=========================================
  Coverage     73.20%   73.21%           
- Complexity    71745    71749    +4     
=========================================
  Files          5795     5795           
  Lines        328304   328302    -2     
  Branches      47283    47281    -2     
=========================================
+ Hits         240334   240360   +26     
- Misses        68663    68687   +24     
+ Partials      19307    19255   -52     

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

@github-actions
Copy link
Copy Markdown
Contributor

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

@vishdivs vishdivs requested a review from andrross December 19, 2025 10:23
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: 1

🧹 Nitpick comments (3)
server/src/test/java/org/opensearch/repositories/fs/FsRepositoryTests.java (3)

224-351: Consider refactoring to reduce code duplication.

The test testSnapshotAndRestoreWithIndexSort() is ~85% duplicate of testSnapshotAndRestore() (lines 99-222), with only these differences:

  • Parent field helpers are used (indexDocsWithParentField, deleteRandomDocWithParentField)
  • Index sort field configuration is added

Consider extracting the common snapshot/restore logic into a parameterized helper method to improve maintainability and reduce the ~128 lines of duplication.

💡 Refactoring approach

Extract a shared helper method that accepts parameters for whether to use parent field and index sort configuration:

private void testSnapshotAndRestoreInternal(
    boolean withParentField,
    Settings additionalIndexSettings
) throws IOException, InterruptedException {
    // Common snapshot/restore logic
    // Use withParentField to choose between indexDocs/indexDocsWithParentField
    // Merge additionalIndexSettings into index settings
}

public void testSnapshotAndRestore() throws IOException, InterruptedException {
    testSnapshotAndRestoreInternal(false, Settings.EMPTY);
}

public void testSnapshotAndRestoreWithIndexSort() throws IOException, InterruptedException {
    Settings indexSortSettings = Settings.builder()
        .put("index.sort.field", "foo1")
        .build();
    testSnapshotAndRestoreInternal(true, indexSortSettings);
}

411-431: LGTM with optional refactoring suggestion.

The method correctly configures the parent field (line 423) for deleting documents in index-sort scenarios. However, this is ~95% duplicate of deleteRandomDoc() (lines 390-409).

💡 Optional refactoring to reduce duplication

Consider consolidating both methods:

private void deleteRandomDoc(Directory directory) throws IOException {
    deleteRandomDocInternal(directory, null);
}

private void deleteRandomDocWithParentField(Directory directory) throws IOException {
    deleteRandomDocInternal(directory, Lucene.PARENT_FIELD);
}

private void deleteRandomDocInternal(Directory directory, String parentField) throws IOException {
    IndexWriterConfig config = newIndexWriterConfig(random(), new MockAnalyzer(random()))
        .setCodec(TestUtil.getDefaultCodec())
        .setMergePolicy(new FilterMergePolicy(NoMergePolicy.INSTANCE) {
            @Override
            public boolean keepFullyDeletedSegment(IOSupplier<CodecReader> readerIOSupplier) {
                return true;
            }
        });
    if (parentField != null) {
        config.setParentField(parentField);
    }
    try (IndexWriter writer = new IndexWriter(directory, config)) {
        final int numDocs = writer.getDocStats().numDocs;
        writer.deleteDocuments(new Term("id", "" + randomIntBetween(0, numDocs - 1)));
        writer.commit();
        assertEquals(writer.getDocStats().numDocs, numDocs - 1);
    }
}

459-484: LGTM with optional refactoring suggestion.

The method correctly configures the parent field (line 464) for indexing documents in index-sort scenarios. The use of "foo1" as the field name (line 473) aligns with the sort field configured in the test.

💡 Optional refactoring to reduce duplication

Similar to deleteRandomDocWithParentField, consider consolidating with indexDocs():

private int indexDocs(Directory directory) throws IOException {
    return indexDocsInternal(directory, null, "body");
}

private int indexDocsWithParentField(Directory directory) throws IOException {
    return indexDocsInternal(directory, Lucene.PARENT_FIELD, "foo1");
}

private int indexDocsInternal(Directory directory, String parentField, String textFieldName) throws IOException {
    IndexWriterConfig config = newIndexWriterConfig(random(), new MockAnalyzer(random()))
        .setCodec(TestUtil.getDefaultCodec());
    if (parentField != null) {
        config.setParentField(parentField);
    }
    try (IndexWriter writer = new IndexWriter(directory, config)) {
        int docs = 1 + random().nextInt(100);
        for (int i = 0; i < docs; i++) {
            Document doc = new Document();
            doc.add(new StringField("id", "" + i, random().nextBoolean() ? Field.Store.YES : Field.Store.NO));
            doc.add(
                new TextField(
                    textFieldName,
                    TestUtil.randomRealisticUnicodeString(random()),
                    random().nextBoolean() ? Field.Store.YES : Field.Store.NO
                )
            );
            doc.add(new SortedDocValuesField("dv", new BytesRef(TestUtil.randomRealisticUnicodeString(random()))));
            writer.addDocument(doc);
        }
        writer.commit();
        return docs;
    }
}
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 885a4d5 and 27ee583.

📒 Files selected for processing (3)
  • CHANGELOG.md (1 hunks)
  • server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java (1 hunks)
  • server/src/test/java/org/opensearch/repositories/fs/FsRepositoryTests.java (3 hunks)
✅ Files skipped from review due to trivial changes (1)
  • CHANGELOG.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java
🧰 Additional context used
🧬 Code graph analysis (1)
server/src/test/java/org/opensearch/repositories/fs/FsRepositoryTests.java (1)
server/src/main/java/org/opensearch/common/lucene/Lucene.java (1)
  • Lucene (114-992)
⏰ 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 (21, windows-2025, true)
  • GitHub Check: precommit (25, macos-15-intel)
  • GitHub Check: precommit (21, macos-15-intel)
  • GitHub Check: precommit (25, ubuntu-latest)
  • GitHub Check: precommit (25, macos-15)
  • GitHub Check: precommit (21, ubuntu-24.04-arm)
  • GitHub Check: precommit (25, windows-latest)
  • GitHub Check: precommit (21, ubuntu-latest)
  • GitHub Check: precommit (25, ubuntu-24.04-arm)
  • GitHub Check: precommit (21, macos-15)
  • GitHub Check: precommit (21, windows-latest)
  • GitHub Check: Analyze (java)
  • GitHub Check: assemble (21, ubuntu-latest)
  • GitHub Check: assemble (25, ubuntu-latest)
  • GitHub Check: assemble (21, windows-latest)
  • GitHub Check: assemble (21, ubuntu-24.04-arm)
  • GitHub Check: assemble (25, windows-latest)
  • GitHub Check: assemble (25, ubuntu-24.04-arm)
  • GitHub Check: detect-breaking-change

@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for 27ee583: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Divyansh Sharma <vishdivs@amazon.com>
@github-actions
Copy link
Copy Markdown
Contributor

❌ Gradle check result for 51bb712: FAILURE

Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Signed-off-by: Andrew Ross <andrross@amazon.com>
@github-actions
Copy link
Copy Markdown
Contributor

✅ Gradle check result for c58319a: SUCCESS

@andrross andrross merged commit a652ff6 into opensearch-project:main Dec 19, 2025
35 checks passed
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
…earch-project#20284)

Signed-off-by: Divyansh Sharma <vishdivs@amazon.com>
Signed-off-by: Andrew Ross <andrross@amazon.com>
Co-authored-by: Divyansh Sharma <vishdivs@amazon.com>
Co-authored-by: Andrew Ross <andrross@amazon.com>
mohit10011999 pushed a commit to mohit10011999/OpenSearch that referenced this pull request Dec 30, 2025
…earch-project#20284)

Signed-off-by: Divyansh Sharma <vishdivs@amazon.com>
Signed-off-by: Andrew Ross <andrross@amazon.com>
Co-authored-by: Divyansh Sharma <vishdivs@amazon.com>
Co-authored-by: Andrew Ross <andrross@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants