|
@@ -28,7 +28,9 @@ import org.apache.logging.log4j.core.filter.RegexFilter;
|
|
|
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
|
|
|
import org.elasticsearch.action.admin.cluster.node.stats.NodeStats;
|
|
|
import org.elasticsearch.action.admin.cluster.node.stats.NodesStatsResponse;
|
|
|
+import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
|
|
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
|
|
+import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequestBuilder;
|
|
|
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
|
|
import org.elasticsearch.common.Priority;
|
|
|
import org.elasticsearch.common.logging.Loggers;
|
|
@@ -417,6 +419,53 @@ public class UpdateSettingsIT extends ESIntegTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testInvalidMergeMaxThreadCount() throws IllegalAccessException {
|
|
|
+ CreateIndexRequestBuilder createBuilder = prepareCreate("test")
|
|
|
+ .setSettings(Settings.builder()
|
|
|
+ .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, "1")
|
|
|
+ .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, "0")
|
|
|
+ .put(MergePolicyConfig.INDEX_MERGE_POLICY_MAX_MERGE_AT_ONCE_SETTING.getKey(), "2")
|
|
|
+ .put(MergePolicyConfig.INDEX_MERGE_POLICY_SEGMENTS_PER_TIER_SETTING.getKey(), "2")
|
|
|
+ .put(MergeSchedulerConfig.MAX_THREAD_COUNT_SETTING.getKey(), "100")
|
|
|
+ .put(MergeSchedulerConfig.MAX_MERGE_COUNT_SETTING.getKey(), "10")
|
|
|
+ );
|
|
|
+ IllegalArgumentException exc = expectThrows(IllegalArgumentException.class,
|
|
|
+ () -> createBuilder.get());
|
|
|
+ assertThat(exc.getMessage(), equalTo("maxThreadCount (= 100) should be <= maxMergeCount (= 10)"));
|
|
|
+
|
|
|
+ assertAcked(prepareCreate("test")
|
|
|
+ .setSettings(Settings.builder()
|
|
|
+ .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, "1")
|
|
|
+ .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, "0")
|
|
|
+ .put(MergePolicyConfig.INDEX_MERGE_POLICY_MAX_MERGE_AT_ONCE_SETTING.getKey(), "2")
|
|
|
+ .put(MergePolicyConfig.INDEX_MERGE_POLICY_SEGMENTS_PER_TIER_SETTING.getKey(), "2")
|
|
|
+ .put(MergeSchedulerConfig.MAX_THREAD_COUNT_SETTING.getKey(), "100")
|
|
|
+ .put(MergeSchedulerConfig.MAX_MERGE_COUNT_SETTING.getKey(), "100")
|
|
|
+ ));
|
|
|
+
|
|
|
+ {
|
|
|
+ UpdateSettingsRequestBuilder updateBuilder = client().admin().indices()
|
|
|
+ .prepareUpdateSettings("test")
|
|
|
+ .setSettings(Settings.builder()
|
|
|
+ .put(MergeSchedulerConfig.MAX_THREAD_COUNT_SETTING.getKey(), "1000")
|
|
|
+ );
|
|
|
+ exc = expectThrows(IllegalArgumentException.class,
|
|
|
+ () -> updateBuilder.get());
|
|
|
+ assertThat(exc.getMessage(), equalTo("maxThreadCount (= 1000) should be <= maxMergeCount (= 100)"));
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+ UpdateSettingsRequestBuilder updateBuilder = client().admin().indices()
|
|
|
+ .prepareUpdateSettings("test")
|
|
|
+ .setSettings(Settings.builder()
|
|
|
+ .put(MergeSchedulerConfig.MAX_MERGE_COUNT_SETTING.getKey(), "10")
|
|
|
+ );
|
|
|
+ exc = expectThrows(IllegalArgumentException.class,
|
|
|
+ () -> updateBuilder.get());
|
|
|
+ assertThat(exc.getMessage(), equalTo("maxThreadCount (= 100) should be <= maxMergeCount (= 10)"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// #6882: make sure we can change index.merge.scheduler.max_thread_count live
|
|
|
public void testUpdateMergeMaxThreadCount() throws IllegalAccessException {
|
|
|
MockAppender mockAppender = new MockAppender("testUpdateMergeMaxThreadCount");
|