Skip to content

Commit 51a56b3

Browse files
authored
Drop compile limit on runtime fields scripts (#61297)
This opts all of the script contexts used by `runtime_script` our of the compilation rate limiting because it'd be lame to prevent a mapping update because we can't compile the script.
1 parent 40e3aec commit 51a56b3

13 files changed

+209
-63
lines changed

x-pack/plugin/runtime-fields/src/main/java/org/elasticsearch/xpack/runtimefields/BooleanScriptFieldScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.Map;
2020

2121
public abstract class BooleanScriptFieldScript extends AbstractScriptFieldScript {
22-
public static final ScriptContext<Factory> CONTEXT = new ScriptContext<>("boolean_script_field", Factory.class);
22+
public static final ScriptContext<Factory> CONTEXT = newContext("boolean_script_field", Factory.class);
2323

2424
static List<Whitelist> whitelist() {
2525
return List.of(WhitelistLoader.loadFromResourceFiles(RuntimeFieldsPainlessExtension.class, "boolean_whitelist.txt"));

x-pack/plugin/runtime-fields/src/main/java/org/elasticsearch/xpack/runtimefields/DoubleScriptFieldScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.Map;
2020

2121
public abstract class DoubleScriptFieldScript extends AbstractScriptFieldScript {
22-
public static final ScriptContext<Factory> CONTEXT = new ScriptContext<>("double_script_field", Factory.class);
22+
public static final ScriptContext<Factory> CONTEXT = newContext("double_script_field", Factory.class);
2323

2424
static List<Whitelist> whitelist() {
2525
return List.of(WhitelistLoader.loadFromResourceFiles(RuntimeFieldsPainlessExtension.class, "double_whitelist.txt"));

x-pack/plugin/runtime-fields/src/main/java/org/elasticsearch/xpack/runtimefields/IpScriptFieldScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
* </ul>
4141
*/
4242
public abstract class IpScriptFieldScript extends AbstractScriptFieldScript {
43-
public static final ScriptContext<Factory> CONTEXT = new ScriptContext<>("ip_script_field", Factory.class);
43+
public static final ScriptContext<Factory> CONTEXT = newContext("ip_script_field", Factory.class);
4444

4545
static List<Whitelist> whitelist() {
4646
return List.of(WhitelistLoader.loadFromResourceFiles(RuntimeFieldsPainlessExtension.class, "ip_whitelist.txt"));

x-pack/plugin/runtime-fields/src/main/java/org/elasticsearch/xpack/runtimefields/LongScriptFieldScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import java.util.Map;
1919

2020
public abstract class LongScriptFieldScript extends AbstractLongScriptFieldScript {
21-
public static final ScriptContext<Factory> CONTEXT = new ScriptContext<>("long_script_field", Factory.class);
21+
public static final ScriptContext<Factory> CONTEXT = newContext("long_script_field", Factory.class);
2222

2323
static List<Whitelist> whitelist() {
2424
return List.of(WhitelistLoader.loadFromResourceFiles(RuntimeFieldsPainlessExtension.class, "long_whitelist.txt"));

x-pack/plugin/runtime-fields/src/main/java/org/elasticsearch/xpack/runtimefields/StringScriptFieldScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.Map;
2020

2121
public abstract class StringScriptFieldScript extends AbstractScriptFieldScript {
22-
public static final ScriptContext<Factory> CONTEXT = new ScriptContext<>("string_script_field", Factory.class);
22+
public static final ScriptContext<Factory> CONTEXT = newContext("string_script_field", Factory.class);
2323

2424
static List<Whitelist> whitelist() {
2525
return List.of(WhitelistLoader.loadFromResourceFiles(RuntimeFieldsPainlessExtension.class, "string_whitelist.txt"));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
package org.elasticsearch.xpack.runtimefields;
8+
9+
import org.elasticsearch.script.ScriptContext;
10+
11+
public class BooleanScriptFieldScriptTests extends ScriptFieldScriptTestCase<BooleanScriptFieldScript.Factory> {
12+
public static final BooleanScriptFieldScript.Factory DUMMY = (params, lookup) -> ctx -> new BooleanScriptFieldScript(
13+
params,
14+
lookup,
15+
ctx
16+
) {
17+
@Override
18+
public void execute() {
19+
new BooleanScriptFieldScript.Value(this).value(false);
20+
}
21+
};
22+
23+
@Override
24+
protected ScriptContext<BooleanScriptFieldScript.Factory> context() {
25+
return BooleanScriptFieldScript.CONTEXT;
26+
}
27+
28+
@Override
29+
protected BooleanScriptFieldScript.Factory dummyScript() {
30+
return DUMMY;
31+
}
32+
}

x-pack/plugin/runtime-fields/src/test/java/org/elasticsearch/xpack/runtimefields/DateScriptFieldScriptTests.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,9 @@
66

77
package org.elasticsearch.xpack.runtimefields;
88

9-
import org.elasticsearch.script.Script;
10-
import org.elasticsearch.script.ScriptService;
11-
import org.elasticsearch.script.ScriptType;
12-
import org.elasticsearch.test.ESTestCase;
9+
import org.elasticsearch.script.ScriptContext;
1310

14-
import java.io.IOException;
15-
import java.util.Map;
16-
17-
public class DateScriptFieldScriptTests extends ESTestCase {
11+
public class DateScriptFieldScriptTests extends ScriptFieldScriptTestCase<DateScriptFieldScript.Factory> {
1812
public static final DateScriptFieldScript.Factory DUMMY = (params, lookup, formatter) -> ctx -> new DateScriptFieldScript(
1913
params,
2014
lookup,
@@ -27,11 +21,13 @@ public void execute() {
2721
}
2822
};
2923

30-
public void testRateLimitingDisabled() throws IOException {
31-
try (ScriptService scriptService = TestScriptEngine.scriptService(DateScriptFieldScript.CONTEXT, DUMMY)) {
32-
for (int i = 0; i < 1000; i++) {
33-
scriptService.compile(new Script(ScriptType.INLINE, "test", "test_" + i, Map.of()), DateScriptFieldScript.CONTEXT);
34-
}
35-
}
24+
@Override
25+
protected ScriptContext<DateScriptFieldScript.Factory> context() {
26+
return DateScriptFieldScript.CONTEXT;
27+
}
28+
29+
@Override
30+
protected DateScriptFieldScript.Factory dummyScript() {
31+
return DUMMY;
3632
}
3733
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
package org.elasticsearch.xpack.runtimefields;
8+
9+
import org.elasticsearch.script.ScriptContext;
10+
11+
public class DoubleScriptFieldScriptTests extends ScriptFieldScriptTestCase<DoubleScriptFieldScript.Factory> {
12+
public static final DoubleScriptFieldScript.Factory DUMMY = (params, lookup) -> ctx -> new DoubleScriptFieldScript(
13+
params,
14+
lookup,
15+
ctx
16+
) {
17+
@Override
18+
public void execute() {
19+
new DoubleScriptFieldScript.Value(this).value(1.0);
20+
}
21+
};
22+
23+
@Override
24+
protected ScriptContext<DoubleScriptFieldScript.Factory> context() {
25+
return DoubleScriptFieldScript.CONTEXT;
26+
}
27+
28+
@Override
29+
protected DoubleScriptFieldScript.Factory dummyScript() {
30+
return DUMMY;
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
package org.elasticsearch.xpack.runtimefields;
8+
9+
import org.elasticsearch.script.ScriptContext;
10+
11+
public class IpScriptFieldScriptTests extends ScriptFieldScriptTestCase<IpScriptFieldScript.Factory> {
12+
public static final IpScriptFieldScript.Factory DUMMY = (params, lookup) -> ctx -> new IpScriptFieldScript(params, lookup, ctx) {
13+
@Override
14+
public void execute() {
15+
new IpScriptFieldScript.StringValue(this).stringValue("192.168.0.1");
16+
}
17+
};
18+
19+
@Override
20+
protected ScriptContext<IpScriptFieldScript.Factory> context() {
21+
return IpScriptFieldScript.CONTEXT;
22+
}
23+
24+
@Override
25+
protected IpScriptFieldScript.Factory dummyScript() {
26+
return DUMMY;
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
package org.elasticsearch.xpack.runtimefields;
8+
9+
import org.elasticsearch.script.ScriptContext;
10+
11+
public class LongScriptFieldScriptTests extends ScriptFieldScriptTestCase<LongScriptFieldScript.Factory> {
12+
public static final LongScriptFieldScript.Factory DUMMY = (params, lookup) -> ctx -> new LongScriptFieldScript(params, lookup, ctx) {
13+
@Override
14+
public void execute() {
15+
new LongScriptFieldScript.Value(this).value(1);
16+
}
17+
};
18+
19+
@Override
20+
protected ScriptContext<LongScriptFieldScript.Factory> context() {
21+
return LongScriptFieldScript.CONTEXT;
22+
}
23+
24+
@Override
25+
protected LongScriptFieldScript.Factory dummyScript() {
26+
return DUMMY;
27+
}
28+
}

0 commit comments

Comments
 (0)