diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index 0654801f8cb26..b1cb9c3a4f57a 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -9,6 +9,9 @@ === Breaking Changes +<> ({pull}29609[#29609]) + === Breaking Java Changes === Deprecations diff --git a/docs/reference/migration/migrate_7_0/settings.asciidoc b/docs/reference/migration/migrate_7_0/settings.asciidoc index 1556056337b37..b09cecf5a48dc 100644 --- a/docs/reference/migration/migrate_7_0/settings.asciidoc +++ b/docs/reference/migration/migrate_7_0/settings.asciidoc @@ -13,4 +13,15 @@ requests with a single-document payload. This means that these requests are executed on the bulk thread pool. As such, the indexing thread pool is no longer needed and has been removed. As such, the settings - `thread_pool.index.size` and `thread_pool.index.queue_size` have been removed. \ No newline at end of file + `thread_pool.index.size` and `thread_pool.index.queue_size` have been removed. + +[[write-thread-pool-fallback]] +==== Write thread pool fallback + +* The bulk thread pool was replaced by the write thread pool in 6.3.0. However, + for backwards compatibility reasons the name `bulk` was still usable as fallback + settings `thread_pool.bulk.size` and `thread_pool.bulk.queue_size` for + `thread_pool.write.size` and `thread_pool.write.queue_size`, respectively, and + the system property `es.thread_pool.write.use_bulk_as_display_name` was + available to keep the display output in APIs as `bulk` instead of `write`. + These fallback settings and this system property have been removed. diff --git a/server/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java b/server/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java index 5fa10c0bfe85d..43da1044c6bd0 100644 --- a/server/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java +++ b/server/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java @@ -19,7 +19,6 @@ package org.elasticsearch.threadpool; -import org.elasticsearch.common.Booleans; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.SizeValue; @@ -39,9 +38,7 @@ public final class FixedExecutorBuilder extends ExecutorBuilder { private final Setting sizeSetting; - private final Setting fallbackSizeSetting; private final Setting queueSizeSetting; - private final Setting fallbackQueueSizeSetting; /** * Construct a fixed executor builder; the settings will have the key prefix "thread_pool." followed by the executor name. @@ -55,19 +52,6 @@ public final class FixedExecutorBuilder extends ExecutorBuilder( + sizeKey, + s -> Integer.toString(size), + s -> Setting.parseInt(s, 1, applyHardSizeLimit(settings, name), sizeKey), + Setting.Property.NodeScope); final String queueSizeKey = settingsKey(prefix, "queue_size"); - if (fallbackName == null) { - assert fallbackPrefix == null; - final Setting.Property[] properties = {Setting.Property.NodeScope}; - this.sizeSetting = sizeSetting(settings, name, size, prefix, properties); - this.fallbackSizeSetting = null; - this.queueSizeSetting = queueSizeSetting(prefix, queueSize, properties); - this.fallbackQueueSizeSetting = null; - } else { - assert fallbackPrefix != null; - final Setting.Property[] properties = { Setting.Property.NodeScope }; - final Setting.Property[] fallbackProperties = { Setting.Property.NodeScope, Setting.Property.Deprecated }; - final Setting fallbackSizeSetting = sizeSetting(settings, fallbackName, size, fallbackPrefix, fallbackProperties); - this.sizeSetting = - new Setting<>( - new Setting.SimpleKey(sizeKey), - fallbackSizeSetting, - s -> Setting.parseInt(s, 1, applyHardSizeLimit(settings, name), sizeKey), - properties); - this.fallbackSizeSetting = fallbackSizeSetting; - final Setting fallbackQueueSizeSetting = queueSizeSetting(fallbackPrefix, queueSize, fallbackProperties); - this.queueSizeSetting = - new Setting<>( - new Setting.SimpleKey(queueSizeKey), - fallbackQueueSizeSetting, - s -> Setting.parseInt(s, Integer.MIN_VALUE, queueSizeKey), - properties); - this.fallbackQueueSizeSetting = fallbackQueueSizeSetting; - } - } - - private Setting sizeSetting( - final Settings settings, final String name, final int size, final String prefix, final Setting.Property[] properties) { - final String sizeKey = settingsKey(prefix, "size"); - return new Setting<>( - sizeKey, - s -> Integer.toString(size), - s -> Setting.parseInt(s, 1, applyHardSizeLimit(settings, name), sizeKey), - properties); - } - - private Setting queueSizeSetting(final String prefix, final int queueSize, final Setting.Property[] properties) { - return Setting.intSetting(settingsKey(prefix, "queue_size"), queueSize, properties); + this.queueSizeSetting = Setting.intSetting(queueSizeKey, queueSize, Setting.Property.NodeScope); } @Override public List> getRegisteredSettings() { - if (fallbackSizeSetting == null && fallbackQueueSizeSetting == null) { - return Arrays.asList(sizeSetting, queueSizeSetting); - } else { - assert fallbackSizeSetting != null && fallbackQueueSizeSetting != null; - return Arrays.asList(sizeSetting, fallbackSizeSetting, queueSizeSetting, fallbackQueueSizeSetting); - } + return Arrays.asList(sizeSetting, queueSizeSetting); } @Override @@ -170,14 +94,8 @@ ThreadPool.ExecutorHolder build(final FixedExecutorSettings settings, final Thre final ThreadFactory threadFactory = EsExecutors.daemonThreadFactory(EsExecutors.threadName(settings.nodeName, name())); final ExecutorService executor = EsExecutors.newFixed(settings.nodeName + "/" + name(), size, queueSize, threadFactory, threadContext); - final String name; - if ("write".equals(name()) && Booleans.parseBoolean(System.getProperty("es.thread_pool.write.use_bulk_as_display_name", "false"))) { - name = "bulk"; - } else { - name = name(); - } final ThreadPool.Info info = - new ThreadPool.Info(name, ThreadPool.ThreadPoolType.FIXED, size, size, null, queueSize < 0 ? null : new SizeValue(queueSize)); + new ThreadPool.Info(name(), ThreadPool.ThreadPoolType.FIXED, size, size, null, queueSize < 0 ? null : new SizeValue(queueSize)); return new ThreadPool.ExecutorHolder(executor, info); } diff --git a/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java b/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java index b1c6f8d07d520..51a4adec8d16d 100644 --- a/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java +++ b/server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java @@ -170,7 +170,7 @@ public ThreadPool(final Settings settings, final ExecutorBuilder... customBui final int halfProcMaxAt10 = halfNumberOfProcessorsMaxTen(availableProcessors); final int genericThreadPoolMax = boundedBy(4 * availableProcessors, 128, 512); builders.put(Names.GENERIC, new ScalingExecutorBuilder(Names.GENERIC, 4, genericThreadPoolMax, TimeValue.timeValueSeconds(30))); - builders.put(Names.WRITE, new FixedExecutorBuilder(settings, Names.WRITE, "bulk", availableProcessors, 200)); + builders.put(Names.WRITE, new FixedExecutorBuilder(settings, Names.WRITE, availableProcessors, 200)); builders.put(Names.GET, new FixedExecutorBuilder(settings, Names.GET, availableProcessors, 1000)); builders.put(Names.ANALYZE, new FixedExecutorBuilder(settings, Names.ANALYZE, 1, 16)); builders.put(Names.SEARCH, new AutoQueueAdjustingExecutorBuilder(settings, diff --git a/server/src/test/java/org/elasticsearch/action/RejectionActionIT.java b/server/src/test/java/org/elasticsearch/action/RejectionActionIT.java index a4cdc3408fb27..b45449425cb24 100644 --- a/server/src/test/java/org/elasticsearch/action/RejectionActionIT.java +++ b/server/src/test/java/org/elasticsearch/action/RejectionActionIT.java @@ -45,8 +45,8 @@ protected Settings nodeSettings(int nodeOrdinal) { .put(super.nodeSettings(nodeOrdinal)) .put("thread_pool.search.size", 1) .put("thread_pool.search.queue_size", 1) - .put("thread_pool.bulk.size", 1) - .put("thread_pool.bulk.queue_size", 1) + .put("thread_pool.write.size", 1) + .put("thread_pool.write.queue_size", 1) .put("thread_pool.get.size", 1) .put("thread_pool.get.queue_size", 1) .build();