Skip to content

Conversation

@ashking94
Copy link
Member

@ashking94 ashking94 commented Jun 27, 2025

Description

This fixes an issue in segrep flow which causes infinite segrep loop. The analysis is present in the issue - #18605.

Related Issues

Resolves #18605

Check List

  • Functionality includes testing.
  • [ ] API changes companion pull request created, if applicable.
  • [ ] Public documentation issue/PR created, if applicable.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@github-actions
Copy link
Contributor

✅ Gradle check result for ff5a898: SUCCESS

@codecov
Copy link

codecov bot commented Jun 27, 2025

Codecov Report

Attention: Patch coverage is 33.33333% with 2 lines in your changes missing coverage. Please review.

Project coverage is 72.84%. Comparing base (b1d6f55) to head (ed9e60a).
Report is 17 commits behind head on main.

Files with missing lines Patch % Lines
...s/replication/SegmentReplicationTargetService.java 33.33% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main   #18636      +/-   ##
============================================
+ Coverage     72.79%   72.84%   +0.05%     
- Complexity    68362    68466     +104     
============================================
  Files          5563     5563              
  Lines        314174   314176       +2     
  Branches      45554    45555       +1     
============================================
+ Hits         228703   228871     +168     
+ Misses        66887    66764     -123     
+ Partials      18584    18541      -43     

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

✅ Gradle check result for 27e3218: SUCCESS

@ashking94
Copy link
Member Author

ashking94 commented Jul 2, 2025

I have not been able to repro the issue in ITs. I have tried reproducing it, will try to understand why doesn't it happen on local.

@ashking94 ashking94 marked this pull request as ready for review July 2, 2025 05:12
@ashking94 ashking94 requested a review from a team as a code owner July 2, 2025 05:12
@ashking94
Copy link
Member Author

I have not been able to repro the issue in ITs. I have tried reproducing it, will try to understand why doesn't it happen on local.

I was able to modify an unit test that was showing the behaviour where the cyclic loop of segrep is seen always.

REPRODUCE WITH: ./gradlew 'null' --tests 'org.opensearch.indices.replication.SegmentReplicationTargetServiceTests.testStartReplicationListenerSuccess' -Dtests.seed=B17175E6A29DDE01 -Dtests.locale=bg-Cyrl-BG -Dtests.timezone=Europe/Vatican -Druntime.java=21

org.mockito.exceptions.verification.TooManyActualInvocations: 
segmentReplicationTargetService.processLatestReceivedCheckpoint(
    <any>,
    <any>
);
Wanted 1 time:
-> at org.opensearch.indices.replication.SegmentReplicationTargetServiceTests.testStartReplicationListenerSuccess(SegmentReplicationTargetServiceTests.java:628)
But was 27 times:
-> at org.opensearch.indices.replication.SegmentReplicationTargetService.afterIndexShardStarted(SegmentReplicationTargetService.java:235)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)
-> at org.opensearch.indices.replication.SegmentReplicationTargetService$1.onReplicationDone(SegmentReplicationTargetService.java:351)

@github-actions
Copy link
Contributor

github-actions bot commented Jul 2, 2025

✅ Gradle check result for ed9e60a: SUCCESS

@github-project-automation github-project-automation bot moved this to 👀 In review in Storage Project Board Jul 2, 2025
@ashking94
Copy link
Member Author

@mch2 I have tried making the above change which should fix the recursion loop. Do review if you can.

@ashking94
Copy link
Member Author

I have run following tests for 1000+ iterations and have not seen any single failure:

  • PublishCheckpointActionTests
  • SegmentReplicationTargetServiceTests
  • SegmentReplicationIT

@ashking94 ashking94 merged commit 46a0045 into opensearch-project:main Jul 3, 2025
32 of 33 checks passed
@github-project-automation github-project-automation bot moved this from 👀 In review to ✅ Done in Storage Project Board Jul 3, 2025
@opensearch-trigger-bot
Copy link
Contributor

The backport to 2.x failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/OpenSearch/backport-2.x 2.x
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-2.x
# Create a new branch
git switch --create backport/backport-18636-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 46a0045a2301b3bc51e2da9c5e853f69ac6342c2
# Push it to GitHub
git push --set-upstream origin backport/backport-18636-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-2.x

Then, create a pull request where the base branch is 2.x and the compare/head branch is backport/backport-18636-to-2.x.

@opensearch-trigger-bot
Copy link
Contributor

The backport to 2.19 failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/OpenSearch/backport-2.19 2.19
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-2.19
# Create a new branch
git switch --create backport/backport-18636-to-2.19
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 46a0045a2301b3bc51e2da9c5e853f69ac6342c2
# Push it to GitHub
git push --set-upstream origin backport/backport-18636-to-2.19
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-2.19

