TEST: Avoid merges in testRecoveryWithOutOfOrderDelete

Since LUCENE-8263, testRecoveryWithOutOfOrderDelete may trigger merges
because of the deletes. In the test, we try to retain index#0 but
reclaim delete#1. However, if a merge is triggered, we will remove both
index#0 and delete#1.

This commit disables merges in this test. Another option is to index
more documents in the segment_2 to reduce the deletion ratio.
This commit is contained in:
Nhat Nguyen 2018-08-02 15:44:40 -04:00
parent 036cb3f864
commit 9f96073e64
1 changed files with 5 additions and 1 deletions

View File

@ -34,6 +34,7 @@ import org.elasticsearch.common.lucene.uid.Versions;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.MergePolicyConfig;
import org.elasticsearch.index.VersionType; import org.elasticsearch.index.VersionType;
import org.elasticsearch.index.engine.Engine; import org.elasticsearch.index.engine.Engine;
import org.elasticsearch.index.mapper.SourceToParse; import org.elasticsearch.index.mapper.SourceToParse;
@ -115,7 +116,10 @@ public class RecoveryTests extends ESIndexLevelReplicationTestCase {
* - index #5 * - index #5
* - If flush and the translog/lucene retention disabled, delete #1 will be removed while index #0 is still retained and replayed. * - If flush and the translog/lucene retention disabled, delete #1 will be removed while index #0 is still retained and replayed.
*/ */
Settings settings = Settings.builder().put(IndexSettings.INDEX_SOFT_DELETES_RETENTION_OPERATIONS_SETTING.getKey(), 10).build(); Settings settings = Settings.builder().put(IndexSettings.INDEX_SOFT_DELETES_RETENTION_OPERATIONS_SETTING.getKey(), 10)
// If soft-deletes is enabled, delete#1 will be reclaimed because its segment (segment_1) is fully deleted
// index#0 will be retained if merge is disabled; otherwise it will be reclaimed because gcp=3 and retained_ops=0
.put(MergePolicyConfig.INDEX_MERGE_ENABLED, false).build();
try (ReplicationGroup shards = createGroup(1, settings)) { try (ReplicationGroup shards = createGroup(1, settings)) {
shards.startAll(); shards.startAll();
// create out of order delete and index op on replica // create out of order delete and index op on replica