Skip to content

Commit 040a810

Browse files
authored
Add deprecation check for pidfile setting (elastic#45939)
The pidfile setting is deprecated. This commit adds a deprecation check for usage of this setting.
1 parent 599bf2d commit 040a810

File tree

3 files changed

+62
-18
lines changed

3 files changed

+62
-18
lines changed

x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ private DeprecationChecks() {
4141

4242
static List<BiFunction<Settings, PluginsAndModules, DeprecationIssue>> NODE_SETTINGS_CHECKS =
4343
Collections.unmodifiableList(Arrays.asList(
44+
NodeDeprecationChecks::checkPidfile,
4445
NodeDeprecationChecks::checkProcessors
4546
));
4647

x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecks.java

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,59 @@
77
package org.elasticsearch.xpack.deprecation;
88

99
import org.elasticsearch.action.admin.cluster.node.info.PluginsAndModules;
10+
import org.elasticsearch.common.settings.Setting;
1011
import org.elasticsearch.common.settings.Settings;
1112
import org.elasticsearch.common.util.concurrent.EsExecutors;
13+
import org.elasticsearch.env.Environment;
1214
import org.elasticsearch.xpack.core.deprecation.DeprecationIssue;
1315

1416
import java.util.Locale;
1517

1618
class NodeDeprecationChecks {
1719

20+
static DeprecationIssue checkPidfile(final Settings settings, final PluginsAndModules pluginsAndModules) {
21+
return checkDeprecatedSetting(
22+
settings,
23+
pluginsAndModules,
24+
Environment.PIDFILE_SETTING,
25+
Environment.NODE_PIDFILE_SETTING,
26+
"https://www.elastic.co/guide/en/elasticsearch/reference/7.4/breaking-changes-7.4.html#deprecate-pidfile");
27+
}
28+
1829
static DeprecationIssue checkProcessors(final Settings settings , final PluginsAndModules pluginsAndModules) {
19-
if (EsExecutors.PROCESSORS_SETTING.exists(settings) == false) {
30+
return checkDeprecatedSetting(
31+
settings,
32+
pluginsAndModules,
33+
EsExecutors.PROCESSORS_SETTING,
34+
EsExecutors.NODE_PROCESSORS_SETTING,
35+
"https://www.elastic.co/guide/en/elasticsearch/reference/7.4/breaking-changes-7.4.html#deprecate-processors");
36+
}
37+
38+
private static DeprecationIssue checkDeprecatedSetting(
39+
final Settings settings,
40+
final PluginsAndModules pluginsAndModules,
41+
final Setting<?> deprecatedSetting,
42+
final Setting<?> replacementSetting,
43+
final String url) {
44+
assert deprecatedSetting.isDeprecated() : deprecatedSetting;
45+
if (deprecatedSetting.exists(settings) == false) {
2046
return null;
2147
}
48+
final String deprecatedSettingKey = deprecatedSetting.getKey();
49+
final String replacementSettingKey = replacementSetting.getKey();
50+
final String value = deprecatedSetting.get(settings).toString();
2251
final String message = String.format(
2352
Locale.ROOT,
2453
"setting [%s] is deprecated in favor of setting [%s]",
25-
EsExecutors.PROCESSORS_SETTING.getKey(),
26-
EsExecutors.NODE_PROCESSORS_SETTING.getKey());
27-
final String url =
28-
"https://www.elastic.co/guide/en/elasticsearch/reference/7.4/breaking-changes-7.4.html#deprecate-processors";
54+
deprecatedSettingKey,
55+
replacementSettingKey);
2956
final String details = String.format(
3057
Locale.ROOT,
31-
"the setting [%s] is currently set to [%d], instead set [%s] to [%d]",
32-
EsExecutors.PROCESSORS_SETTING.getKey(),
33-
EsExecutors.PROCESSORS_SETTING.get(settings),
34-
EsExecutors.NODE_PROCESSORS_SETTING.getKey(),
35-
EsExecutors.PROCESSORS_SETTING.get(settings));
58+
"the setting [%s] is currently set to [%s], instead set [%s] to [%s]",
59+
deprecatedSettingKey,
60+
value,
61+
replacementSettingKey,
62+
value);
3663
return new DeprecationIssue(DeprecationIssue.Level.CRITICAL, message, url, details);
3764
}
3865

x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/NodeDeprecationChecksTests.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.elasticsearch.common.settings.Setting;
1111
import org.elasticsearch.common.settings.Settings;
1212
import org.elasticsearch.common.util.concurrent.EsExecutors;
13+
import org.elasticsearch.env.Environment;
1314
import org.elasticsearch.test.ESTestCase;
1415
import org.elasticsearch.xpack.core.deprecation.DeprecationIssue;
1516

@@ -21,6 +22,29 @@
2122

2223
public class NodeDeprecationChecksTests extends ESTestCase {
2324

25+
public void testCheckDefaults() {
26+
final Settings settings = Settings.EMPTY;
27+
final PluginsAndModules pluginsAndModules = new PluginsAndModules(Collections.emptyList(), Collections.emptyList());
28+
final List<DeprecationIssue> issues =
29+
DeprecationChecks.filterChecks(DeprecationChecks.NODE_SETTINGS_CHECKS, c -> c.apply(settings, pluginsAndModules));
30+
assertThat(issues, empty());
31+
}
32+
33+
public void testCheckPidfile() {
34+
final String pidfile = randomAlphaOfLength(16);
35+
final Settings settings = Settings.builder().put(Environment.PIDFILE_SETTING.getKey(), pidfile).build();
36+
final PluginsAndModules pluginsAndModules = new PluginsAndModules(Collections.emptyList(), Collections.emptyList());
37+
final List<DeprecationIssue> issues =
38+
DeprecationChecks.filterChecks(DeprecationChecks.NODE_SETTINGS_CHECKS, c -> c.apply(settings, pluginsAndModules));
39+
final DeprecationIssue expected = new DeprecationIssue(
40+
DeprecationIssue.Level.CRITICAL,
41+
"setting [pidfile] is deprecated in favor of setting [node.pidfile]",
42+
"https://www.elastic.co/guide/en/elasticsearch/reference/7.4/breaking-changes-7.4.html#deprecate-pidfile",
43+
"the setting [pidfile] is currently set to [" + pidfile + "], instead set [node.pidfile] to [" + pidfile + "]");
44+
assertThat(issues, contains(expected));
45+
assertSettingDeprecationsAndWarnings(new Setting<?>[]{Environment.PIDFILE_SETTING});
46+
}
47+
2448
public void testCheckProcessors() {
2549
final int processors = randomIntBetween(1, 4);
2650
final Settings settings = Settings.builder().put(EsExecutors.PROCESSORS_SETTING.getKey(), processors).build();
@@ -36,12 +60,4 @@ public void testCheckProcessors() {
3660
assertSettingDeprecationsAndWarnings(new Setting<?>[]{EsExecutors.PROCESSORS_SETTING});
3761
}
3862

39-
public void testCheckProcessorsNotSet() {
40-
final Settings settings = Settings.EMPTY;
41-
final PluginsAndModules pluginsAndModules = new PluginsAndModules(Collections.emptyList(), Collections.emptyList());
42-
final List<DeprecationIssue> issues =
43-
DeprecationChecks.filterChecks(DeprecationChecks.NODE_SETTINGS_CHECKS, c -> c.apply(settings, pluginsAndModules));
44-
assertThat(issues, empty());
45-
}
46-
4763
}

0 commit comments

Comments
 (0)