From 8135a4ac9f8b938332ab43b0726267072e521012 Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Tue, 22 Dec 2015 09:56:26 +0100 Subject: [PATCH] Remove `index.compound_on_flush` setting and default to `true` We added this undocumented realtime setting as backup plan long ago but to date we haven't had a situation where it was a problem. It's reducing the number of filehandles in the NRT case dramatically and should always be enabled. --- .../elasticsearch/cluster/ClusterModule.java | 1 - .../index/engine/EngineConfig.java | 21 ----- .../index/engine/InternalEngine.java | 3 +- .../elasticsearch/index/shard/IndexShard.java | 6 -- .../index/engine/InternalEngineIT.java | 88 ------------------- .../engine/InternalEngineSettingsTests.java | 8 +- .../index/engine/InternalEngineTests.java | 22 ++--- .../index/engine/ShadowEngineTests.java | 30 +++---- 8 files changed, 21 insertions(+), 158 deletions(-) delete mode 100644 core/src/test/java/org/elasticsearch/index/engine/InternalEngineIT.java diff --git a/core/src/main/java/org/elasticsearch/cluster/ClusterModule.java b/core/src/main/java/org/elasticsearch/cluster/ClusterModule.java index 42517854f08..9ed87457857 100644 --- a/core/src/main/java/org/elasticsearch/cluster/ClusterModule.java +++ b/core/src/main/java/org/elasticsearch/cluster/ClusterModule.java @@ -152,7 +152,6 @@ public class ClusterModule extends AbstractModule { registerIndexDynamicSetting(IndicesTTLService.INDEX_TTL_DISABLE_PURGE, Validator.EMPTY); registerIndexDynamicSetting(IndexShard.INDEX_REFRESH_INTERVAL, Validator.TIME); registerIndexDynamicSetting(PrimaryShardAllocator.INDEX_RECOVERY_INITIAL_SHARDS, Validator.EMPTY); - registerIndexDynamicSetting(EngineConfig.INDEX_COMPOUND_ON_FLUSH, Validator.BOOLEAN); registerIndexDynamicSetting(EngineConfig.INDEX_GC_DELETES_SETTING, Validator.TIME); registerIndexDynamicSetting(IndexShard.INDEX_FLUSH_ON_CLOSE, Validator.BOOLEAN); registerIndexDynamicSetting(EngineConfig.INDEX_VERSION_MAP_SIZE, Validator.BYTES_SIZE_OR_PERCENTAGE); diff --git a/core/src/main/java/org/elasticsearch/index/engine/EngineConfig.java b/core/src/main/java/org/elasticsearch/index/engine/EngineConfig.java index c5da8e83b3d..b44265f37ad 100644 --- a/core/src/main/java/org/elasticsearch/index/engine/EngineConfig.java +++ b/core/src/main/java/org/elasticsearch/index/engine/EngineConfig.java @@ -53,7 +53,6 @@ public final class EngineConfig { private volatile ByteSizeValue indexingBufferSize; private volatile ByteSizeValue versionMapSize; private volatile String versionMapSizeSetting; - private volatile boolean compoundOnFlush = true; private long gcDeletesInMillis = DEFAULT_GC_DELETES.millis(); private volatile boolean enableGcDeletes = true; private final TimeValue flushMergesAfter; @@ -73,11 +72,6 @@ public final class EngineConfig { private final QueryCache queryCache; private final QueryCachingPolicy queryCachingPolicy; - /** - * Index setting for compound file on flush. This setting is realtime updateable. - */ - public static final String INDEX_COMPOUND_ON_FLUSH = "index.compound_on_flush"; - /** * Index setting to enable / disable deletes garbage collection. * This setting is realtime updateable @@ -132,7 +126,6 @@ public final class EngineConfig { this.similarity = similarity; this.codecService = codecService; this.eventListener = eventListener; - this.compoundOnFlush = settings.getAsBoolean(EngineConfig.INDEX_COMPOUND_ON_FLUSH, compoundOnFlush); codecName = settings.get(EngineConfig.INDEX_CODEC_SETTING, EngineConfig.DEFAULT_CODEC_NAME); // We start up inactive and rely on IndexingMemoryController to give us our fair share once we start indexing: indexingBufferSize = IndexingMemoryController.INACTIVE_SHARD_INDEXING_BUFFER; @@ -208,13 +201,6 @@ public final class EngineConfig { return indexingBufferSize; } - /** - * Returns true iff flushed segments should be written as compound file system. Defaults to true - */ - public boolean isCompoundOnFlush() { - return compoundOnFlush; - } - /** * Returns the GC deletes cycle in milliseconds. */ @@ -346,13 +332,6 @@ public final class EngineConfig { this.gcDeletesInMillis = gcDeletesInMillis; } - /** - * Sets if flushed segments should be written as compound file system. Defaults to true - */ - public void setCompoundOnFlush(boolean compoundOnFlush) { - this.compoundOnFlush = compoundOnFlush; - } - /** * Returns the {@link org.elasticsearch.index.shard.TranslogRecoveryPerformer} for this engine. This class is used * to apply transaction log operations to the engine. It encapsulates all the logic to transfer the translog entry into diff --git a/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java b/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java index 7911d219684..be2b73ea6c7 100644 --- a/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java +++ b/core/src/main/java/org/elasticsearch/index/engine/InternalEngine.java @@ -313,7 +313,6 @@ public class InternalEngine extends Engine { try { final LiveIndexWriterConfig iwc = indexWriter.getConfig(); iwc.setRAMBufferSizeMB(engineConfig.getIndexingBufferSize().mbFrac()); - iwc.setUseCompoundFile(engineConfig.isCompoundOnFlush()); } catch (AlreadyClosedException ex) { // ignore } @@ -939,7 +938,7 @@ public class InternalEngine extends Engine { * here but with 1s poll this is only executed twice at most * in combination with the default writelock timeout*/ iwc.setWriteLockTimeout(5000); - iwc.setUseCompoundFile(this.engineConfig.isCompoundOnFlush()); + iwc.setUseCompoundFile(true); // always use compound on flush - reduces # of file-handles on refresh // Warm-up hook for newly-merged segments. Warming up segments here is better since it will be performed at the end // of the merge operation and won't slow down _refresh iwc.setMergedSegmentWarmer(new IndexReaderWarmer() { diff --git a/core/src/main/java/org/elasticsearch/index/shard/IndexShard.java b/core/src/main/java/org/elasticsearch/index/shard/IndexShard.java index 4545787231a..84752af1e68 100644 --- a/core/src/main/java/org/elasticsearch/index/shard/IndexShard.java +++ b/core/src/main/java/org/elasticsearch/index/shard/IndexShard.java @@ -1179,12 +1179,6 @@ public class IndexShard extends AbstractIndexShardComponent { change = true; } - final boolean compoundOnFlush = settings.getAsBoolean(EngineConfig.INDEX_COMPOUND_ON_FLUSH, config.isCompoundOnFlush()); - if (compoundOnFlush != config.isCompoundOnFlush()) { - logger.info("updating {} from [{}] to [{}]", EngineConfig.INDEX_COMPOUND_ON_FLUSH, config.isCompoundOnFlush(), compoundOnFlush); - config.setCompoundOnFlush(compoundOnFlush); - change = true; - } final String versionMapSize = settings.get(EngineConfig.INDEX_VERSION_MAP_SIZE, config.getVersionMapSizeSetting()); if (config.getVersionMapSizeSetting().equals(versionMapSize) == false) { config.setVersionMapSizeSetting(versionMapSize); diff --git a/core/src/test/java/org/elasticsearch/index/engine/InternalEngineIT.java b/core/src/test/java/org/elasticsearch/index/engine/InternalEngineIT.java deleted file mode 100644 index 76c07edcb0d..00000000000 --- a/core/src/test/java/org/elasticsearch/index/engine/InternalEngineIT.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.index.engine; - -import org.elasticsearch.action.admin.indices.segments.IndexSegments; -import org.elasticsearch.action.admin.indices.segments.IndexShardSegments; -import org.elasticsearch.action.admin.indices.segments.IndicesSegmentResponse; -import org.elasticsearch.action.admin.indices.segments.ShardSegments; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.test.ESIntegTestCase; -import org.hamcrest.Matchers; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -public class InternalEngineIT extends ESIntegTestCase { - public void testSetIndexCompoundOnFlush() { - client().admin().indices().prepareCreate("test").setSettings(Settings.builder().put("number_of_replicas", 0).put("number_of_shards", 1)).get(); - ensureGreen(); - client().prepareIndex("test", "foo").setSource("field", "foo").get(); - refresh(); - assertTotalCompoundSegments(1, 1, "test"); - client().admin().indices().prepareUpdateSettings("test") - .setSettings(Settings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, false)).get(); - client().prepareIndex("test", "foo").setSource("field", "foo").get(); - refresh(); - assertTotalCompoundSegments(1, 2, "test"); - - client().admin().indices().prepareUpdateSettings("test") - .setSettings(Settings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, true)).get(); - client().prepareIndex("test", "foo").setSource("field", "foo").get(); - refresh(); - assertTotalCompoundSegments(2, 3, "test"); - } - - private void assertTotalCompoundSegments(int i, int t, String index) { - IndicesSegmentResponse indicesSegmentResponse = client().admin().indices().prepareSegments(index).get(); - assertNotNull("indices segments response should contain indices", indicesSegmentResponse.getIndices()); - IndexSegments indexSegments = indicesSegmentResponse.getIndices().get(index); - assertNotNull(indexSegments); - assertNotNull(indexSegments.getShards()); - Collection values = indexSegments.getShards().values(); - int compounds = 0; - int total = 0; - for (IndexShardSegments indexShardSegments : values) { - for (ShardSegments s : indexShardSegments) { - for (Segment segment : s) { - if (segment.isSearch() && segment.getNumDocs() > 0) { - if (segment.isCompound()) { - compounds++; - } - total++; - } - } - } - } - assertThat(compounds, Matchers.equalTo(i)); - assertThat(total, Matchers.equalTo(t)); - } - - private Set segments(IndexSegments segments) { - Set segmentSet = new HashSet<>(); - for (IndexShardSegments s : segments) { - for (ShardSegments shardSegments : s) { - segmentSet.addAll(shardSegments.getSegments()); - } - } - return segmentSet; - } -} diff --git a/core/src/test/java/org/elasticsearch/index/engine/InternalEngineSettingsTests.java b/core/src/test/java/org/elasticsearch/index/engine/InternalEngineSettingsTests.java index 1ed022dbefa..c0b4b6c84ce 100644 --- a/core/src/test/java/org/elasticsearch/index/engine/InternalEngineSettingsTests.java +++ b/core/src/test/java/org/elasticsearch/index/engine/InternalEngineSettingsTests.java @@ -36,10 +36,6 @@ public class InternalEngineSettingsTests extends ESSingleNodeTestCase { // INDEX_COMPOUND_ON_FLUSH InternalEngine engine = ((InternalEngine) EngineAccess.engine(service.getShardOrNull(0))); assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(true)); - client().admin().indices().prepareUpdateSettings("foo").setSettings(Settings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, false).build()).get(); - assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(false)); - client().admin().indices().prepareUpdateSettings("foo").setSettings(Settings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, true).build()).get(); - assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(true)); // VERSION MAP SIZE @@ -61,7 +57,6 @@ public class InternalEngineSettingsTests extends ESSingleNodeTestCase { String versionMapString = versionMapAsPercent ? versionMapPercent + "%" : versionMapSizeInMB + "mb"; Settings build = Settings.builder() - .put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, compoundOnFlush) .put(EngineConfig.INDEX_GC_DELETES_SETTING, gcDeletes, TimeUnit.MILLISECONDS) .put(EngineConfig.INDEX_VERSION_MAP_SIZE, versionMapString) .build(); @@ -69,8 +64,7 @@ public class InternalEngineSettingsTests extends ESSingleNodeTestCase { client().admin().indices().prepareUpdateSettings("foo").setSettings(build).get(); LiveIndexWriterConfig currentIndexWriterConfig = engine.getCurrentIndexWriterConfig(); - assertEquals(engine.config().isCompoundOnFlush(), compoundOnFlush); - assertEquals(currentIndexWriterConfig.getUseCompoundFile(), compoundOnFlush); + assertEquals(currentIndexWriterConfig.getUseCompoundFile(), true); assertEquals(engine.config().getGcDeletesInMillis(), gcDeletes); diff --git a/core/src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java b/core/src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java index c8960883b19..13fce88e2c1 100644 --- a/core/src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java +++ b/core/src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java @@ -169,7 +169,6 @@ public class InternalEngineTests extends ESTestCase { codecName = "default"; } defaultSettings = IndexSettingsModule.newIndexSettings("test", Settings.builder() - .put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, randomBoolean()) .put(EngineConfig.INDEX_GC_DELETES_SETTING, "1h") // make sure this doesn't kick in on us .put(EngineConfig.INDEX_CODEC_SETTING, codecName) .put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT) @@ -300,7 +299,6 @@ public class InternalEngineTests extends ESTestCase { assertThat(segments.isEmpty(), equalTo(true)); assertThat(engine.segmentsStats().getCount(), equalTo(0l)); assertThat(engine.segmentsStats().getMemoryInBytes(), equalTo(0l)); - final boolean defaultCompound = defaultSettings.getSettings().getAsBoolean(EngineConfig.INDEX_COMPOUND_ON_FLUSH, true); // create a doc and refresh ParsedDocument doc = testParsedDocument("1", "1", "test", null, -1, -1, testDocumentWithTextField(), B_1, null); @@ -323,7 +321,7 @@ public class InternalEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(0).ramTree, nullValue()); engine.flush(); @@ -335,10 +333,7 @@ public class InternalEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); - - engine.config().setCompoundOnFlush(false); - engine.onSettingsChanged(); + assertThat(segments.get(0).isCompound(), equalTo(true)); ParsedDocument doc3 = testParsedDocument("3", "3", "test", null, -1, -1, testDocumentWithTextField(), B_3, null); engine.index(new Engine.Index(newUid("3"), doc3)); @@ -357,14 +352,14 @@ public class InternalEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(1).isCommitted(), equalTo(false)); assertThat(segments.get(1).isSearch(), equalTo(true)); assertThat(segments.get(1).getNumDocs(), equalTo(1)); assertThat(segments.get(1).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(1).isCompound(), equalTo(false)); + assertThat(segments.get(1).isCompound(), equalTo(true)); engine.delete(new Engine.Delete("test", "1", newUid("1"))); @@ -378,15 +373,14 @@ public class InternalEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(1)); assertThat(segments.get(0).getDeletedDocs(), equalTo(1)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(1).isCommitted(), equalTo(false)); assertThat(segments.get(1).isSearch(), equalTo(true)); assertThat(segments.get(1).getNumDocs(), equalTo(1)); assertThat(segments.get(1).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(1).isCompound(), equalTo(false)); + assertThat(segments.get(1).isCompound(), equalTo(true)); - engine.config().setCompoundOnFlush(true); engine.onSettingsChanged(); ParsedDocument doc4 = testParsedDocument("4", "4", "test", null, -1, -1, testDocumentWithTextField(), B_3, null); engine.index(new Engine.Index(newUid("4"), doc4)); @@ -400,13 +394,13 @@ public class InternalEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(1)); assertThat(segments.get(0).getDeletedDocs(), equalTo(1)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(1).isCommitted(), equalTo(false)); assertThat(segments.get(1).isSearch(), equalTo(true)); assertThat(segments.get(1).getNumDocs(), equalTo(1)); assertThat(segments.get(1).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(1).isCompound(), equalTo(false)); + assertThat(segments.get(1).isCompound(), equalTo(true)); assertThat(segments.get(2).isCommitted(), equalTo(false)); assertThat(segments.get(2).isSearch(), equalTo(true)); diff --git a/core/src/test/java/org/elasticsearch/index/engine/ShadowEngineTests.java b/core/src/test/java/org/elasticsearch/index/engine/ShadowEngineTests.java index 339dac2e58a..214bc343a8a 100644 --- a/core/src/test/java/org/elasticsearch/index/engine/ShadowEngineTests.java +++ b/core/src/test/java/org/elasticsearch/index/engine/ShadowEngineTests.java @@ -118,7 +118,6 @@ public class ShadowEngineTests extends ESTestCase { codecName = "default"; } defaultSettings = IndexSettingsModule.newIndexSettings("test", Settings.builder() - .put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, randomBoolean()) .put(EngineConfig.INDEX_GC_DELETES_SETTING, "1h") // make sure this doesn't kick in on us .put(EngineConfig.INDEX_CODEC_SETTING, codecName) .put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT) @@ -280,7 +279,6 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.isEmpty(), equalTo(true)); assertThat(primaryEngine.segmentsStats().getCount(), equalTo(0l)); assertThat(primaryEngine.segmentsStats().getMemoryInBytes(), equalTo(0l)); - final boolean defaultCompound = defaultSettings.getSettings().getAsBoolean(EngineConfig.INDEX_COMPOUND_ON_FLUSH, true); // create a doc and refresh ParsedDocument doc = testParsedDocument("1", "1", "test", null, -1, -1, testDocumentWithTextField(), B_1, null); @@ -303,7 +301,7 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertTrue(segments.get(0).isCompound()); assertThat(segments.get(0).ramTree, nullValue()); // Check that the replica sees nothing @@ -331,7 +329,7 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); segments = replicaEngine.segments(false); assertThat(segments.size(), equalTo(1)); @@ -340,12 +338,9 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); - primaryEngine.config().setCompoundOnFlush(false); - primaryEngine.onSettingsChanged(); - ParsedDocument doc3 = testParsedDocument("3", "3", "test", null, -1, -1, testDocumentWithTextField(), B_3, null); primaryEngine.index(new Engine.Index(newUid("3"), doc3)); primaryEngine.refresh("test"); @@ -363,12 +358,12 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(1).isCommitted(), equalTo(false)); assertThat(segments.get(1).isSearch(), equalTo(true)); assertThat(segments.get(1).getNumDocs(), equalTo(1)); assertThat(segments.get(1).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(1).isCompound(), equalTo(false)); + assertThat(segments.get(1).isCompound(), equalTo(true)); // Make visible to shadow replica primaryEngine.flush(); @@ -387,12 +382,12 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(2)); assertThat(segments.get(0).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(1).isCommitted(), equalTo(true)); assertThat(segments.get(1).isSearch(), equalTo(true)); assertThat(segments.get(1).getNumDocs(), equalTo(1)); assertThat(segments.get(1).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(1).isCompound(), equalTo(false)); + assertThat(segments.get(1).isCompound(), equalTo(true)); primaryEngine.delete(new Engine.Delete("test", "1", newUid("1"))); primaryEngine.refresh("test"); @@ -405,20 +400,17 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(1)); assertThat(segments.get(0).getDeletedDocs(), equalTo(1)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(1).isCommitted(), equalTo(true)); assertThat(segments.get(1).isSearch(), equalTo(true)); assertThat(segments.get(1).getNumDocs(), equalTo(1)); assertThat(segments.get(1).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(1).isCompound(), equalTo(false)); + assertThat(segments.get(1).isCompound(), equalTo(true)); // Make visible to shadow replica primaryEngine.flush(); replicaEngine.refresh("test"); - primaryEngine.config().setCompoundOnFlush(true); - primaryEngine.onSettingsChanged(); - ParsedDocument doc4 = testParsedDocument("4", "4", "test", null, -1, -1, testDocumentWithTextField(), B_3, null); primaryEngine.index(new Engine.Index(newUid("4"), doc4)); primaryEngine.refresh("test"); @@ -431,13 +423,13 @@ public class ShadowEngineTests extends ESTestCase { assertThat(segments.get(0).isSearch(), equalTo(true)); assertThat(segments.get(0).getNumDocs(), equalTo(1)); assertThat(segments.get(0).getDeletedDocs(), equalTo(1)); - assertThat(segments.get(0).isCompound(), equalTo(defaultCompound)); + assertThat(segments.get(0).isCompound(), equalTo(true)); assertThat(segments.get(1).isCommitted(), equalTo(true)); assertThat(segments.get(1).isSearch(), equalTo(true)); assertThat(segments.get(1).getNumDocs(), equalTo(1)); assertThat(segments.get(1).getDeletedDocs(), equalTo(0)); - assertThat(segments.get(1).isCompound(), equalTo(false)); + assertThat(segments.get(1).isCompound(), equalTo(true)); assertThat(segments.get(2).isCommitted(), equalTo(false)); assertThat(segments.get(2).isSearch(), equalTo(true));