Then, create a pull request where the base branch is 2.19 and the compare/head branch is backport/backport-18636-to-2.19.

@opensearch-trigger-bot
Copy link
Contributor

The backport to 3.0 failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/OpenSearch/backport-3.0 3.0
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-3.0
# Create a new branch
git switch --create backport/backport-18636-to-3.0
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 46a0045a2301b3bc51e2da9c5e853f69ac6342c2
# Push it to GitHub
git push --set-upstream origin backport/backport-18636-to-3.0
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-3.0

Then, create a pull request where the base branch is 3.0 and the compare/head branch is backport/backport-18636-to-3.0.

@opensearch-trigger-bot
Copy link
Contributor

The backport to 3.1 failed:

The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:

# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/OpenSearch/backport-3.1 3.1
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-3.1
# Create a new branch
git switch --create backport/backport-18636-to-3.1
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 46a0045a2301b3bc51e2da9c5e853f69ac6342c2
# Push it to GitHub
git push --set-upstream origin backport/backport-18636-to-3.1
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-3.1

Then, create a pull request where the base branch is 3.1 and the compare/head branch is backport/backport-18636-to-3.1.

ashking94 added a commit to ashking94/OpenSearch that referenced this pull request Jul 3, 2025
…pensearch-project#18636)

* Fix checkpoint handling to prevent segment replication infinite loop

Signed-off-by: Ashish Singh <[email protected]>

* Modify existing test to verify code change behaviour

Signed-off-by: Ashish Singh <[email protected]>

---------

Signed-off-by: Ashish Singh <[email protected]>
@ashking94
Copy link
Member Author

Raised manual backport for 2.19 minor version releases - #18677.

@ashking94
Copy link
Member Author

It appears that the test org.opensearch.indices.replication.SegmentReplicationIT.testNodeDropWithOngoingReplication may have become flaky as I saw a test failure in random iterations run. I will fix the same.

gbbafna pushed a commit that referenced this pull request Jul 4, 2025
@fullykubed
Copy link

@ashking94 @gbbafna Not sure what the policy here is, but is it possible to cut a new patch release for the backported version channels now that this is merged? This bug unfortunately makes remote storage functionally unusable, and it would be nice to make it usable again.

@ashking94
Copy link
Member Author

@fullykubed This change has been backported to 2.19 and should be released as part of 2.19.3. You can refer the schedule of planned releases at https://opensearch.org/releases/.

@fullykubed
Copy link

@ashking94 Got it! Thanks for the clarification.

To confirm, no plans to backport this to 3.x release branches?

@ashking94
Copy link
Member Author

ashking94 commented Jul 11, 2025

AFAIK, I dont think there are any planned releases for 3.x.x minor/patch versions. The fix will be released in 3.2.0 which is scheduled to be released around August 19th, 2025.

vishdivs pushed a commit to vishdivs/OpenSearch that referenced this pull request Jul 14, 2025
…pensearch-project#18636)

* Fix checkpoint handling to prevent segment replication infinite loop

Signed-off-by: Ashish Singh <[email protected]>

* Modify existing test to verify code change behaviour

Signed-off-by: Ashish Singh <[email protected]>

---------

