Honor max segment size during only_expunge_deletes#10036
Honor max segment size during only_expunge_deletes#10036msfroh merged 3 commits intoopensearch-project:mainfrom
Conversation
Gradle Check (Jenkins) Run Completed with:
|
Compatibility status:Checks if related components are compatible with change 7d265b4 Incompatible componentsSkipped componentsCompatible componentsCompatible components: [https://github.com/opensearch-project/security-analytics.git, https://github.com/opensearch-project/security.git, https://github.com/opensearch-project/custom-codecs.git, https://github.com/opensearch-project/opensearch-oci-object-storage.git, https://github.com/opensearch-project/index-management.git, https://github.com/opensearch-project/geospatial.git, https://github.com/opensearch-project/sql.git, https://github.com/opensearch-project/job-scheduler.git, https://github.com/opensearch-project/notifications.git, https://github.com/opensearch-project/observability.git, https://github.com/opensearch-project/k-nn.git, https://github.com/opensearch-project/neural-search.git, https://github.com/opensearch-project/cross-cluster-replication.git, https://github.com/opensearch-project/alerting.git, https://github.com/opensearch-project/performance-analyzer.git, https://github.com/opensearch-project/anomaly-detection.git, https://github.com/opensearch-project/ml-commons.git, https://github.com/opensearch-project/performance-analyzer-rca.git, https://github.com/opensearch-project/asynchronous-search.git, https://github.com/opensearch-project/common-utils.git, https://github.com/opensearch-project/reporting.git] |
Gradle Check (Jenkins) Run Completed with:
|
Codecov Report
@@ Coverage Diff @@
## main #10036 +/- ##
============================================
+ Coverage 71.06% 71.18% +0.12%
- Complexity 58103 58171 +68
============================================
Files 4825 4825
Lines 274024 274024
Branches 39926 39926
============================================
+ Hits 194730 195075 +345
+ Misses 62978 62604 -374
- Partials 16316 16345 +29
|
Signed-off-by: Michael Froh <froh@amazon.com>
d2a375f to
7d265b4
Compare
It's challenging to create a real unit test for this change without constructing a real Lucene index, but at least this invokes the changed code. Signed-off-by: Michael Froh <froh@amazon.com>
7d265b4 to
df7f441
Compare
Gradle Check (Jenkins) Run Completed with:
|
Gradle Check (Jenkins) Run Completed with:
|
Gradle Check (Jenkins) Run Completed with:
|
server/src/main/java/org/opensearch/index/OpenSearchTieredMergePolicy.java
Show resolved
Hide resolved
andrross
left a comment
There was a problem hiding this comment.
I'm convinced by your reasoning, @msfroh. We should document this behavior change, but it appears we don't have documentation for the force_merge API at all. I created an issue here to track that: opensearch-project/documentation-website#5057
…t#10036) Signed-off-by: Ivan Brusic <ivan.brusic@flocksafety.com>
|
The backport to 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-10036-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 1dde018a1aa9cb606c274a4119348de285b80a65
# Push it to GitHub
git push --set-upstream origin backport/backport-10036-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-2.xThen, create a pull request where the |
…t#10036) Signed-off-by: Shivansh Arora <hishiv@amazon.com>
Description
There are latency-sensitive users for whom the default 20% allowable accumulation of deletes is too high, so they force merge with "only_expunge_deletes".
Unfortunately, this has ignored the max segment size, so despite the word "only" in there, they get the terrible side-effect of producing segments larger than the max segment size. These oversized segments are unlikely to participate in future merges, until they have so many deletes that they could drop back below the max segment size, likely making the whole "too many deletes" problem even worse.
This commit fixes that so that "only_expunge_deletes" ONLY EXPUNGES DELETES without creating oversized segments.
Related Issues
Resolves #7644
Check List
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.