Skip to content

Prevent criteria update for context aware indices - #20250

Merged
Bukhtawar merged 1 commit into
opensearch-project:mainfrom
RS146BIJAY:fail-criteria-update
Feb 2, 2026
Merged

Prevent criteria update for context aware indices#20250
Bukhtawar merged 1 commit into
opensearch-project:mainfrom
RS146BIJAY:fail-criteria-update

Conversation

@RS146BIJAY

@RS146BIJAY RS146BIJAY commented Dec 16, 2025

Copy link
Copy Markdown
Contributor

Description

This modification prevents updates to fields that determine a document's grouping criteria. By blocking such updates, we eliminate the need for complex version synchronization across multiple IndexWriters. This approach simplifies version management, since the latest version of a document will always reside in the group-specific writer marked for refresh, while the previous version may be either in old or parent IndexWriter.

Summary by CodeRabbit

  • Bug Fixes
    • Prevent grouping criteria updates for context-aware enabled indices. System now validates and blocks operations that would attempt to modify existing grouping criteria, ensuring consistency across index operations.

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

@coderabbitai

coderabbitai Bot commented Dec 16, 2025

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto incremental reviews are disabled on this repository.

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

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

  • 🔍 Trigger a full review
📝 Walkthrough

Walkthrough

This PR introduces validation to prevent updating grouping criteria in context-aware indices. It extends VersionsAndSeqNoResolver.loadDocIdAndVersion with a currentCriteria parameter to validate against previously stored criteria, enforcing immutability of grouping criteria except when documents are tombstones.

Changes

Cohort / File(s) Summary
Documentation
CHANGELOG.md
Added entry documenting the fix: "Prevent criteria update for context aware indices."
Core Validation Logic
server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java
Extended loadDocIdAndVersion signature to accept currentCriteria parameter. When non-zero version found and criteria provided, unwraps leaf reader to retrieve previous criteria from CriteriaBasedCodec.BUCKET_NAME, asserts presence, and throws UnsupportedOperationException if mismatch detected.
Writer Public APIs
server/src/main/java/org/opensearch/index/engine/CompositeIndexWriter.java, server/src/main/java/org/opensearch/index/engine/DocumentIndexWriter.java, server/src/main/java/org/opensearch/index/engine/LuceneIndexWriter.java
Added public methods getCurrentCriteria(BytesRef uid) and getCriteriaUnderLock(BytesRef uid) to expose criteria access. CompositeIndexWriter implements full lookup with fallback to old map; LuceneIndexWriter returns null stub; DocumentIndexWriter defines interface contract.
Engine Integration
server/src/main/java/org/opensearch/index/engine/Engine.java
Updated two call sites in getMaxSeqNoFromSearcher and getFromSearcher to pass null for new currentCriteria parameter.
Validation Integration
server/src/main/java/org/opensearch/index/engine/InternalEngine.java
Extracts grouping criteria from Index operations and passes to loadDocIdAndVersion. Post-load, retrieves previous criteria via documentIndexWriter.getCriteriaUnderLock and throws UnsupportedOperationException if criteria differ for non-tombstone versions.
Test Cases & Fixtures
server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java, server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java, test/framework/src/main/java/org/opensearch/index/engine/EngineTestCase.java
Updated VersionsTests call sites with new null parameter. Added testDoesNotAllowGroupingCriteriaUpdate and testAllowGroupingCriteriaUpdateWithTombstone test cases gated by @LockFeatureFlag(CONTEXT_AWARE_MIGRATION_EXPERIMENTAL_FLAG). Modified testContextSpecificDocument helper to accept parameterized groupingCriteria.

Sequence Diagram(s)

