Skip to content

Commit 333e53e

Browse files
msfrohvikasvb90
authored andcommitted
Honor max segment size during only_expunge_deletes (opensearch-project#10036)
1 parent 645c497 commit 333e53e

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
104104
- Add instrumentation in rest and network layer. ([#9415](https://github.com/opensearch-project/OpenSearch/pull/9415))
105105
- Allow parameterization of tests with OpenSearchIntegTestCase.SuiteScopeTestCase annotation ([#9916](https://github.com/opensearch-project/OpenSearch/pull/9916))
106106
- Mute the query profile IT with concurrent execution ([#9840](https://github.com/opensearch-project/OpenSearch/pull/9840))
107+
- Force merge with `only_expunge_deletes` honors max segment size ([#10036](https://github.com/opensearch-project/OpenSearch/pull/10036))
107108
- Add instrumentation in transport service. ([#10042](https://github.com/opensearch-project/OpenSearch/pull/10042))
108109

109110
### Deprecated

server/src/main/java/org/opensearch/index/OpenSearchTieredMergePolicy.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343
/**
4444
* Wrapper around {@link TieredMergePolicy} which doesn't respect
45-
* {@link TieredMergePolicy#setMaxMergedSegmentMB(double)} on forced merges.
45+
* {@link TieredMergePolicy#setMaxMergedSegmentMB(double)} on forced merges, but DOES respect it on only_expunge_deletes.
4646
* See https://issues.apache.org/jira/browse/LUCENE-7976.
4747
*
4848
* @opensearch.internal
@@ -71,7 +71,7 @@ public MergeSpecification findForcedMerges(
7171

7272
@Override
7373
public MergeSpecification findForcedDeletesMerges(SegmentInfos infos, MergeContext mergeContext) throws IOException {
74-
return forcedMergePolicy.findForcedDeletesMerges(infos, mergeContext);
74+
return regularMergePolicy.findForcedDeletesMerges(infos, mergeContext);
7575
}
7676

7777
public void setForceMergeDeletesPctAllowed(double forceMergeDeletesPctAllowed) {
@@ -80,7 +80,7 @@ public void setForceMergeDeletesPctAllowed(double forceMergeDeletesPctAllowed) {
8080
}
8181

8282
public double getForceMergeDeletesPctAllowed() {
83-
return forcedMergePolicy.getForceMergeDeletesPctAllowed();
83+
return regularMergePolicy.getForceMergeDeletesPctAllowed();
8484
}
8585

8686
public void setFloorSegmentMB(double mbFrac) {

server/src/test/java/org/opensearch/index/OpenSearchTieredMergePolicyTests.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,18 @@
3232

3333
package org.opensearch.index;
3434

35+
import org.apache.lucene.index.MergePolicy;
36+
import org.apache.lucene.index.SegmentCommitInfo;
37+
import org.apache.lucene.index.SegmentInfos;
3538
import org.apache.lucene.index.TieredMergePolicy;
39+
import org.apache.lucene.util.InfoStream;
40+
import org.apache.lucene.util.Version;
3641
import org.opensearch.test.OpenSearchTestCase;
3742

43+
import java.io.IOException;
44+
import java.util.Collections;
45+
import java.util.Set;
46+
3847
public class OpenSearchTieredMergePolicyTests extends OpenSearchTestCase {
3948

4049
public void testDefaults() {
@@ -80,4 +89,32 @@ public void testSetDeletesPctAllowed() {
8089
policy.setDeletesPctAllowed(42);
8190
assertEquals(42, policy.regularMergePolicy.getDeletesPctAllowed(), 0);
8291
}
92+
93+
public void testFindDeleteMergesReturnsNullOnEmptySegmentInfos() throws IOException {
94+
MergePolicy.MergeSpecification mergeSpecification = new OpenSearchTieredMergePolicy().findForcedDeletesMerges(
95+
new SegmentInfos(Version.LATEST.major),
96+
new MergePolicy.MergeContext() {
97+
@Override
98+
public int numDeletesToMerge(SegmentCommitInfo info) {
99+
return 0;
100+
}
101+
102+
@Override
103+
public int numDeletedDocs(SegmentCommitInfo info) {
104+
return 0;
105+
}
106+
107+
@Override
108+
public InfoStream getInfoStream() {
109+
return InfoStream.NO_OUTPUT;
110+
}
111+
112+
@Override
113+
public Set<SegmentCommitInfo> getMergingSegments() {
114+
return Collections.emptySet();
115+
}
116+
}
117+
);
118+
assertNull(mergeSpecification);
119+
}
83120
}

0 commit comments

Comments
 (0)