Skip to content

Commit 6940b2b

Browse files
authored
Remove groovy scripting language (#21607)
* Scripting: Remove groovy scripting language Groovy was deprecated in 5.0. This change removes it, along with the legacy default language infrastructure in scripting.
1 parent dbdcf9e commit 6940b2b

File tree

40 files changed

+40
-2022
lines changed

40 files changed

+40
-2022
lines changed

core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,6 @@ public QueryParseContext newParseContext(XContentParser parser) {
113113
return new QueryParseContext(indicesQueriesRegistry, parser, indexSettings.getParseFieldMatcher());
114114
}
115115

116-
/**
117-
* Returns a new {@link QueryParseContext} like {@link #newParseContext(XContentParser)} with the only diffence, that
118-
* the default script language will default to what has been set in the 'script.legacy.default_lang' setting.
119-
*/
120-
public QueryParseContext newParseContextWithLegacyScriptLanguage(XContentParser parser) {
121-
String defaultScriptLanguage = ScriptSettings.getLegacyDefaultLang(indexSettings.getNodeSettings());
122-
return new QueryParseContext(defaultScriptLanguage, indicesQueriesRegistry, parser, indexSettings.getParseFieldMatcher());
123-
}
124-
125116
public long nowInMillis() {
126117
return nowInMillis.getAsLong();
127118
}

core/src/main/java/org/elasticsearch/script/ScriptSettings.java

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,6 @@
3232

3333
public class ScriptSettings {
3434

35-
static final String LEGACY_DEFAULT_LANG = "groovy";
36-
37-
/**
38-
* The default script language to use for scripts that are stored in documents that have no script lang set explicitly.
39-
* This setting is legacy setting and only applies for indices created on ES versions prior to version 5.0
40-
*
41-
* This constant will be removed in the next major release.
42-
*/
43-
@Deprecated
44-
public static final String LEGACY_SCRIPT_SETTING = "script.legacy.default_lang";
45-
4635
private static final Map<ScriptType, Setting<Boolean>> SCRIPT_TYPE_SETTING_MAP;
4736

4837
static {
@@ -58,21 +47,13 @@ public class ScriptSettings {
5847

5948
private final Map<ScriptContext, Setting<Boolean>> scriptContextSettingMap;
6049
private final List<Setting<Boolean>> scriptLanguageSettings;
61-
private final Setting<String> defaultLegacyScriptLanguageSetting;
6250

6351
public ScriptSettings(ScriptEngineRegistry scriptEngineRegistry, ScriptContextRegistry scriptContextRegistry) {
6452
Map<ScriptContext, Setting<Boolean>> scriptContextSettingMap = contextSettings(scriptContextRegistry);
6553
this.scriptContextSettingMap = Collections.unmodifiableMap(scriptContextSettingMap);
6654

6755
List<Setting<Boolean>> scriptLanguageSettings = languageSettings(SCRIPT_TYPE_SETTING_MAP, scriptContextSettingMap, scriptEngineRegistry, scriptContextRegistry);
6856
this.scriptLanguageSettings = Collections.unmodifiableList(scriptLanguageSettings);
69-
70-
this.defaultLegacyScriptLanguageSetting = new Setting<>(LEGACY_SCRIPT_SETTING, LEGACY_DEFAULT_LANG, setting -> {
71-
if (!LEGACY_DEFAULT_LANG.equals(setting) && !scriptEngineRegistry.getRegisteredLanguages().containsKey(setting)) {
72-
throw new IllegalArgumentException("unregistered default language [" + setting + "]");
73-
}
74-
return setting;
75-
}, Property.NodeScope);
7657
}
7758

7859
private static Map<ScriptContext, Setting<Boolean>> contextSettings(ScriptContextRegistry scriptContextRegistry) {
@@ -169,19 +150,10 @@ public List<Setting<?>> getSettings() {
169150
settings.addAll(SCRIPT_TYPE_SETTING_MAP.values());
170151
settings.addAll(scriptContextSettingMap.values());
171152
settings.addAll(scriptLanguageSettings);
172-
settings.add(defaultLegacyScriptLanguageSetting);
173153
return settings;
174154
}
175155

176156
public Iterable<Setting<Boolean>> getScriptLanguageSettings() {
177157
return scriptLanguageSettings;
178158
}
179-
180-
public Setting<String> getDefaultLegacyScriptLanguageSetting() {
181-
return defaultLegacyScriptLanguageSetting;
182-
}
183-
184-
public static String getLegacyDefaultLang(Settings settings) {
185-
return settings.get(LEGACY_SCRIPT_SETTING, ScriptSettings.LEGACY_DEFAULT_LANG);
186-
}
187159
}

core/src/test/java/org/elasticsearch/index/query/QueryDSLDocumentationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ public void testScript() {
297297
parameters.put("param1", 5);
298298
scriptQuery(
299299
new Script(
300-
ScriptType.FILE, "groovy", "mygroovyscript",
300+
ScriptType.FILE, "coollang", "myscript",
301301
parameters)
302302
);
303303

core/src/test/java/org/elasticsearch/index/query/QueryRewriteContextTests.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

core/src/test/java/org/elasticsearch/script/ScriptServiceTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ public void testDefaultBehaviourFineGrainedSettings() throws IOException {
221221
builder.put("script.file", "true");
222222
}
223223
buildScriptService(builder.build());
224-
createFileScripts("groovy", "mustache", "dtest");
224+
createFileScripts("mustache", "dtest");
225225

226226
for (ScriptContext scriptContext : scriptContexts) {
227227
// only file scripts are accepted by default
@@ -292,7 +292,7 @@ public void testFineGrainedSettings() throws IOException {
292292
}
293293

294294
buildScriptService(builder.build());
295-
createFileScripts("groovy", "expression", "mustache", "dtest");
295+
createFileScripts("expression", "mustache", "dtest");
296296

297297
for (ScriptType scriptType : ScriptType.values()) {
298298
//make sure file scripts have a different name than inline ones.

core/src/test/java/org/elasticsearch/script/ScriptSettingsTests.java

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -34,39 +34,6 @@
3434

3535
public class ScriptSettingsTests extends ESTestCase {
3636

37-
public void testDefaultLegacyLanguageIsPainless() {
38-
ScriptEngineRegistry scriptEngineRegistry =
39-
new ScriptEngineRegistry(Collections.singletonList(new CustomScriptEngineService()));
40-
ScriptContextRegistry scriptContextRegistry = new ScriptContextRegistry(Collections.emptyList());
41-
ScriptSettings scriptSettings = new ScriptSettings(scriptEngineRegistry, scriptContextRegistry);
42-
assertThat(scriptSettings.getDefaultLegacyScriptLanguageSetting().get(Settings.EMPTY),
43-
equalTo(ScriptSettings.LEGACY_DEFAULT_LANG));
44-
}
45-
46-
public void testCustomLegacyDefaultLanguage() {
47-
ScriptEngineRegistry scriptEngineRegistry =
48-
new ScriptEngineRegistry(Collections.singletonList(new CustomScriptEngineService()));
49-
ScriptContextRegistry scriptContextRegistry = new ScriptContextRegistry(Collections.emptyList());
50-
ScriptSettings scriptSettings = new ScriptSettings(scriptEngineRegistry, scriptContextRegistry);
51-
String defaultLanguage = CustomScriptEngineService.NAME;
52-
Settings settings = Settings.builder().put(ScriptSettings.LEGACY_SCRIPT_SETTING, defaultLanguage).build();
53-
assertThat(scriptSettings.getDefaultLegacyScriptLanguageSetting().get(settings), equalTo(defaultLanguage));
54-
}
55-
56-
public void testInvalidLegacyDefaultLanguage() {
57-
ScriptEngineRegistry scriptEngineRegistry =
58-
new ScriptEngineRegistry(Collections.singletonList(new CustomScriptEngineService()));
59-
ScriptContextRegistry scriptContextRegistry = new ScriptContextRegistry(Collections.emptyList());
60-
ScriptSettings scriptSettings = new ScriptSettings(scriptEngineRegistry, scriptContextRegistry);
61-
Settings settings = Settings.builder().put(ScriptSettings.LEGACY_SCRIPT_SETTING, "C++").build();
62-
try {
63-
scriptSettings.getDefaultLegacyScriptLanguageSetting().get(settings);
64-
fail("should have seen unregistered default language");
65-
} catch (IllegalArgumentException e) {
66-
assertThat(e.getMessage(), containsString("unregistered default language [C++]"));
67-
}
68-
}
69-
7037
public void testSettingsAreProperlyPropogated() {
7138
ScriptEngineRegistry scriptEngineRegistry =
7239
new ScriptEngineRegistry(Collections.singletonList(new CustomScriptEngineService()));

docs/java-api/aggregations/metrics/scripted-metric-aggregation.asciidoc

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,6 @@ Here is how you can use
55
{ref}/search-aggregations-metrics-scripted-metric-aggregation.html[Scripted Metric Aggregation]
66
with Java API.
77

8-
Don't forget to add Groovy in your classpath if you want to run Groovy scripts in an embedded data node
9-
(for unit tests for example).
10-
For example, with Maven, add this dependency to your `pom.xml` file:
11-
12-
[source,xml]
13-
--------------------------------------------------
14-
<dependency>
15-
<groupId>org.codehaus.groovy</groupId>
16-
<artifactId>groovy-all</artifactId>
17-
<version>2.3.2</version>
18-
<classifier>indy</classifier>
19-
</dependency>
20-
--------------------------------------------------
21-
22-
238
===== Prepare aggregation request
249

2510
Here is an example on how to create the aggregation request:

docs/reference/getting-started.asciidoc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ If everything goes well, you should see a bunch of messages that look like below
153153
[2016-09-16T14:17:51,967][INFO ][o.e.p.PluginsService ] [6-bjhwl] loaded module [aggs-matrix-stats]
154154
[2016-09-16T14:17:51,967][INFO ][o.e.p.PluginsService ] [6-bjhwl] loaded module [ingest-common]
155155
[2016-09-16T14:17:51,967][INFO ][o.e.p.PluginsService ] [6-bjhwl] loaded module [lang-expression]
156-
[2016-09-16T14:17:51,967][INFO ][o.e.p.PluginsService ] [6-bjhwl] loaded module [lang-groovy]
157156
[2016-09-16T14:17:51,967][INFO ][o.e.p.PluginsService ] [6-bjhwl] loaded module [lang-mustache]
158157
[2016-09-16T14:17:51,967][INFO ][o.e.p.PluginsService ] [6-bjhwl] loaded module [lang-painless]
159158
[2016-09-16T14:17:51,967][INFO ][o.e.p.PluginsService ] [6-bjhwl] loaded module [percolator]

docs/reference/migration/migrate_6_0.asciidoc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ way to reindex old indices is to use the `reindex` API.
3333
* <<breaking_60_settings_changes>>
3434
* <<breaking_60_plugins_changes>>
3535
* <<breaking_60_indices_changes>>
36+
* <<breaking_60_scripting_changes>>
3637

3738
include::migrate_6_0/cat.asciidoc[]
3839

@@ -51,3 +52,5 @@ include::migrate_6_0/settings.asciidoc[]
5152
include::migrate_6_0/plugins.asciidoc[]
5253

5354
include::migrate_6_0/indices.asciidoc[]
55+
56+
include::migrate_6_0/scripting.asciidoc[]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[[breaking_60_scripting_changes]]
2+
=== Scripting changes
3+
4+
==== Groovy language removed
5+
6+
The groovy scripting language was deprecated in elasticsearch 5.0 and is now removed.
7+
Use painless instead.

0 commit comments

Comments
 (0)