sequenceDiagram
    participant InternalEngine
    participant VersionsAndSeqNoResolver
    participant CriteriaBasedCodec
    participant CompositeIndexWriter

    InternalEngine->>InternalEngine: resolveDocVersion (Index op with grouping criteria)
    InternalEngine->>InternalEngine: Extract currentCriteria from op.docs()
    InternalEngine->>VersionsAndSeqNoResolver: loadDocIdAndVersion(reader, term, ..., currentCriteria)
    
    rect rgb(200, 220, 240)
    Note over VersionsAndSeqNoResolver: New Validation Flow
    VersionsAndSeqNoResolver->>VersionsAndSeqNoResolver: Find doc version
    alt Non-zero version & criteria provided
        VersionsAndSeqNoResolver->>CriteriaBasedCodec: Unwrap reader & read previous criteria<br/>from BUCKET_NAME
        CriteriaBasedCodec-->>VersionsAndSeqNoResolver: previousCriteria
        alt previousCriteria != currentCriteria
            VersionsAndSeqNoResolver->>VersionsAndSeqNoResolver: throw UnsupportedOperationException
        else Match
            VersionsAndSeqNoResolver-->>InternalEngine: DocIdAndVersion
        end
    else No criteria or tombstone
        VersionsAndSeqNoResolver-->>InternalEngine: DocIdAndVersion
    end
    end

    InternalEngine->>InternalEngine: Post-load validation for Index ops
    alt Non-tombstone version (> 0)
        InternalEngine->>CompositeIndexWriter: getCriteriaUnderLock(uid)
        CompositeIndexWriter-->>InternalEngine: previousCriteria (or null)
        alt previousCriteria exists & differs
            InternalEngine->>InternalEngine: throw UnsupportedOperationException
        end
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

enhancement, Indexing:Replication

Suggested reviewers

  • mch2
  • andrross
  • dbwiddis
  • sachinpkale
  • shwetathareja
  • reta
  • Bukhtawar
  • owaiskazi19
  • kotwanikunal
  • saratvemulapalli

Poem

🐰 Criteria, dear criteria, must never shift or change,
For context-aware indices guard against the strange,
With validation locks and tombstones as escape,
Your grouping stays constant, in perfect, stable shape!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 21.21% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description check ❓ Inconclusive The description provides the rationale and context for the change, but lacks required template sections like Related Issues and a completed Check List. Complete the missing sections: add a Related Issues reference and check off the applicable items in the Check List to confirm testing and documentation updates.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: preventing criteria updates for context-aware indices, which aligns with the core functionality added across multiple files.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

@github-actions

Copy link
Copy Markdown
Contributor

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

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
server/src/main/java/org/opensearch/index/engine/CompositeIndexWriter.java (1)

625-645: Fix criteria lookup to use the correct map instance instead of always reading from current

In getIndexWriterForIdFromLookup, you hold the read lock for indexWriterLookup but then call getCurrentCriteria(uid), which always reads from liveIndexWriterDeletesMap.current. When indexWriterLookup is liveIndexWriterDeletesMap.old (via getIndexWriterForIdFromOld), this creates two problems:

  1. Lock doesn't protect the data being read: You lock the old map but read from the current map, leaving the criteria lookup unprotected.

  2. Data loss for previously-indexed documents: For a document whose last write occurred in a previous refresh cycle, its criteria exists only in old.criteria. Since getCurrentCriteria only checks current.criteria, it returns null for both old and current lookups, causing the delete to skip the child writer containing the prior version. This violates the class javadoc intent to "perform a partial soft delete...on the IndexWriters containing the previous version of the document."

Replace getCurrentCriteria(uid) with indexWriterLookup.getCriteriaForDoc(uid) to read from the map you're actually holding the lock for, or use the helper method that respects which map you're reading from:

String criteria = getCriteriaUnderLock(uid); // resolves from current then old
DisposableIndexWriter disposableIndexWriter = indexWriterLookup.getIndexWriterForCriteria(criteria);

This also applies to lines 651–668.

🧹 Nitpick comments (7)
server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java (1)

35-46: Criteria validation in loadDocIdAndVersion matches intent; consider safer reader handling and null‑attribute guard

The new currentCriteria gate and bucket comparison accurately enforce “no grouping-criteria updates” for live docs when a criteria is provided, while leaving existing behavior unchanged when currentCriteria == null.

Two refinements worth considering:

  1. Avoid hard-casting the unwrapped reader

    SegmentReader unwrappedReader = (SegmentReader) (FilterLeafReader.unwrap(leaf.reader()));

    This assumes the unwrapped reader is always a SegmentReader. To decouple from Lucene’s concrete leaf type, it would be safer and more idiomatic to use the existing helper you already rely on elsewhere (Lucene.segmentReader(...)) or a similar utility that performs the appropriate checks and unwrapping internally, instead of a direct cast.

  2. Handle missing BUCKET_NAME attributes defensively

    String prevCriteria = unwrappedReader.getSegmentInfo().info.getAttribute(CriteriaBasedCodec.BUCKET_NAME);
    assert prevCriteria != null;
    if (prevCriteria.equals(currentCriteria) == false) { ... }

    The assert won’t fire in production; if for any reason BUCKET_NAME is absent (e.g., older segments, misconfigured codec, or future changes), this becomes an NPE at the .equals call in a hot update path. If such segments are even theoretically possible, consider either:

    • Treating prevCriteria == null as “no criteria recorded yet” (skip the check), or
    • Throwing a more explicit ImmutableCriteriaException when prevCriteria is null, rather than an unchecked NPE.

