From a8ff6d444e4727ca739efd7a458ff64b6fca2b43 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 11 Mar 2020 18:10:45 -0400 Subject: [PATCH 1/3] Add deprecation check for listener thread pool This commit adds a deprecation check for the listener thread pool settings as these will be removed in 8.0.0. --- docs/reference/migration/migrate_7_7.asciidoc | 1 + .../xpack/deprecation/DeprecationChecks.java | 4 ++- .../deprecation/NodeDeprecationChecks.java | 21 +++++++++++++ .../NodeDeprecationChecksTests.java | 30 +++++++++++++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) diff --git a/docs/reference/migration/migrate_7_7.asciidoc b/docs/reference/migration/migrate_7_7.asciidoc index 9aa971f7dd589..a4f4de62a05cf 100644 --- a/docs/reference/migration/migrate_7_7.asciidoc +++ b/docs/reference/migration/migrate_7_7.asciidoc @@ -66,6 +66,7 @@ do this. The behavior is now the same for both field types like documented in <>. [float] +[[deprecate-listener-thread-pool]] ==== `thread_pool.listener.size` and `thread_pool.listener.queue_size` have been deprecated The listener thread pool is no longer used internally by Elasticsearch. diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java index 46a74d8ba482f..2a175982cf8a0 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java @@ -45,7 +45,9 @@ private DeprecationChecks() { NodeDeprecationChecks::checkPidfile, NodeDeprecationChecks::checkProcessors, NodeDeprecationChecks::checkMissingRealmOrders, - NodeDeprecationChecks::checkUniqueRealmOrders + NodeDeprecationChecks::checkUniqueRealmOrders, + NodeDeprecationChecks::checkThreadPoolListenerQueueSize, + NodeDeprecationChecks::checkThreadPoolListenerSize )); static List> INDEX_SETTINGS_CHECKS = diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java index 5760a7db41a79..e46ed5db243c5 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java @@ -11,12 +11,14 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.EsExecutors; import org.elasticsearch.env.Environment; +import org.elasticsearch.threadpool.FixedExecutorBuilder; import org.elasticsearch.xpack.core.deprecation.DeprecationIssue; import org.elasticsearch.xpack.core.security.authc.RealmSettings; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -96,6 +98,25 @@ static DeprecationIssue checkUniqueRealmOrders(final Settings settings, final Pl ); } + static DeprecationIssue checkThreadPoolListenerQueueSize(final Settings settings, final PluginsAndModules pluginsAndModules) { + return checkThreadPoolListenerSetting("thread_pool.listener.queue_size", settings, pluginsAndModules); + } + + static DeprecationIssue checkThreadPoolListenerSize(final Settings settings, final PluginsAndModules pluginsAndModules) { + return checkThreadPoolListenerSetting("thread_pool.listener.size", settings, pluginsAndModules); + } + + private static DeprecationIssue checkThreadPoolListenerSetting(final String name, final Settings settings, final PluginsAndModules pluginsAndModules) { + final FixedExecutorBuilder builder = new FixedExecutorBuilder(settings, "listener", 1, -1, "thread_pool.listener", true); + final List> listenerSettings = builder.getRegisteredSettings(); + final Optional> setting = listenerSettings.stream().filter(s -> s.getKey().equals(name)).findFirst(); + assert setting.isPresent(); + return checkRemovedSetting( + settings, + setting.get(), + "https://www.elastic.co/guide/en/elasticsearch/reference/7.x/breaking-changes-7.7.html#deprecate-listener-thread-pool"); + } + private static DeprecationIssue checkDeprecatedSetting( final Settings settings, final PluginsAndModules pluginsAndModules, diff --git a/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecksTests.java b/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecksTests.java index 4b5970f22e9ff..19b5931c8f319 100644 --- a/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecksTests.java +++ b/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecksTests.java @@ -146,6 +146,36 @@ public void testCorrectRealmOrders() { assertEquals(0, deprecationIssues.size()); } + public void testThreadPoolListenerQueueSize() { + final int size = randomIntBetween(1, 4); + final Settings settings = Settings.builder().put("thread_pool.listener.queue_size", size).build(); + final PluginsAndModules pluginsAndModules = new PluginsAndModules(Collections.emptyList(), Collections.emptyList()); + final List issues = + DeprecationChecks.filterChecks(DeprecationChecks.NODE_SETTINGS_CHECKS, c -> c.apply(settings, pluginsAndModules)); + final DeprecationIssue expected = new DeprecationIssue( + DeprecationIssue.Level.CRITICAL, + "setting [thread_pool.listener.queue_size] is deprecated and will be removed in the next major version", + "https://www.elastic.co/guide/en/elasticsearch/reference/7.x/breaking-changes-7.7.html#deprecate-listener-thread-pool", + "the setting [thread_pool.listener.queue_size] is currently set to [" + size + "], remove this setting"); + assertThat(issues, contains(expected)); + assertSettingDeprecationsAndWarnings(new String[]{"thread_pool.listener.queue_size"}); + } + + public void testThreadPoolListenerSize() { + final int size = randomIntBetween(1, 4); + final Settings settings = Settings.builder().put("thread_pool.listener.size", size).build(); + final PluginsAndModules pluginsAndModules = new PluginsAndModules(Collections.emptyList(), Collections.emptyList()); + final List issues = + DeprecationChecks.filterChecks(DeprecationChecks.NODE_SETTINGS_CHECKS, c -> c.apply(settings, pluginsAndModules)); + final DeprecationIssue expected = new DeprecationIssue( + DeprecationIssue.Level.CRITICAL, + "setting [thread_pool.listener.size] is deprecated and will be removed in the next major version", + "https://www.elastic.co/guide/en/elasticsearch/reference/7.x/breaking-changes-7.7.html#deprecate-listener-thread-pool", + "the setting [thread_pool.listener.size] is currently set to [" + size + "], remove this setting"); + assertThat(issues, contains(expected)); + assertSettingDeprecationsAndWarnings(new String[]{"thread_pool.listener.size"}); + } + public void testRemovedSettingNotSet() { final Settings settings = Settings.EMPTY; final Setting removedSetting = Setting.simpleString("node.removed_setting"); From 622b517930fd70f75be3b22f407c1e8e0c5408c8 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 11 Mar 2020 18:23:21 -0400 Subject: [PATCH 2/3] Fix checkstyle --- .../xpack/deprecation/NodeDeprecationChecks.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java index e46ed5db243c5..49fa1297986b4 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java @@ -106,7 +106,11 @@ static DeprecationIssue checkThreadPoolListenerSize(final Settings settings, fin return checkThreadPoolListenerSetting("thread_pool.listener.size", settings, pluginsAndModules); } - private static DeprecationIssue checkThreadPoolListenerSetting(final String name, final Settings settings, final PluginsAndModules pluginsAndModules) { + private static DeprecationIssue checkThreadPoolListenerSetting( + final String name, + final Settings settings, + final PluginsAndModules pluginsAndModules + ) { final FixedExecutorBuilder builder = new FixedExecutorBuilder(settings, "listener", 1, -1, "thread_pool.listener", true); final List> listenerSettings = builder.getRegisteredSettings(); final Optional> setting = listenerSettings.stream().filter(s -> s.getKey().equals(name)).findFirst(); From 3cdd7a75b0826004b61b8b3d7d7587ab31c32d1b Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Thu, 12 Mar 2020 13:25:04 -0400 Subject: [PATCH 3/3] Feedback --- .../xpack/deprecation/DeprecationChecks.java | 4 ++-- .../xpack/deprecation/NodeDeprecationChecks.java | 14 +++++--------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java index 2a175982cf8a0..bc5ea2558c3cf 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java @@ -46,8 +46,8 @@ private DeprecationChecks() { NodeDeprecationChecks::checkProcessors, NodeDeprecationChecks::checkMissingRealmOrders, NodeDeprecationChecks::checkUniqueRealmOrders, - NodeDeprecationChecks::checkThreadPoolListenerQueueSize, - NodeDeprecationChecks::checkThreadPoolListenerSize + (settings, pluginsAndModules) -> NodeDeprecationChecks.checkThreadPoolListenerQueueSize(settings), + (settings, pluginsAndModules) -> NodeDeprecationChecks.checkThreadPoolListenerSize(settings) )); static List> INDEX_SETTINGS_CHECKS = diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java index 49fa1297986b4..f370ab26e6d38 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java @@ -98,19 +98,15 @@ static DeprecationIssue checkUniqueRealmOrders(final Settings settings, final Pl ); } - static DeprecationIssue checkThreadPoolListenerQueueSize(final Settings settings, final PluginsAndModules pluginsAndModules) { - return checkThreadPoolListenerSetting("thread_pool.listener.queue_size", settings, pluginsAndModules); + static DeprecationIssue checkThreadPoolListenerQueueSize(final Settings settings) { + return checkThreadPoolListenerSetting("thread_pool.listener.queue_size", settings); } - static DeprecationIssue checkThreadPoolListenerSize(final Settings settings, final PluginsAndModules pluginsAndModules) { - return checkThreadPoolListenerSetting("thread_pool.listener.size", settings, pluginsAndModules); + static DeprecationIssue checkThreadPoolListenerSize(final Settings settings) { + return checkThreadPoolListenerSetting("thread_pool.listener.size", settings); } - private static DeprecationIssue checkThreadPoolListenerSetting( - final String name, - final Settings settings, - final PluginsAndModules pluginsAndModules - ) { + private static DeprecationIssue checkThreadPoolListenerSetting(final String name, final Settings settings) { final FixedExecutorBuilder builder = new FixedExecutorBuilder(settings, "listener", 1, -1, "thread_pool.listener", true); final List> listenerSettings = builder.getRegisteredSettings(); final Optional> setting = listenerSettings.stream().filter(s -> s.getKey().equals(name)).findFirst();