Signed-off-by: Ashish Singh <[email protected]>
animodak7 added a commit to animodak7/OpenSearch that referenced this pull request Jul 16, 2025
* Fix regex query to work with field alias (opensearch-project#18215)

---------

Signed-off-by: bowenlan-amzn <[email protected]>
Signed-off-by: Ankit Jain <[email protected]>
Co-authored-by: Ankit Jain <[email protected]>

* Add workflow to automatically trigger manifest generation process (opensearch-project#18629)

Signed-off-by: Sayali Gaikawad <[email protected]>

* Bump com.squareup.okio:okio from 3.13.0 to 3.14.0 in /test/fixtures/hdfs-fixture (opensearch-project#18645)

* Bump com.squareup.okio:okio in /test/fixtures/hdfs-fixture

Bumps [com.squareup.okio:okio](https://github.com/square/okio) from 3.13.0 to 3.14.0.
- [Release notes](https://github.com/square/okio/releases)
- [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md)
- [Commits](square/okio@parent-3.13.0...parent-3.14.0)

---
updated-dependencies:
- dependency-name: com.squareup.okio:okio
  dependency-version: 3.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix credentials format (opensearch-project#18651)

Signed-off-by: Sayali Gaikawad <[email protected]>

* Provide aux transport to SecureAuxTransportSettingsProvider (opensearch-project#18616)

* Pass aux transport to secure settings parameters().

Signed-off-by: Finn Carroll <[email protected]>

* Update javadocs, fix UTs.

Signed-off-by: Finn Carroll <[email protected]>

* Spotless apply

Signed-off-by: Finn Carroll <[email protected]>

* Pass aux transport key as unique identifier instead of transport ref.

Signed-off-by: Finn Carroll <[email protected]>

* Consistent naming. auxTransportSettingKey -> auxTransportType.

Signed-off-by: Finn Carroll <[email protected]>

* Changelog.

Signed-off-by: Finn Carroll <[email protected]>

* Spotless apply

Signed-off-by: Finn Carroll <[email protected]>

---------

Signed-off-by: Finn Carroll <[email protected]>

* Making snapshot store/restore rate dynamic (opensearch-project#18069)

* Making snapshot store/restore rate dynamic

Signed-off-by: kkewwei <[email protected]>
Signed-off-by: kkewwei <[email protected]>

* simple the code

Signed-off-by: kkewwei <[email protected]>
Signed-off-by: kkewwei <[email protected]>

---------

Signed-off-by: kkewwei <[email protected]>
Signed-off-by: kkewwei <[email protected]>

* Bump com.netflix.nebula.ospackage-base from 11.11.2 to 12.0.0 in /distribution/packages (opensearch-project#18646)

* Bump com.netflix.nebula.ospackage-base in /distribution/packages

Bumps com.netflix.nebula.ospackage-base from 11.11.2 to 12.0.0.

---
updated-dependencies:
- dependency-name: com.netflix.nebula.ospackage-base
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Craig Perkins <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Craig Perkins <[email protected]>

* Extend Profiler to allow for non-timing info (opensearch-project#18631)

* copied from other branch, ready for pr

Signed-off-by: TJ Neuenfeldt <[email protected]>

* cleanup from merging

Signed-off-by: TJ Neuenfeldt <[email protected]>

* another spotless apply and fixed breaking change

Signed-off-by: TJ Neuenfeldt <[email protected]>

* another spotlessApply

Signed-off-by: TJ Neuenfeldt <[email protected]>

* forgot to change back concurrent agg stuff

Signed-off-by: TJ Neuenfeldt <[email protected]>

* forgot to spotless after prev fix

Signed-off-by: TJ Neuenfeldt <[email protected]>

* added more unit tests for coverage

Signed-off-by: TJ Neuenfeldt <[email protected]>

* changed to supplier, removed timer ctors

Signed-off-by: TJ Neuenfeldt <[email protected]>

* made feedback changes

Signed-off-by: TJ Neuenfeldt <[email protected]>

* forgot javadoc for new class

Signed-off-by: TJ Neuenfeldt <[email protected]>

* forgot to revert name to toString

Signed-off-by: TJ Neuenfeldt <[email protected]>

* fix count check in concurrentquerypb

Signed-off-by: TJ Neuenfeldt <[email protected]>

* unmodifiable map add

Signed-off-by: TJ Neuenfeldt <[email protected]>

---------

Signed-off-by: TJ Neuenfeldt <[email protected]>
Signed-off-by: TJ Neuenfeldt <[email protected]>

* [Bug Fix] Fix the backward compatibility regression with `COMPLEMENT` for Regexp queries introduced in OpenSearch 3.0 (opensearch-project#18640)

* FIx ~ bug

Signed-off-by: Prudhvi Godithi <[email protected]>

* Update changelog

Signed-off-by: Prudhvi Godithi <[email protected]>

---------

Signed-off-by: Prudhvi Godithi <[email protected]>

* [WLM] Make resource usage value cacheable for NodeDuressTrackers (opensearch-project#18649)

---------

Signed-off-by: Kaushal Kumar <[email protected]>
Signed-off-by: Ankit Jain <[email protected]>
Co-authored-by: Ankit Jain <[email protected]>

* Fix bugs in replication lag computation (opensearch-project#18602)

* Fix bug in replication lag computation.

This change fixes a bug with replication lag computation to correctly use epoch reference point with Instant.now() and DateUtils.
This change also fixes pruning logic to correctly remove the latest synced to checkpoint from tracking.  Previously we would only
prune up to the latest.  This ensures that when a new checkpoint is eventually received we aren't incorrectly computing lag from the synced-to checkpoint.

Signed-off-by: Marc Handalian <[email protected]>

* add changelog entry

Signed-off-by: Marc Handalian <[email protected]>

* Fix flaky test to hardcode time lag between checkpoint arrival.

Signed-off-by: Marc Handalian <[email protected]>

---------

Signed-off-by: Marc Handalian <[email protected]>

* Replace LegacyESVersion.fromString with Version.fromString (opensearch-project#18567)



---------

Signed-off-by: Du Tran <[email protected]>

* Inject QueryCollectorSpecFactory from Plugins to create QueryCollectorContext in QueryPhase (opensearch-project#18637)

* Initial Commit

Signed-off-by: Varun Jain <[email protected]>

* Javadocs

Signed-off-by: Varun Jain <[email protected]>

* Factory design pattern for QueryCollectorContextSpec

Signed-off-by: Varun Jain <[email protected]>

* Fixing Concurrent Segment Search

Signed-off-by: Varun Jain <[email protected]>

* Remove spec

Signed-off-by: Varun Jain <[email protected]>

* Renaming method

Signed-off-by: Varun Jain <[email protected]>

* Javadoc

Signed-off-by: Varun Jain <[email protected]>

* Removing support method from QueryCollectorContextSpecFactory

Signed-off-by: Varun Jain <[email protected]>

* Adding javadoc

Signed-off-by: Varun Jain <[email protected]>

* Add changelog

Signed-off-by: Varun Jain <[email protected]>

* Add experimentalAPI annotation

Signed-off-by: Varun Jain <[email protected]>

* remove redundant check from getQueryCollectorContextSpec method

Signed-off-by: Varun Jain <[email protected]>

* Add unit tests

Signed-off-by: Varun Jain <[email protected]>

* Remove Test annotation

Signed-off-by: Varun Jain <[email protected]>

* Reformatting

Signed-off-by: Varun Jain <[email protected]>

---------

Signed-off-by: Varun Jain <[email protected]>

* Bump com.azure:azure-storage-blob from 12.30.0 to 12.30.1 in /plugins/repository-azure (opensearch-project#18644)

* Bump com.azure:azure-storage-blob in /plugins/repository-azure

Bumps [com.azure:azure-storage-blob](https://github.com/Azure/azure-sdk-for-java) from 12.30.0 to 12.30.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-java/releases)
- [Commits](Azure/azure-sdk-for-java@azure-storage-blob_12.30.0...azure-storage-blob_12.30.1)

---
updated-dependencies:
- dependency-name: com.azure:azure-storage-blob
  dependency-version: 12.30.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Updating SHAs

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix checkpoint handling to prevent segment replication infinite loop (opensearch-project#18636)

* Fix checkpoint handling to prevent segment replication infinite loop

Signed-off-by: Ashish Singh <[email protected]>

* Modify existing test to verify code change behaviour

Signed-off-by: Ashish Singh <[email protected]>

---------

Signed-off-by: Ashish Singh <[email protected]>

* Extend Approximation Framework to other numeric types (opensearch-project#18530)

* Extend approximation to other numeric types

Signed-off-by: Prudhvi Godithi <[email protected]>

* Fix basic tests

Signed-off-by: Prudhvi Godithi <[email protected]>

* Fix basic tests

Signed-off-by: Prudhvi Godithi <[email protected]>

* Add Parameterized tests for all numeric types

Signed-off-by: Prudhvi Godithi <[email protected]>

* Fix FieldSortIT

Signed-off-by: Prudhvi Godithi <[email protected]>

* Fix FieldSortIT

Signed-off-by: Prudhvi Godithi <[email protected]>

* Address comments

Signed-off-by: Prudhvi Godithi <[email protected]>

* Update tests and changelog

Signed-off-by: Prudhvi Godithi <[email protected]>

* Update tests and changelog

Signed-off-by: Prudhvi Godithi <[email protected]>

---------

Signed-off-by: Prudhvi Godithi <[email protected]>

* Bump BouncyCastle and password4j (opensearch-project#18668)

Changes:
- Bump org.bouncycastle:bctls-fips from 2.0.19 to 2.0.20
- Bump org.bouncycastle:bcpkix-fips from 2.0.7 to 2.0.8
- Bump org.bouncycastle:bcpg-fips from 2.0.10 to 2.0.11
- Bump com.password4j:password4j from 1.8.2 to 1.8.3

Signed-off-by: Andrey Pleskach <[email protected]>

* Add support for custom index name resolver from cluster plugin (opensearch-project#18593)

Signed-off-by: Gagan Singh Saini <[email protected]>

* Remove clone holder and add Cleaner logic to clean up clones in FullFileCachedIndexInput (opensearch-project#18662)

Signed-off-by: Shreyansh Ray <[email protected]>

* Disallow resize for Warm Index, add Parameterized ITs for close in remote store (opensearch-project#18686)

Signed-off-by: Gagan Singh Saini <[email protected]>
Co-authored-by: Gaurav Bafna <[email protected]>

* Added support for range version support in semver (opensearch-project#18557)

* Added support for range version support in semver

Signed-off-by: Shruti Garg <[email protected]>

* Added test coverage for missing lines

Signed-off-by: Shruti Garg <[email protected]>

* Fixed for non reachable code line and tests

Signed-off-by: Shruti Garg <[email protected]>

---------

Signed-off-by: Shruti Garg <[email protected]>

* An attempt to fix flaky SecureReactorNetty4HttpServerTransportTests (opensearch-project#18680)

Signed-off-by: Andriy Redko <[email protected]>

* Bump com.squareup.okio:okio from 3.14.0 to 3.15.0 in /test/fixtures/hdfs-fixture (opensearch-project#18689)

* Bump com.squareup.okio:okio in /test/fixtures/hdfs-fixture

Bumps [com.squareup.okio:okio](https://github.com/square/okio) from 3.14.0 to 3.15.0.
- [Release notes](https://github.com/square/okio/releases)
- [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md)
- [Commits](square/okio@parent-3.14.0...parent-3.15.0)

---
updated-dependencies:
- dependency-name: com.squareup.okio:okio
  dependency-version: 3.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add Semantic Version field type mapper (opensearch-project#18454)

* Add Semantic Version field type mapper and extensive unit tests

Signed-off-by: Siddhant Deshmukh <[email protected]>

* Refactor SemanticVersionFieldMapper for flexible index, store, and doc_values support

Signed-off-by: Siddhant Deshmukh <[email protected]>

---------

Signed-off-by: Siddhant Deshmukh <[email protected]>

* Bump com.azure:azure-core from 1.55.3 to 1.55.5 in /plugins/repository-azure (opensearch-project#18691)

* Bump com.azure:azure-core in /plugins/repository-azure

Bumps [com.azure:azure-core](https://github.com/Azure/azure-sdk-for-java) from 1.55.3 to 1.55.5.
- [Release notes](https://github.com/Azure/azure-sdk-for-java/releases)
- [Commits](Azure/azure-sdk-for-java@azure-core_1.55.3...azure-core_1.55.5)

---
updated-dependencies:
- dependency-name: com.azure:azure-core
  dependency-version: 1.55.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Updating SHAs

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Exposing default codec from codec service (opensearch-project#18698)

* Exposing default codec from codec service

Signed-off-by: bharath-techie <[email protected]>

* addressing comments

Signed-off-by: bharath-techie <[email protected]>

---------

Signed-off-by: bharath-techie <[email protected]>

* Replace CPU load average logic with AverageTracker class and modify default thresholds (opensearch-project#18666)

Signed-off-by: Harsh Kothari <[email protected]>

* Rename all query group references to workload group (opensearch-project#18711)

Signed-off-by: Ruirui Zhang <[email protected]>

* Rename WorkloadGroupTestUtil to WorkloadManagementTestUtil (opensearch-project#18709)

Signed-off-by: Ruirui Zhang <[email protected]>

* Add Prudhvi Godithi (GH: prudhvigodithi) as a maintainer (opensearch-project#18690)

* Add Prudhvi Godithi (GH: prudhvigodithi) as a maintainer

Signed-off-by: Craig Perkins <[email protected]>

* Keep spaces

Signed-off-by: Craig Perkins <[email protected]>

* Fix spacing

Signed-off-by: Craig Perkins <[email protected]>

---------

Signed-off-by: Craig Perkins <[email protected]>

* Pass index settings to system ingest processor factories. (opensearch-project#18708)

Signed-off-by: Bo Zhang <[email protected]>

* Include named queries from rescore contexts in matched_queries array (opensearch-project#18697)

* Fix: Include named queries from rescore contexts in matched_queries array

- Modified QueryRescoreContext to store ParsedQuery instead of just Query
- Updated QueryRescorerBuilder to use context.toQuery() for capturing named queries
- Enhanced MatchedQueriesPhase to collect named queries from all rescore contexts
- Added comprehensive tests for both unit and REST API scenarios
- Resolves inconsistency with Elasticsearch behavior where rescore named queries were not surfaced
- Cleaned up unnecessary comments for better code readability

Signed-off-by: Girish Jeyakumar <[email protected]>

* Address maintainer feedback: update RescoreContext interface design

- Added parsedQuery() method to RescoreContext interface
- Added getParsedQueries() method to RescoreContext interface
- Updated QueryRescoreContext to override interface methods
- Removed instanceof check in MatchedQueriesPhase by using interface method
- Simplified assignment in QueryRescorerBuilder to one line

Signed-off-by: Girish Jeyakumar <[email protected]>

* Complete interface replacement: replace query() with parsedQuery() and getQueries() with getParsedQueries()

- Removed query() method from QueryRescoreContext
- Removed getQueries() method from RescoreContext interface
- Updated all callers to use parsedQuery().query() instead of query()
- Updated DfsPhase to use getParsedQueries() instead of getQueries()
- Updated QueryRescorer to use parsedQuery().query() for rescoring and explanations
- Updated QueryRescorerBuilderTests to use parsedQuery().query()
- This addresses the maintainer's feedback for a cleaner interface design

Signed-off-by: Girish Jeyakumar <[email protected]>

* Finalize interface design and move changelog entry to Added section

- Removed parsedQuery() method from RescoreContext base interface
- Renamed getParsedQuery() to parsedQuery() in QueryRescoreContext for consistency
- Updated all callers to use parsedQuery() method
- Moved changelog entry to 'Added' section (more appropriate than 'Fixed')
- Added proper imports for ParsedQuery to improve code readability
- All tests pass and code formatting is correct

Final interface design:
- RescoreContext: only getParsedQueries() (returns List<ParsedQuery>)
- QueryRescoreContext: parsedQuery() + getParsedQueries() override
- MatchedQueriesPhase: uses getParsedQueries().forEach() for clean iteration

This addresses all maintainer feedback from @mch2 and provides a clean,
well-tested implementation that surfaces named queries from rescore contexts
in the matched_queries array.

Signed-off-by: Girish Jeyakumar <[email protected]>

* Maintain backward compatibility for RescoreContext public API

- Restore getQueries() method for backward compatibility
- Add getParsedQueries() method for new functionality

Signed-off-by: Girish Jeyakumar <[email protected]>

* Fix mixed cluster test failure by updating skip version to 3.2.0

Signed-off-by: girish jeyakumar <[email protected]>

---------

Signed-off-by: Girish Jeyakumar <[email protected]>
Signed-off-by: girish jeyakumar <[email protected]>
Signed-off-by: Marc Handalian <[email protected]>
Co-authored-by: Girish Jeyakumar <[email protected]>
Co-authored-by: Marc Handalian <[email protected]>

* Move gRPC transitive dependencies to expected version (opensearch-project#18672)

* Some explicit transient gRPC deps are not the expected version.

grpc-netty-shaded:1.68.2 expects perfmark-api:0.27.0
guava:33.2.1-jre expects failureaccess:1.0.2

Signed-off-by: Finn Carroll <[email protected]>

* Update license shas.

Signed-off-by: Finn Carroll <[email protected]>

* Changelog.

Signed-off-by: Finn Carroll <[email protected]>

* Rebase changelog.

Signed-off-by: Finn Carroll <[email protected]>

---------

Signed-off-by: Finn Carroll <[email protected]>

* Modify wlm logging message (opensearch-project#18712)

Signed-off-by: Ruirui Zhang <[email protected]>

* [WLM] Introduce rule cardinality check (opensearch-project#18663)

Signed-off-by: Kaushal Kumar <[email protected]>

* [WLM] Add WLM mode validation for workload group CRUD requests (opensearch-project#18652)

Signed-off-by: Ruirui Zhang <[email protected]>

* Allow upload of translog-1 generation while migrating to remote (opensearch-project#18713)

Signed-off-by: Gaurav Bafna <[email protected]>

* Fix max_score is null when using _score as a primary sort (opensearch-project#18715)

* Fix max_score is null when sorting on score firstly

Signed-off-by: Binlong Gao <[email protected]>

* modify changelog

Signed-off-by: Binlong Gao <[email protected]>

* Fix test failure

Signed-off-by: Binlong Gao <[email protected]>

---------

Signed-off-by: Binlong Gao <[email protected]>

* Changes for the Upload Workflow for merged segments (opensearch-project#18610)

* Changes for the Upload Workflow for merged segments

Signed-off-by: Aditi Goyal <[email protected]>

* Addressed Todos

Signed-off-by: Aditi Goyal <[email protected]>

* Added Test Cases

Signed-off-by: Aditi Goyal <[email protected]>

* Removed the usage of Forbidden APIs

Signed-off-by: Aditi Goyal <[email protected]>

* Updated the code to include priority upload as paramter

Signed-off-by: Aditi Goyal <[email protected]>

* Updated the remote listener to use remote upploader interface

Signed-off-by: Aditi Goyal <[email protected]>

* Added JavaDocs across the changes

Signed-off-by: Aditi Goyal <[email protected]>

* Addressed spotless check

Signed-off-by: Aditi Goyal <[email protected]>

* Dummy commit(can be reverted)

Signed-off-by: Aditi Goyal <[email protected]>

* Revert "Dummy commit(can be reverted)"

This reverts commit e542b99.

Signed-off-by: Aditi Goyal <[email protected]>

---------

Signed-off-by: Aditi Goyal <[email protected]>
Co-authored-by: Aditi Goyal <[email protected]>

* Modify merged segment pre-copy classes licenses (opensearch-project#18737)

Signed-off-by: guojialiang <[email protected]>

* `Lucene.java` Code Improvement (opensearch-project#18710)

* Code Improvement

Signed-off-by: Prudhvi Godithi <[email protected]>

* Code Improvement with a new method

Signed-off-by: Prudhvi Godithi <[email protected]>

---------

Signed-off-by: Prudhvi Godithi <[email protected]>

* Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0 in /plugins/repository-hdfs (opensearch-project#18745)

* Bump org.apache.commons:commons-lang3 in /plugins/repository-hdfs

Bumps org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-lang3
  dependency-version: 3.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Updating SHAs

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump org.apache.logging.log4j:log4j-core from 2.25.0 to 2.25.1 in /buildSrc/src/testKit/thirdPartyAudit/sample_jars (opensearch-project#18744)

* Bump org.apache.logging.log4j:log4j-core

Bumps org.apache.logging.log4j:log4j-core from 2.25.0 to 2.25.1.

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-core
  dependency-version: 2.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump com.azure:azure-storage-common from 12.29.0 to 12.29.1 in /plugins/repository-azure (opensearch-project#18742)

* Bump com.azure:azure-storage-common in /plugins/repository-azure

Bumps [com.azure:azure-storage-common](https://github.com/Azure/azure-sdk-for-java) from 12.29.0 to 12.29.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-java/releases)
- [Commits](Azure/azure-sdk-for-java@azure-storage-blob_12.29.0...azure-storage-blob_12.29.1)

---
updated-dependencies:
- dependency-name: com.azure:azure-storage-common
  dependency-version: 12.29.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Updating SHAs

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: gaobinlong <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: gaobinlong <[email protected]>

* Bump com.google.jimfs:jimfs from 1.3.0 to 1.3.1 in /distribution/tools/plugin-cli (opensearch-project#18743)

* Bump com.google.jimfs:jimfs in /distribution/tools/plugin-cli

Bumps [com.google.jimfs:jimfs](https://github.com/google/jimfs) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/google/jimfs/releases)
- [Commits](google/jimfs@v1.3.0...v1.3.1)

---
updated-dependencies:
- dependency-name: com.google.jimfs:jimfs
  dependency-version: 1.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Update changelog

Signed-off-by: dependabot[bot] <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: gaobinlong <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: gaobinlong <[email protected]>

* Fix sync method to account for block files in Composite Directory (opensearch-project#18660)

Signed-off-by: Shreyansh Ray <[email protected]>

* [Cleanup] Remove upgrade-cli tool and related build references (opensearch-project#18494)

The `upgrade-cli` tool is deprecated and no longer needed.

- Removed: distribution/tools/upgrade-cli
- Cleaned up: settings.gradle, distribution/build.gradle
- Deleted: distribution/src/bin/opensearch-upgrade(.bat)

Signed-off-by: BeomSeogKim <[email protected]>

* Improve test instructions in developer guide (opensearch-project#18736)

Signed-off-by: Shahbaz Aamir <[email protected]>

* [Experimental] Start without joining a cluster if a "clusterless" ClusterPlugin is loaded (opensearch-project#18479)

These are the core changes to allow ClusterPlugins to manage cluster
state on behalf of an OpenSearch node. If a "clusterless" ClusterPlugin
is loaded, then the node will start up with dummy versions of Discovery
and ClusterManagerService, and will load the minimum cluster state
required for startup (essentially, the node needs to see itself). From
there, the ClusterPlugin can interact with ClusterApplierService to apply
some cluster state to the node. (The details of constructing/receiving
that cluster state is up to the plugin.) 

---------

Signed-off-by: Michael Froh <[email protected]>

* Check CircuitBreaker before put/compute in FileCache to avoid entry removal (opensearch-project#18661)

Signed-off-by: Shreyansh Ray <[email protected]>

* Fix UNIX domain socket permission checks on Windows (opensearch-project#18764)

Signed-off-by: Andriy Redko <[email protected]>

---------

Signed-off-by: bowenlan-amzn <[email protected]>
Signed-off-by: Ankit Jain <[email protected]>
Signed-off-by: Sayali Gaikawad <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Finn Carroll <[email protected]>
Signed-off-by: kkewwei <[email protected]>
Signed-off-by: kkewwei <[email protected]>
Signed-off-by: Craig Perkins <[email protected]>
Signed-off-by: TJ Neuenfeldt <[email protected]>
Signed-off-by: TJ Neuenfeldt <[email protected]>
Signed-off-by: Prudhvi Godithi <[email protected]>
Signed-off-by: Kaushal Kumar <[email protected]>
Signed-off-by: Marc Handalian <[email protected]>
Signed-off-by: Du Tran <[email protected]>
Signed-off-by: Varun Jain <[email protected]>
Signed-off-by: Ashish Singh <[email protected]>
Signed-off-by: Andrey Pleskach <[email protected]>
Signed-off-by: Gagan Singh Saini <[email protected]>
Signed-off-by: Shreyansh Ray <[email protected]>
Signed-off-by: Shruti Garg <[email protected]>
Signed-off-by: Andriy Redko <[email protected]>
Signed-off-by: Siddhant Deshmukh <[email protected]>
Signed-off-by: bharath-techie <[email protected]>
Signed-off-by: Harsh Kothari <[email protected]>
Signed-off-by: Ruirui Zhang <[email protected]>
Signed-off-by: Bo Zhang <[email protected]>
Signed-off-by: Girish Jeyakumar <[email protected]>
Signed-off-by: girish jeyakumar <[email protected]>
Signed-off-by: Gaurav Bafna <[email protected]>
Signed-off-by: Binlong Gao <[email protected]>
Signed-off-by: Aditi Goyal <[email protected]>
Signed-off-by: guojialiang <[email protected]>
Signed-off-by: gaobinlong <[email protected]>
Signed-off-by: BeomSeogKim <[email protected]>
Signed-off-by: Shahbaz Aamir <[email protected]>
Signed-off-by: Michael Froh <[email protected]>
Co-authored-by: bowenlan-amzn <[email protected]>
Co-authored-by: Ankit Jain <[email protected]>
Co-authored-by: Sayali Gaikawad <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Finn <[email protected]>
Co-authored-by: kkewwei <[email protected]>
Co-authored-by: Craig Perkins <[email protected]>
Co-authored-by: TJ Neuenfeldt <[email protected]>
Co-authored-by: Prudhvi Godithi <[email protected]>
Co-authored-by: Kaushal Kumar <[email protected]>
Co-authored-by: Marc Handalian <[email protected]>
Co-authored-by: Trần Quang Dự <[email protected]>
Co-authored-by: Varun Jain <[email protected]>
Co-authored-by: Ashish Singh <[email protected]>
Co-authored-by: Andrey Pleskach <[email protected]>
Co-authored-by: Gagan6164 <[email protected]>
Co-authored-by: rayshrey <[email protected]>
Co-authored-by: Gaurav Bafna <[email protected]>
Co-authored-by: shrugarg-amzn <[email protected]>
Co-authored-by: Andriy Redko <[email protected]>
Co-authored-by: Siddhant Deshmukh <[email protected]>
Co-authored-by: Bharathwaj G <[email protected]>
Co-authored-by: Harsh Kothari <[email protected]>
Co-authored-by: Ruirui Zhang <[email protected]>
Co-authored-by: Bo Zhang <[email protected]>
Co-authored-by: Girish Jeyakumar <[email protected]>
Co-authored-by: Girish Jeyakumar <[email protected]>
Co-authored-by: Gaurav Bafna <[email protected]>
Co-authored-by: gaobinlong <[email protected]>
Co-authored-by: Aditi Goyal <[email protected]>
Co-authored-by: Aditi Goyal <[email protected]>
Co-authored-by: guojialiang <[email protected]>
Co-authored-by: Adrian-Kim <[email protected]>
Co-authored-by: Shahbaz Aamir <[email protected]>
Co-authored-by: Michael Froh <[email protected]>
tandonks pushed a commit to tandonks/OpenSearch that referenced this pull request Aug 5, 2025
…pensearch-project#18636)

* Fix checkpoint handling to prevent segment replication infinite loop

Signed-off-by: Ashish Singh <[email protected]>

* Modify existing test to verify code change behaviour

Signed-off-by: Ashish Singh <[email protected]>

---------

Signed-off-by: Ashish Singh <[email protected]>
andrross added a commit to andrross/OpenSearch that referenced this pull request Aug 6, 2025
andrross added a commit to andrross/OpenSearch that referenced this pull request Aug 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

[BUG] Infinite loop of S3 GET/LIST requests during segment replication recovery after node loss/restart

5 participants