These changes would make the criteria enforcement more robust to unexpected segment states without changing the intended semantics.

Also applies to: 162-189

server/src/main/java/org/opensearch/index/engine/InternalEngine.java (1)

784-796: resolveDocVersion’s criteria checks are well‑placed; consider tightening assumptions and gating

The two new checks (one when falling back to Lucene, one when hitting the version map) are consistent with the goal: prevent changing grouping criteria while still allowing normal updates where the criteria is unchanged, and allowing recreate‑after‑delete (via previousCriteria == null contract).

A few focused suggestions:

  1. Explicitly gate on context‑aware indices (optional but clearer/safer)
    Today, both branches run whenever op instanceof Index, relying on:

    • index.docs().get(0).getGroupingCriteria() returning null for non–context‑aware indices, and
    • documentIndexWriter.getCriteriaUnderLock(...) returning null in those cases.
      To decouple this method from those assumptions and avoid unnecessary work on non–context‑aware indices, consider wrapping both criteria blocks with if (isContextAwareEnabled) { ... }.
  2. Document the “first doc” assumption
    Both branches take criteria from index.docs().get(0). If the invariant is that all docs in the ParsedDocument share the same grouping criteria (which is likely for nested docs), it would help future maintainers if this is stated in a brief comment near the first usage.

  3. (Minor) Avoid recomputing currentCriteria twice
    You currently recompute currentCriteria in both the versionValue == null and else if (op instanceof Index && versionValue.version > 0) paths. You could factor it once at the top of the method for Index operations to keep things DRY, though this is purely cosmetic.

Functionally the changes look correct and align with the PR’s behavior goals; these are about making the contract and scope more explicit and maintainable.

Also applies to: 805-817

server/src/main/java/org/opensearch/index/engine/ImmutableCriteriaException.java (1)

1-41: ImmutableCriteriaException definition is appropriate for the hot update path

The class shape (OpenSearchException subclass, streaming constructor, fillInStackTrace override, and BAD_REQUEST status) is consistent with other engine exceptions and well‑suited for a frequently‑thrown validation error.

One minor polish you might consider: the comment in fillInStackTrace still references “VCEEs”; updating the wording to refer to immutable‑criteria exceptions would avoid confusion, but it’s non‑functional.

server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java (1)

8680-8731: New grouping-criteria immutability tests cover both forbidden and allowed cases; consider tightening assertions

The two tests cleanly validate:

  • An in-place change of grouping criteria for the same id is rejected with ImmutableCriteriaException.
  • After a delete tombstone and refresh, re‑indexing the same id with a different grouping criteria is accepted.

To make these tests more robust and self‑documenting, consider:

  • In testDoesNotAllowGroupingCriteriaUpdate, optionally asserting on the exception message (or a distinguishing property) to guard against unrelated failures being surfaced as the same type.
  • In testAllowGroupingCriteriaUpdateWithTombstone, adding a follow‑up get or search assertion that the final document for id "2" is present, so the test fails if a future change silently drops the write even though no exception is thrown.

These are test-strengthening tweaks; current behavior is reasonable as-is.

CHANGELOG.md (1)

103-103: Minor wording tweak: hyphenate “context-aware”

For consistency with other entries and standard English, consider:

- Prevent criteria update for context-aware indices ([#20250](...))
server/src/main/java/org/opensearch/index/engine/DocumentIndexWriter.java (1)

16-17: New getCriteriaUnderLock API is appropriate; consider documenting semantics

Adding String getCriteriaUnderLock(BytesRef uid) to the interface cleanly exposes grouping criteria to callers (e.g., InternalEngine) and is implemented by both LuceneIndexWriter and CompositeIndexWriter.

To make usage clearer, consider adding brief Javadoc explaining:

  • Whether null is a valid/expected return (e.g., for non–context-aware writers).
  • Any expectations about locks (e.g., must the caller already hold a keyed lock, or is it a best-effort snapshot).

Also applies to: 95-97

server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java (1)

80-81: Tests correctly adapt to the new loadDocIdAndVersion signature

Updating all loadDocIdAndVersion calls to pass null for the new currentCriteria parameter keeps existing test behaviour intact while matching the new API shape.

If not already covered in engine-level tests, consider adding a focused unit test in this suite that passes a non-null currentCriteria and asserts the expected ImmutableCriteriaException when criteria mismatch, to exercise that branch of VersionsAndSeqNoResolver.

Also applies to: 89-90, 100-101, 112-113, 116-117, 144-145, 151-152, 155-156, 175-176, 178-179, 201-202, 205-206

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e798353 and 5a273d7.

📒 Files selected for processing (13)
  • CHANGELOG.md (1 hunks)
  • server/src/main/java/org/opensearch/OpenSearchServerException.java (2 hunks)
  • server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java (3 hunks)
  • server/src/main/java/org/opensearch/index/engine/CompositeIndexWriter.java (2 hunks)
  • server/src/main/java/org/opensearch/index/engine/DocumentIndexWriter.java (2 hunks)
  • server/src/main/java/org/opensearch/index/engine/Engine.java (2 hunks)
  • server/src/main/java/org/opensearch/index/engine/ImmutableCriteriaException.java (1 hunks)
  • server/src/main/java/org/opensearch/index/engine/InternalEngine.java (2 hunks)
  • server/src/main/java/org/opensearch/index/engine/LuceneIndexWriter.java (2 hunks)
  • server/src/test/java/org/opensearch/ExceptionSerializationTests.java (2 hunks)
  • server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java (7 hunks)
  • server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java (4 hunks)
  • test/framework/src/main/java/org/opensearch/index/engine/EngineTestCase.java (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (7)
server/src/test/java/org/opensearch/ExceptionSerializationTests.java (1)
server/src/main/java/org/opensearch/index/engine/ImmutableCriteriaException.java (1)
  • ImmutableCriteriaException (22-41)
server/src/main/java/org/opensearch/index/engine/Engine.java (1)
server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java (1)
  • VersionsAndSeqNoResolver (57-210)
server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java (2)
server/src/main/java/org/opensearch/index/codec/CriteriaBasedCodec.java (1)
  • CriteriaBasedCodec (26-72)
server/src/main/java/org/opensearch/index/engine/ImmutableCriteriaException.java (1)
  • ImmutableCriteriaException (22-41)
server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java (1)
server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java (1)
  • VersionsAndSeqNoResolver (57-210)
server/src/main/java/org/opensearch/index/engine/InternalEngine.java (1)
server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java (1)
  • VersionsAndSeqNoResolver (57-210)
server/src/main/java/org/opensearch/OpenSearchServerException.java (1)
server/src/main/java/org/opensearch/index/engine/ImmutableCriteriaException.java (1)
  • ImmutableCriteriaException (22-41)
server/src/test/java/org/opensearch/common/lucene/uid/VersionsTests.java (1)
server/src/main/java/org/opensearch/common/lucene/uid/VersionsAndSeqNoResolver.java (1)
  • VersionsAndSeqNoResolver (57-210)
🪛 LanguageTool
CHANGELOG.md

[uncategorized] ~103-~103: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...l/20140)) - Prevent criteria update for context aware indices ([#20250](https://github.com/op...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

⏰ 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). (1)
  • GitHub Check: gradle-check
🔇 Additional comments (8)
server/src/main/java/org/opensearch/index/engine/Engine.java (1)

335-340: loadDocIdAndVersion wiring with new parameter looks correct

Both usages (getMaxSeqNoFromSearcher and getFromSearcher) now pass true, null, preserving prior behavior while adapting to the extended signature and intentionally skipping criteria validation on these read-only/internal paths. No issues spotted.

Also applies to: 708-708

server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java (3)

1879-1879: Updated loadDocIdAndVersion call correctly passes currentCriteria as null

Using the new 4‑arg overload with null for currentCriteria keeps this test focused on the pruned‑IDs behavior and ensures the new criteria check is not triggered here. No changes needed.


8595-8597: Switch to testContextSpecificDocument aligns composite-writer failure test with context-aware indices

Creating all three documents via testContextSpecificDocument("grouping_criteria") is consistent with exercising the composite writer path under context‑aware settings, without altering the test’s core “addIndexes throws → shard fails” behavior. Looks good.


8641-8643: Context-specific documents are appropriate for the update-path composite-writer failure test

Using testContextSpecificDocument("grouping_criteria") for the append‑then‑update scenario maintains the original intent (failure on addIndexes during update) while ensuring the setup matches the context‑aware index configuration. No issues spotted.

test/framework/src/main/java/org/opensearch/index/engine/EngineTestCase.java (1)

369-373: Parametrizing testContextSpecificDocument is fine

Allowing callers to pass groupingCriteria instead of hard-coding it improves test flexibility without changing semantics; no issues spotted.

server/src/test/java/org/opensearch/ExceptionSerializationTests.java (1)

90-90: ImmutableCriteriaException serialization mapping looks correct

The new import and ids.put(10003, ImmutableCriteriaException.class); entry align with the server-side registration (base 10000 + 3); this keeps the bidirectional ID ↔ class mapping consistent.

Also applies to: 730-910

server/src/main/java/org/opensearch/OpenSearchServerException.java (1)

28-29: ImmutableCriteriaException registration is consistent

Registering ImmutableCriteriaException with id CUSTOM_ELASTICSEARCH_EXCEPTIONS_BASE_ID + 3 (10003) and version V_3_4_0 matches the test-side mapping and keeps IDs in the custom range without conflicts.

Also applies to: 1255-1262

server/src/main/java/org/opensearch/index/engine/LuceneIndexWriter.java (1)

15-16: Null-returning getCriteriaUnderLock is appropriate for LuceneIndexWriter

Implementing getCriteriaUnderLock(BytesRef uid) to always return null correctly reflects that plain LuceneIndexWriter doesn’t track grouping criteria; this ensures criteria immutability checks are only applied when a context-aware writer provides a non-null value.

Also applies to: 230-232

Comment thread server/src/main/java/org/opensearch/index/engine/CompositeIndexWriter.java Outdated
Comment thread server/src/main/java/org/opensearch/index/engine/DocumentIndexWriter.java Outdated
@github-actions

Copy link
Copy Markdown
Contributor

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

@RS146BIJAY
RS146BIJAY force-pushed the fail-criteria-update branch 2 times, most recently from 6772f3d to 47c7a3f Compare February 1, 2026 10:17
@github-actions

github-actions Bot commented Feb 1, 2026

Copy link
Copy Markdown
Contributor

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

@RS146BIJAY
RS146BIJAY force-pushed the fail-criteria-update branch from 47c7a3f to 9b69b1f Compare February 1, 2026 14:21
@github-actions

github-actions Bot commented Feb 1, 2026

Copy link
Copy Markdown
Contributor

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

@RS146BIJAY
RS146BIJAY force-pushed the fail-criteria-update branch from 9b69b1f to 510bd9c Compare February 2, 2026 04:06
@github-actions

github-actions Bot commented Feb 2, 2026

Copy link
Copy Markdown
Contributor

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

@RS146BIJAY
RS146BIJAY force-pushed the fail-criteria-update branch from 510bd9c to 885d8a8 Compare February 2, 2026 05:22
@github-actions

github-actions Bot commented Feb 2, 2026

Copy link
Copy Markdown
Contributor

❌ Gradle check result for 885d8a8: 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: RS146BIJAY <rishavsagar4b1@gmail.com>
@RS146BIJAY
RS146BIJAY force-pushed the fail-criteria-update branch from 885d8a8 to 1bc19a3 Compare February 2, 2026 09:50
@github-actions

github-actions Bot commented Feb 2, 2026

Copy link
Copy Markdown
Contributor

✅ Gradle check result for 1bc19a3: SUCCESS

@Bukhtawar
Bukhtawar merged commit e8b9f1a into opensearch-project:main Feb 2, 2026
34 checks passed
tanyabti pushed a commit to tanyabti/OpenSearch that referenced this pull request Feb 24, 2026
tanyabti pushed a commit to tanyabti/OpenSearch that referenced this pull request Feb 24, 2026
pradeep-L pushed a commit to pradeep-L/OpenSearch that referenced this pull request Apr 21, 2026
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.

3 participants