You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by pa...@apache.org on 2022/10/05 22:37:37 UTC
[lucene] branch branch_9x updated: GITHUB-11761: Move minimum TieredMergePolicy delete percentage and change default value (#11831)
This is an automated email from the ASF dual-hosted git repository.
patrickz pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/lucene.git
The following commit(s) were added to refs/heads/branch_9x by this push:
new f7623842777 GITHUB-11761: Move minimum TieredMergePolicy delete percentage and change default value (#11831)
f7623842777 is described below
commit f76238427770a9acbbc6bd3eadbebc8b1210bbb6
Author: Marc D'Mello <ma...@gmail.com>
AuthorDate: Wed Oct 5 15:33:12 2022 -0700
GITHUB-11761: Move minimum TieredMergePolicy delete percentage and change default value (#11831)
Move minimum TieredMergePolicy delete percentage from 20% to 5%
and change deletePctAllowed default to 20%
Co-authored-by: Marc D'Mello <dm...@amazon.com>
---
lucene/CHANGES.txt | 3 +++
.../src/java/org/apache/lucene/index/TieredMergePolicy.java | 13 +++++++++----
.../test/org/apache/lucene/index/TestIndexWriterDelete.java | 1 +
.../test/org/apache/lucene/index/TestTieredMergePolicy.java | 1 +
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index b7ee9cf1146..67c7b8fc9d4 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -15,6 +15,9 @@ API Changes
* GITHUB#11804: FacetsCollector#collect is no longer final, allowing extension. (Greg Miller)
+* GITHUB#11761: TieredMergePolicy now allowed a maximum allowable deletes percentage of down to 5%, and the default
+ maximum allowable deletes percentage is changed from 33% to 20%. (Marc D'Mello)
+
Improvements
---------------------
* GITHUB#11785: Improve Tessellator performance by delaying calls to the method
diff --git a/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java b/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java
index eff23656dad..cc1a89e10ae 100644
--- a/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java
+++ b/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java
@@ -92,7 +92,7 @@ public class TieredMergePolicy extends MergePolicy {
private long floorSegmentBytes = 2 * 1024 * 1024L;
private double segsPerTier = 10.0;
private double forceMergeDeletesPctAllowed = 10.0;
- private double deletesPctAllowed = 33.0;
+ private double deletesPctAllowed = 20.0;
/** Sole constructor, setting all settings to their defaults. */
public TieredMergePolicy() {
@@ -151,12 +151,17 @@ public class TieredMergePolicy extends MergePolicy {
/**
* Controls the maximum percentage of deleted documents that is tolerated in the index. Lower
* values make the index more space efficient at the expense of increased CPU and I/O activity.
- * Values must be between 20 and 50. Default value is 33.
+ * Values must be between 5 and 50. Default value is 20.
+ *
+ * <p>When the maximum delete percentage is lowered, the indexing thread will call for merges more
+ * often, meaning that write amplification factor will be increased. Write amplification factor
+ * measures the number of times each document in the index is written. A higher write
+ * amplification factor will lead to higher CPU and I/O activity as indicated above.
*/
public TieredMergePolicy setDeletesPctAllowed(double v) {
- if (v < 20 || v > 50) {
+ if (v < 5 || v > 50) {
throw new IllegalArgumentException(
- "indexPctDeletedTarget must be >= 20.0 and <= 50 (got " + v + ")");
+ "indexPctDeletedTarget must be >= 5.0 and <= 50 (got " + v + ")");
}
deletesPctAllowed = v;
return this;
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
index 2115dc0cb72..9f8413a76bd 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
@@ -1345,6 +1345,7 @@ public class TestIndexWriterDelete extends LuceneTestCase {
w.addDocument(doc);
w.close();
iwc = new IndexWriterConfig(new MockAnalyzer(random()));
+ ((TieredMergePolicy) iwc.getMergePolicy()).setDeletesPctAllowed(33.0);
iwc.setOpenMode(IndexWriterConfig.OpenMode.APPEND);
w = new IndexWriter(d, iwc);
IndexReader r = DirectoryReader.open(w, false, false);
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
index 0523d9db21b..7d52107b900 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
@@ -310,6 +310,7 @@ public class TestTieredMergePolicy extends BaseMergePolicyTestCase {
((1024.0 * 1024.0)); // fudge it up, we're trying to catch egregious errors and segbytes
// don't really reflect the number for original merges.
tmp.setMaxMergedSegmentMB(mbSize);
+ tmp.setDeletesPctAllowed(33.0);
conf.setMaxBufferedDocs(100);
conf.setMergePolicy(tmp);