Scripts: Remove ClusterState from compile api
Stored scripts are pulled from the cluster state, and the current api requires passing the ClusterState on each call to compile. However, this means every user of the ScriptService needs to depend on the ClusterService. Instead, this change makes the ScriptService a ClusterStateListener. It also simplifies tests a lot, as they no longer need to create fake cluster states (except when testing stored scripts).
This commit is contained in:
parent
6d52cec2a0
commit
ecf6101798
|
@ -251,8 +251,7 @@ public class UpdateHelper extends AbstractComponent {
|
|||
private Map<String, Object> executeScript(Script script, Map<String, Object> ctx) {
|
||||
try {
|
||||
if (scriptService != null) {
|
||||
ClusterState state = clusterService.state();
|
||||
ExecutableScript executableScript = scriptService.executable(script, ScriptContext.Standard.UPDATE, Collections.emptyMap(), state);
|
||||
ExecutableScript executableScript = scriptService.executable(script, ScriptContext.Standard.UPDATE, Collections.emptyMap());
|
||||
executableScript.setNextVar("ctx", ctx);
|
||||
executableScript.run();
|
||||
// we need to unwrap the ctx...
|
||||
|
|
|
@ -504,7 +504,7 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl
|
|||
if (scriptFields != null) {
|
||||
for (ScriptField field : scriptFields) {
|
||||
SearchScript searchScript = innerHitsContext.scriptService().search(innerHitsContext.lookup(), field.script(),
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap(), context.getClusterState());
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
innerHitsContext.scriptFields().add(new org.elasticsearch.search.fetch.script.ScriptFieldsContext.ScriptField(
|
||||
field.fieldName(), searchScript, field.ignoreFailure()));
|
||||
}
|
||||
|
|
|
@ -157,7 +157,7 @@ public class ScriptQueryBuilder extends AbstractQueryBuilder<ScriptQueryBuilder>
|
|||
|
||||
@Override
|
||||
protected Query doToQuery(QueryShardContext context) throws IOException {
|
||||
return new ScriptQuery(script, context.getScriptService(), context.lookup(), context.getClusterState());
|
||||
return new ScriptQuery(script, context.getScriptService(), context.lookup());
|
||||
}
|
||||
|
||||
static class ScriptQuery extends Query {
|
||||
|
@ -166,9 +166,9 @@ public class ScriptQueryBuilder extends AbstractQueryBuilder<ScriptQueryBuilder>
|
|||
|
||||
private final SearchScript searchScript;
|
||||
|
||||
public ScriptQuery(Script script, ScriptService scriptService, SearchLookup searchLookup, ClusterState state) {
|
||||
public ScriptQuery(Script script, ScriptService scriptService, SearchLookup searchLookup) {
|
||||
this.script = script;
|
||||
this.searchScript = scriptService.search(searchLookup, script, ScriptContext.Standard.SEARCH, Collections.emptyMap(), state);
|
||||
this.searchScript = scriptService.search(searchLookup, script, ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -177,7 +177,7 @@ public class TemplateQueryBuilder extends AbstractQueryBuilder<TemplateQueryBuil
|
|||
@Override
|
||||
protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) throws IOException {
|
||||
ExecutableScript executable = queryRewriteContext.getScriptService().executable(template,
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap(), queryRewriteContext.getClusterState());
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
BytesReference querySource = (BytesReference) executable.run();
|
||||
try (XContentParser qSourceParser = XContentFactory.xContent(querySource).createParser(querySource)) {
|
||||
final QueryParseContext queryParseContext = queryRewriteContext.newParseContext(qSourceParser);
|
||||
|
|
|
@ -103,7 +103,7 @@ public class ScriptScoreFunctionBuilder extends ScoreFunctionBuilder<ScriptScore
|
|||
protected ScoreFunction doToFunction(QueryShardContext context) {
|
||||
try {
|
||||
SearchScript searchScript = context.getScriptService().search(context.lookup(), script, ScriptContext.Standard.SEARCH,
|
||||
Collections.emptyMap(), context.getClusterState());
|
||||
Collections.emptyMap());
|
||||
return new ScriptScoreFunction(script, searchScript);
|
||||
} catch (Exception e) {
|
||||
throw new QueryShardException(context, "script_score: the script could not be loaded", e);
|
||||
|
|
|
@ -46,8 +46,7 @@ public class InternalTemplateService implements TemplateService {
|
|||
CompiledScript compiledScript = scriptService.compile(
|
||||
script,
|
||||
ScriptContext.Standard.INGEST,
|
||||
Collections.emptyMap(),
|
||||
null); // null == OK, because ingest templates are only inline templates.
|
||||
Collections.emptyMap());
|
||||
return new Template() {
|
||||
@Override
|
||||
public String execute(Map<String, Object> model) {
|
||||
|
|
|
@ -246,6 +246,7 @@ public class Node implements Closeable {
|
|||
resourcesToClose.add(resourceWatcherService);
|
||||
final NetworkService networkService = new NetworkService(settings);
|
||||
final ClusterService clusterService = new ClusterService(settings, settingsModule.getClusterSettings(), threadPool);
|
||||
clusterService.add(scriptModule.getScriptService());
|
||||
resourcesToClose.add(clusterService);
|
||||
final TribeService tribeService = new TribeService(settings, clusterService);
|
||||
resourcesToClose.add(tribeService);
|
||||
|
|
|
@ -28,7 +28,9 @@ import org.elasticsearch.action.admin.cluster.storedscripts.GetStoredScriptReque
|
|||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptRequest;
|
||||
import org.elasticsearch.action.admin.cluster.storedscripts.PutStoredScriptResponse;
|
||||
import org.elasticsearch.cluster.AckedClusterStateUpdateTask;
|
||||
import org.elasticsearch.cluster.ClusterChangedEvent;
|
||||
import org.elasticsearch.cluster.ClusterState;
|
||||
import org.elasticsearch.cluster.ClusterStateListener;
|
||||
import org.elasticsearch.cluster.metadata.MetaData;
|
||||
import org.elasticsearch.cluster.service.ClusterService;
|
||||
import org.elasticsearch.common.ParseField;
|
||||
|
@ -75,7 +77,7 @@ import java.util.concurrent.ConcurrentMap;
|
|||
|
||||
import static java.util.Collections.unmodifiableMap;
|
||||
|
||||
public class ScriptService extends AbstractComponent implements Closeable {
|
||||
public class ScriptService extends AbstractComponent implements Closeable, ClusterStateListener {
|
||||
|
||||
static final String DISABLE_DYNAMIC_SCRIPTING_SETTING = "script.disable_dynamic";
|
||||
|
||||
|
@ -105,6 +107,8 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
private final ParseFieldMatcher parseFieldMatcher;
|
||||
private final ScriptMetrics scriptMetrics = new ScriptMetrics();
|
||||
|
||||
private ClusterState clusterState;
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link org.elasticsearch.script.Script.ScriptField} instead. This should be removed in
|
||||
* 2.0
|
||||
|
@ -217,7 +221,7 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
/**
|
||||
* Checks if a script can be executed and compiles it if needed, or returns the previously compiled and cached script.
|
||||
*/
|
||||
public CompiledScript compile(Script script, ScriptContext scriptContext, Map<String, String> params, ClusterState state) {
|
||||
public CompiledScript compile(Script script, ScriptContext scriptContext, Map<String, String> params) {
|
||||
if (script == null) {
|
||||
throw new IllegalArgumentException("The parameter script (Script) must not be null.");
|
||||
}
|
||||
|
@ -245,14 +249,14 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
" operation [" + scriptContext.getKey() + "] and lang [" + lang + "] are not supported");
|
||||
}
|
||||
|
||||
return compileInternal(script, params, state);
|
||||
return compileInternal(script, params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compiles a script straight-away, or returns the previously compiled and cached script,
|
||||
* without checking if it can be executed based on settings.
|
||||
*/
|
||||
CompiledScript compileInternal(Script script, Map<String, String> params, ClusterState state) {
|
||||
CompiledScript compileInternal(Script script, Map<String, String> params) {
|
||||
if (script == null) {
|
||||
throw new IllegalArgumentException("The parameter script (Script) must not be null.");
|
||||
}
|
||||
|
@ -289,7 +293,7 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
//the script has been updated in the index since the last look up.
|
||||
final IndexedScript indexedScript = new IndexedScript(lang, name);
|
||||
name = indexedScript.id;
|
||||
code = getScriptFromClusterState(state, indexedScript.lang, indexedScript.id);
|
||||
code = getScriptFromClusterState(indexedScript.lang, indexedScript.id);
|
||||
}
|
||||
|
||||
CacheKey cacheKey = new CacheKey(scriptEngineService, type == ScriptType.INLINE ? null : name, code, params);
|
||||
|
@ -328,9 +332,9 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
return scriptLang;
|
||||
}
|
||||
|
||||
String getScriptFromClusterState(ClusterState state, String scriptLang, String id) {
|
||||
String getScriptFromClusterState(String scriptLang, String id) {
|
||||
scriptLang = validateScriptLanguage(scriptLang);
|
||||
ScriptMetaData scriptMetadata = state.metaData().custom(ScriptMetaData.TYPE);
|
||||
ScriptMetaData scriptMetadata = clusterState.metaData().custom(ScriptMetaData.TYPE);
|
||||
if (scriptMetadata == null) {
|
||||
throw new ResourceNotFoundException("Unable to find script [" + scriptLang + "/" + id + "] in cluster state");
|
||||
}
|
||||
|
@ -443,8 +447,8 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
/**
|
||||
* Compiles (or retrieves from cache) and executes the provided script
|
||||
*/
|
||||
public ExecutableScript executable(Script script, ScriptContext scriptContext, Map<String, String> params, ClusterState state) {
|
||||
return executable(compile(script, scriptContext, params, state), script.getParams());
|
||||
public ExecutableScript executable(Script script, ScriptContext scriptContext, Map<String, String> params) {
|
||||
return executable(compile(script, scriptContext, params), script.getParams());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -457,8 +461,8 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
/**
|
||||
* Compiles (or retrieves from cache) and executes the provided search script
|
||||
*/
|
||||
public SearchScript search(SearchLookup lookup, Script script, ScriptContext scriptContext, Map<String, String> params, ClusterState state) {
|
||||
CompiledScript compiledScript = compile(script, scriptContext, params, state);
|
||||
public SearchScript search(SearchLookup lookup, Script script, ScriptContext scriptContext, Map<String, String> params) {
|
||||
CompiledScript compiledScript = compile(script, scriptContext, params);
|
||||
return getScriptEngineServiceForLang(compiledScript.lang()).search(compiledScript, lookup, script.getParams());
|
||||
}
|
||||
|
||||
|
@ -496,6 +500,11 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clusterChanged(ClusterChangedEvent event) {
|
||||
clusterState = event.state();
|
||||
}
|
||||
|
||||
/**
|
||||
* A small listener for the script cache that calls each
|
||||
* {@code ScriptEngineService}'s {@code scriptRemoved} method when the
|
||||
|
|
|
@ -740,7 +740,7 @@ public class SearchService extends AbstractLifecycleComponent<SearchService> imp
|
|||
if (source.scriptFields() != null) {
|
||||
for (org.elasticsearch.search.builder.SearchSourceBuilder.ScriptField field : source.scriptFields()) {
|
||||
SearchScript searchScript = context.scriptService().search(context.lookup(), field.script(), ScriptContext.Standard.SEARCH,
|
||||
Collections.emptyMap(), context.getQueryShardContext().getClusterState());
|
||||
Collections.emptyMap());
|
||||
context.scriptFields().add(new ScriptField(field.fieldName(), searchScript, field.ignoreFailure()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,16 +79,16 @@ public class ScriptHeuristic extends SignificanceHeuristic {
|
|||
|
||||
@Override
|
||||
public void initialize(InternalAggregation.ReduceContext context) {
|
||||
initialize(context.scriptService(), context.clusterState());
|
||||
initialize(context.scriptService());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(SearchContext context) {
|
||||
initialize(context.scriptService(), context.getQueryShardContext().getClusterState());
|
||||
initialize(context.scriptService());
|
||||
}
|
||||
|
||||
public void initialize(ScriptService scriptService, ClusterState state) {
|
||||
searchScript = scriptService.executable(script, ScriptContext.Standard.AGGS, Collections.emptyMap(), state);
|
||||
public void initialize(ScriptService scriptService) {
|
||||
searchScript = scriptService.executable(script, ScriptContext.Standard.AGGS, Collections.emptyMap());
|
||||
searchScript.setNextVar("_subset_freq", subsetDfHolder);
|
||||
searchScript.setNextVar("_subset_size", subsetSizeHolder);
|
||||
searchScript.setNextVar("_superset_freq", supersetDfHolder);
|
||||
|
|
|
@ -92,7 +92,7 @@ public class InternalScriptedMetric extends InternalMetricsAggregation implement
|
|||
vars.putAll(firstAggregation.reduceScript.getParams());
|
||||
}
|
||||
CompiledScript compiledScript = reduceContext.scriptService().compile(firstAggregation.reduceScript,
|
||||
ScriptContext.Standard.AGGS, Collections.emptyMap(), reduceContext.clusterState());
|
||||
ScriptContext.Standard.AGGS, Collections.emptyMap());
|
||||
ExecutableScript script = reduceContext.scriptService().executable(compiledScript, vars);
|
||||
aggregation = script.run();
|
||||
} else {
|
||||
|
|
|
@ -54,11 +54,11 @@ public class ScriptedMetricAggregator extends MetricsAggregator {
|
|||
ScriptService scriptService = context.searchContext().scriptService();
|
||||
ClusterState state = context.searchContext().getQueryShardContext().getClusterState();
|
||||
if (initScript != null) {
|
||||
scriptService.executable(initScript, ScriptContext.Standard.AGGS, Collections.emptyMap(), state).run();
|
||||
scriptService.executable(initScript, ScriptContext.Standard.AGGS, Collections.emptyMap()).run();
|
||||
}
|
||||
this.mapScript = scriptService.search(context.searchContext().lookup(), mapScript, ScriptContext.Standard.AGGS, Collections.emptyMap(), state);
|
||||
this.mapScript = scriptService.search(context.searchContext().lookup(), mapScript, ScriptContext.Standard.AGGS, Collections.emptyMap());
|
||||
if (combineScript != null) {
|
||||
this.combineScript = scriptService.executable(combineScript, ScriptContext.Standard.AGGS, Collections.emptyMap(), state);
|
||||
this.combineScript = scriptService.executable(combineScript, ScriptContext.Standard.AGGS, Collections.emptyMap());
|
||||
} else {
|
||||
this.combineScript = null;
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ public class TopHitsAggregatorFactory extends AggregatorFactory<TopHitsAggregato
|
|||
if (scriptFields != null) {
|
||||
for (ScriptField field : scriptFields) {
|
||||
SearchScript searchScript = subSearchContext.scriptService().search(subSearchContext.lookup(), field.script(),
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap(), subSearchContext.getQueryShardContext().getClusterState());
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
subSearchContext.scriptFields().add(new org.elasticsearch.search.fetch.script.ScriptFieldsContext.ScriptField(
|
||||
field.fieldName(), searchScript, field.ignoreFailure()));
|
||||
}
|
||||
|
|
|
@ -93,7 +93,7 @@ public class BucketScriptPipelineAggregator extends PipelineAggregator {
|
|||
List<? extends Bucket> buckets = originalAgg.getBuckets();
|
||||
|
||||
CompiledScript compiledScript = reduceContext.scriptService().compile(script, ScriptContext.Standard.AGGS,
|
||||
Collections.emptyMap(), reduceContext.clusterState());
|
||||
Collections.emptyMap());
|
||||
List newBuckets = new ArrayList<>();
|
||||
for (Bucket bucket : buckets) {
|
||||
Map<String, Object> vars = new HashMap<>();
|
||||
|
|
|
@ -90,7 +90,7 @@ public class BucketSelectorPipelineAggregator extends PipelineAggregator {
|
|||
List<? extends Bucket> buckets = originalAgg.getBuckets();
|
||||
|
||||
CompiledScript compiledScript = reduceContext.scriptService().compile(script, ScriptContext.Standard.AGGS,
|
||||
Collections.emptyMap(), reduceContext.clusterState());
|
||||
Collections.emptyMap());
|
||||
List newBuckets = new ArrayList<>();
|
||||
for (Bucket bucket : buckets) {
|
||||
Map<String, Object> vars = new HashMap<>();
|
||||
|
|
|
@ -377,8 +377,7 @@ public abstract class ValuesSourceAggregationBuilder<VS extends ValuesSource, AB
|
|||
|
||||
private SearchScript createScript(Script script, SearchContext context) {
|
||||
return script == null ? null
|
||||
: context.scriptService().search(context.lookup(), script, ScriptContext.Standard.AGGS, Collections.emptyMap(),
|
||||
context.getQueryShardContext().getClusterState());
|
||||
: context.scriptService().search(context.lookup(), script, ScriptContext.Standard.AGGS, Collections.emptyMap());
|
||||
}
|
||||
|
||||
private static DocValueFormat resolveFormat(@Nullable String format, @Nullable ValueType valueType) {
|
||||
|
|
|
@ -304,7 +304,7 @@ public class ScriptSortBuilder extends SortBuilder<ScriptSortBuilder> {
|
|||
@Override
|
||||
public SortFieldAndFormat build(QueryShardContext context) throws IOException {
|
||||
final SearchScript searchScript = context.getScriptService().search(
|
||||
context.lookup(), script, ScriptContext.Standard.SEARCH, Collections.emptyMap(), context.getClusterState());
|
||||
context.lookup(), script, ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
|
||||
MultiValueMode valueMode = null;
|
||||
if (sortMode != null) {
|
||||
|
|
|
@ -631,7 +631,7 @@ public class PhraseSuggestionBuilder extends SuggestionBuilder<PhraseSuggestionB
|
|||
|
||||
if (this.collateQuery != null) {
|
||||
CompiledScript compiledScript = context.getScriptService().compile(this.collateQuery, ScriptContext.Standard.SEARCH,
|
||||
Collections.emptyMap(), context.getClusterState());
|
||||
Collections.emptyMap());
|
||||
suggestionContext.setCollateQueryScript(compiledScript);
|
||||
if (this.collateParams != null) {
|
||||
suggestionContext.setCollateScriptParams(this.collateParams);
|
||||
|
|
|
@ -55,7 +55,7 @@ public class FileScriptTests extends ESTestCase {
|
|||
.put("script.engine." + MockScriptEngine.NAME + ".file.aggs", "false").build();
|
||||
ScriptService scriptService = makeScriptService(settings);
|
||||
Script script = new Script("script1", ScriptService.ScriptType.FILE, MockScriptEngine.NAME, null);
|
||||
CompiledScript compiledScript = scriptService.compile(script, ScriptContext.Standard.SEARCH, Collections.emptyMap(), null);
|
||||
CompiledScript compiledScript = scriptService.compile(script, ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
assertNotNull(compiledScript);
|
||||
MockCompiledScript executable = (MockCompiledScript) compiledScript.compiled();
|
||||
assertEquals("script1.mockscript", executable.name);
|
||||
|
@ -72,7 +72,7 @@ public class FileScriptTests extends ESTestCase {
|
|||
Script script = new Script("script1", ScriptService.ScriptType.FILE, MockScriptEngine.NAME, null);
|
||||
for (ScriptContext context : ScriptContext.Standard.values()) {
|
||||
try {
|
||||
scriptService.compile(script, context, Collections.emptyMap(), null);
|
||||
scriptService.compile(script, context, Collections.emptyMap());
|
||||
fail(context.getKey() + " script should have been rejected");
|
||||
} catch(Exception e) {
|
||||
assertTrue(e.getMessage(), e.getMessage().contains("scripts of type [file], operation [" + context.getKey() + "] and lang [" + MockScriptEngine.NAME + "] are disabled"));
|
||||
|
|
|
@ -19,8 +19,13 @@
|
|||
|
||||
package org.elasticsearch.script;
|
||||
|
||||
import org.elasticsearch.cluster.ClusterName;
|
||||
import org.elasticsearch.cluster.ClusterState;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.elasticsearch.common.Nullable;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
@ -30,13 +35,6 @@ import org.elasticsearch.test.ESTestCase;
|
|||
import org.elasticsearch.test.InternalSettingsPlugin;
|
||||
import org.elasticsearch.watcher.ResourceWatcherService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.Collections.emptyList;
|
||||
import static java.util.Collections.singletonList;
|
||||
import static java.util.Collections.singletonMap;
|
||||
|
@ -55,10 +53,9 @@ public class NativeScriptTests extends ESTestCase {
|
|||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
|
||||
ClusterState state = ClusterState.builder(new ClusterName("_name")).build();
|
||||
ExecutableScript executable = scriptModule.getScriptService().executable(
|
||||
new Script("my", ScriptType.INLINE, NativeScriptEngineService.NAME, null), ScriptContext.Standard.SEARCH,
|
||||
Collections.emptyMap(), state);
|
||||
Collections.emptyMap());
|
||||
assertThat(executable.run().toString(), equalTo("test"));
|
||||
}
|
||||
|
||||
|
@ -85,7 +82,7 @@ public class NativeScriptTests extends ESTestCase {
|
|||
|
||||
for (ScriptContext scriptContext : scriptContextRegistry.scriptContexts()) {
|
||||
assertThat(scriptService.compile(new Script("my", ScriptType.INLINE, NativeScriptEngineService.NAME, null), scriptContext,
|
||||
Collections.emptyMap(), null), notNullValue());
|
||||
Collections.emptyMap()), notNullValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ public class ScriptContextTests extends ESTestCase {
|
|||
for (ScriptService.ScriptType scriptType : ScriptService.ScriptType.values()) {
|
||||
try {
|
||||
Script script = new Script("1", scriptType, MockScriptEngine.NAME, null);
|
||||
scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "custom_globally_disabled_op"), Collections.emptyMap(), null);
|
||||
scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "custom_globally_disabled_op"), Collections.emptyMap());
|
||||
fail("script compilation should have been rejected");
|
||||
} catch (IllegalStateException e) {
|
||||
assertThat(e.getMessage(), containsString("scripts of type [" + scriptType + "], operation [" + PLUGIN_NAME + "_custom_globally_disabled_op] and lang [" + MockScriptEngine.NAME + "] are disabled"));
|
||||
|
@ -71,16 +71,16 @@ public class ScriptContextTests extends ESTestCase {
|
|||
ScriptService scriptService = makeScriptService();
|
||||
Script script = new Script("1", ScriptService.ScriptType.INLINE, MockScriptEngine.NAME, null);
|
||||
try {
|
||||
scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "custom_exp_disabled_op"), Collections.emptyMap(), null);
|
||||
scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "custom_exp_disabled_op"), Collections.emptyMap());
|
||||
fail("script compilation should have been rejected");
|
||||
} catch (IllegalStateException e) {
|
||||
assertTrue(e.getMessage(), e.getMessage().contains("scripts of type [inline], operation [" + PLUGIN_NAME + "_custom_exp_disabled_op] and lang [" + MockScriptEngine.NAME + "] are disabled"));
|
||||
}
|
||||
|
||||
// still works for other script contexts
|
||||
assertNotNull(scriptService.compile(script, ScriptContext.Standard.AGGS, Collections.emptyMap(), null));
|
||||
assertNotNull(scriptService.compile(script, ScriptContext.Standard.SEARCH, Collections.emptyMap(), null));
|
||||
assertNotNull(scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "custom_op"), Collections.emptyMap(), null));
|
||||
assertNotNull(scriptService.compile(script, ScriptContext.Standard.AGGS, Collections.emptyMap()));
|
||||
assertNotNull(scriptService.compile(script, ScriptContext.Standard.SEARCH, Collections.emptyMap()));
|
||||
assertNotNull(scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "custom_op"), Collections.emptyMap()));
|
||||
}
|
||||
|
||||
public void testUnknownPluginScriptContext() throws Exception {
|
||||
|
@ -88,7 +88,7 @@ public class ScriptContextTests extends ESTestCase {
|
|||
for (ScriptService.ScriptType scriptType : ScriptService.ScriptType.values()) {
|
||||
try {
|
||||
Script script = new Script("1", scriptType, MockScriptEngine.NAME, null);
|
||||
scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "unknown"), Collections.emptyMap(), null);
|
||||
scriptService.compile(script, new ScriptContext.Plugin(PLUGIN_NAME, "unknown"), Collections.emptyMap());
|
||||
fail("script compilation should have been rejected");
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertTrue(e.getMessage(), e.getMessage().contains("script context [" + PLUGIN_NAME + "_unknown] not supported"));
|
||||
|
@ -107,7 +107,7 @@ public class ScriptContextTests extends ESTestCase {
|
|||
for (ScriptService.ScriptType scriptType : ScriptService.ScriptType.values()) {
|
||||
try {
|
||||
Script script = new Script("1", scriptType, MockScriptEngine.NAME, null);
|
||||
scriptService.compile(script, context, Collections.emptyMap(), null);
|
||||
scriptService.compile(script, context, Collections.emptyMap());
|
||||
fail("script compilation should have been rejected");
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertTrue(e.getMessage(), e.getMessage().contains("script context [test] not supported"));
|
||||
|
|
|
@ -114,9 +114,10 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
private void buildScriptService(Settings additionalSettings) throws IOException {
|
||||
Settings finalSettings = Settings.builder().put(baseSettings).put(additionalSettings).build();
|
||||
Environment environment = new Environment(finalSettings);
|
||||
// TODO:
|
||||
scriptService = new ScriptService(finalSettings, environment, resourceWatcherService, scriptEngineRegistry, scriptContextRegistry, scriptSettings) {
|
||||
@Override
|
||||
String getScriptFromClusterState(ClusterState state, String scriptLang, String id) {
|
||||
String getScriptFromClusterState(String scriptLang, String id) {
|
||||
//mock the script that gets retrieved from an index
|
||||
return "100";
|
||||
}
|
||||
|
@ -141,7 +142,7 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
resourceWatcherService.notifyNow();
|
||||
|
||||
CompiledScript compiledScript = scriptService.compile(new Script("test_script", ScriptType.FILE, "test", null),
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap(), emptyClusterState());
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
assertThat(compiledScript.compiled(), equalTo((Object) "compiled_test_file"));
|
||||
|
||||
Files.delete(testFileNoExt);
|
||||
|
@ -150,7 +151,7 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
|
||||
try {
|
||||
scriptService.compile(new Script("test_script", ScriptType.FILE, "test", null), ScriptContext.Standard.SEARCH,
|
||||
Collections.emptyMap(), emptyClusterState());
|
||||
Collections.emptyMap());
|
||||
fail("the script test_script should no longer exist");
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertThat(ex.getMessage(), containsString("Unable to find on disk file script [test_script] using lang [test]"));
|
||||
|
@ -168,7 +169,7 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
resourceWatcherService.notifyNow();
|
||||
|
||||
CompiledScript compiledScript = scriptService.compile(new Script("file_script", ScriptType.FILE, "test", null),
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap(), emptyClusterState());
|
||||
ScriptContext.Standard.SEARCH, Collections.emptyMap());
|
||||
assertThat(compiledScript.compiled(), equalTo((Object) "compiled_test_file_script"));
|
||||
|
||||
Files.delete(testHiddenFile);
|
||||
|
@ -179,9 +180,9 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
public void testInlineScriptCompiledOnceCache() throws IOException {
|
||||
buildScriptService(Settings.EMPTY);
|
||||
CompiledScript compiledScript1 = scriptService.compile(new Script("1+1", ScriptType.INLINE, "test", null),
|
||||
randomFrom(scriptContexts), Collections.emptyMap(), emptyClusterState());
|
||||
randomFrom(scriptContexts), Collections.emptyMap());
|
||||
CompiledScript compiledScript2 = scriptService.compile(new Script("1+1", ScriptType.INLINE, "test", null),
|
||||
randomFrom(scriptContexts), Collections.emptyMap(), emptyClusterState());
|
||||
randomFrom(scriptContexts), Collections.emptyMap());
|
||||
assertThat(compiledScript1.compiled(), sameInstance(compiledScript2.compiled()));
|
||||
}
|
||||
|
||||
|
@ -304,7 +305,7 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
String type = scriptEngineService.getType();
|
||||
try {
|
||||
scriptService.compile(new Script("test", randomFrom(ScriptType.values()), type, null), new ScriptContext.Plugin(
|
||||
pluginName, unknownContext), Collections.emptyMap(), emptyClusterState());
|
||||
pluginName, unknownContext), Collections.emptyMap());
|
||||
fail("script compilation should have been rejected");
|
||||
} catch(IllegalArgumentException e) {
|
||||
assertThat(e.getMessage(), containsString("script context [" + pluginName + "_" + unknownContext + "] not supported"));
|
||||
|
@ -314,22 +315,20 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
public void testCompileCountedInCompilationStats() throws IOException {
|
||||
buildScriptService(Settings.EMPTY);
|
||||
scriptService.compile(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts),
|
||||
Collections.emptyMap(), emptyClusterState());
|
||||
Collections.emptyMap());
|
||||
assertEquals(1L, scriptService.stats().getCompilations());
|
||||
}
|
||||
|
||||
public void testExecutableCountedInCompilationStats() throws IOException {
|
||||
buildScriptService(Settings.EMPTY);
|
||||
ClusterState state = ClusterState.builder(new ClusterName("_name")).build();
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap(), state);
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap());
|
||||
assertEquals(1L, scriptService.stats().getCompilations());
|
||||
}
|
||||
|
||||
public void testSearchCountedInCompilationStats() throws IOException {
|
||||
buildScriptService(Settings.EMPTY);
|
||||
ClusterState state = ClusterState.builder(new ClusterName("_name")).build();
|
||||
scriptService.search(null, new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts),
|
||||
Collections.emptyMap(), state);
|
||||
Collections.emptyMap());
|
||||
assertEquals(1L, scriptService.stats().getCompilations());
|
||||
}
|
||||
|
||||
|
@ -339,7 +338,7 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
for (int i = 0; i < numberOfCompilations; i++) {
|
||||
scriptService
|
||||
.compile(new Script(i + " + " + i, ScriptType.INLINE, "test", null), randomFrom(scriptContexts),
|
||||
Collections.emptyMap(), emptyClusterState());
|
||||
Collections.emptyMap());
|
||||
}
|
||||
assertEquals(numberOfCompilations, scriptService.stats().getCompilations());
|
||||
}
|
||||
|
@ -349,9 +348,8 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
builder.put(ScriptService.SCRIPT_CACHE_SIZE_SETTING.getKey(), 1);
|
||||
builder.put("script.inline", "true");
|
||||
buildScriptService(builder.build());
|
||||
ClusterState state = ClusterState.builder(new ClusterName("_name")).build();
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap(), state);
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap(), state);
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap());
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap());
|
||||
assertEquals(1L, scriptService.stats().getCompilations());
|
||||
}
|
||||
|
||||
|
@ -359,14 +357,14 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
buildScriptService(Settings.EMPTY);
|
||||
createFileScripts("test");
|
||||
scriptService.compile(new Script("file_script", ScriptType.FILE, "test", null), randomFrom(scriptContexts),
|
||||
Collections.emptyMap(), emptyClusterState());
|
||||
Collections.emptyMap());
|
||||
assertEquals(1L, scriptService.stats().getCompilations());
|
||||
}
|
||||
|
||||
public void testIndexedScriptCountedInCompilationStats() throws IOException {
|
||||
buildScriptService(Settings.EMPTY);
|
||||
scriptService.compile(new Script("script", ScriptType.STORED, "test", null), randomFrom(scriptContexts),
|
||||
Collections.emptyMap(), emptyClusterState());
|
||||
Collections.emptyMap());
|
||||
assertEquals(1L, scriptService.stats().getCompilations());
|
||||
}
|
||||
|
||||
|
@ -375,9 +373,8 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
builder.put(ScriptService.SCRIPT_CACHE_SIZE_SETTING.getKey(), 1);
|
||||
builder.put("script.inline", "true");
|
||||
buildScriptService(builder.build());
|
||||
ClusterState state = ClusterState.builder(new ClusterName("_name")).build();
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap(), state);
|
||||
scriptService.executable(new Script("2+2", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap(), state);
|
||||
scriptService.executable(new Script("1+1", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap());
|
||||
scriptService.executable(new Script("2+2", ScriptType.INLINE, "test", null), randomFrom(scriptContexts), Collections.emptyMap());
|
||||
assertEquals(2L, scriptService.stats().getCompilations());
|
||||
assertEquals(1L, scriptService.stats().getCacheEvictions());
|
||||
}
|
||||
|
@ -388,7 +385,7 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
builder.put("script.inline", "true");
|
||||
buildScriptService(builder.build());
|
||||
CompiledScript script = scriptService.compile(new Script("1 + 1", ScriptType.INLINE, null, null),
|
||||
randomFrom(scriptContexts), Collections.emptyMap(), emptyClusterState());
|
||||
randomFrom(scriptContexts), Collections.emptyMap());
|
||||
assertEquals(script.lang(), "test");
|
||||
}
|
||||
|
||||
|
@ -469,7 +466,7 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
|
||||
private void assertCompileRejected(String lang, String script, ScriptType scriptType, ScriptContext scriptContext) {
|
||||
try {
|
||||
scriptService.compile(new Script(script, scriptType, lang, null), scriptContext, Collections.emptyMap(), emptyClusterState());
|
||||
scriptService.compile(new Script(script, scriptType, lang, null), scriptContext, Collections.emptyMap());
|
||||
fail("compile should have been rejected for lang [" + lang + "], script_type [" + scriptType + "], scripted_op [" + scriptContext + "]");
|
||||
} catch(IllegalStateException e) {
|
||||
//all good
|
||||
|
@ -477,9 +474,8 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
}
|
||||
|
||||
private void assertCompileAccepted(String lang, String script, ScriptType scriptType, ScriptContext scriptContext) {
|
||||
ClusterState state = emptyClusterState();
|
||||
assertThat(
|
||||
scriptService.compile(new Script(script, scriptType, lang, null), scriptContext, Collections.emptyMap(), state),
|
||||
scriptService.compile(new Script(script, scriptType, lang, null), scriptContext, Collections.emptyMap()),
|
||||
notNullValue()
|
||||
);
|
||||
}
|
||||
|
@ -528,8 +524,6 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
|
||||
public static final String NAME = "dtest";
|
||||
|
||||
public static final List<String> EXTENSIONS = Collections.unmodifiableList(Arrays.asList("dtest"));
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return NAME;
|
||||
|
@ -559,9 +553,4 @@ public class ScriptServiceTests extends ESTestCase {
|
|||
public void close() {
|
||||
}
|
||||
}
|
||||
|
||||
private static ClusterState emptyClusterState() {
|
||||
return ClusterState.builder(new ClusterName("_name")).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ public abstract class AbstractSortTestCase<T extends SortBuilder<T>> extends EST
|
|||
scriptService = new ScriptService(baseSettings, environment,
|
||||
new ResourceWatcherService(baseSettings, null), scriptEngineRegistry, scriptContextRegistry, scriptSettings) {
|
||||
@Override
|
||||
public CompiledScript compile(Script script, ScriptContext scriptContext, Map<String, String> params, ClusterState state) {
|
||||
public CompiledScript compile(Script script, ScriptContext scriptContext, Map<String, String> params) {
|
||||
return new CompiledScript(ScriptType.INLINE, "mockName", "test", script);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -60,7 +60,7 @@ public class IngestCommonPlugin extends Plugin {
|
|||
nodeModule.registerProcessor(SortProcessor.TYPE, (registry) -> new SortProcessor.Factory());
|
||||
nodeModule.registerProcessor(GrokProcessor.TYPE, (registry) -> new GrokProcessor.Factory(builtinPatterns));
|
||||
nodeModule.registerProcessor(ScriptProcessor.TYPE, (registry) ->
|
||||
new ScriptProcessor.Factory(registry.getScriptService(), registry.getClusterService()));
|
||||
new ScriptProcessor.Factory(registry.getScriptService()));
|
||||
}
|
||||
|
||||
// Code for loading built-in grok patterns packaged with the jar file:
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
|
||||
package org.elasticsearch.ingest.common;
|
||||
|
||||
import org.elasticsearch.cluster.service.ClusterService;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.ingest.AbstractProcessor;
|
||||
import org.elasticsearch.ingest.AbstractProcessorFactory;
|
||||
|
@ -30,9 +32,6 @@ import org.elasticsearch.script.Script;
|
|||
import org.elasticsearch.script.ScriptContext;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.Collections.emptyMap;
|
||||
import static org.elasticsearch.common.Strings.hasLength;
|
||||
import static org.elasticsearch.ingest.ConfigurationUtils.newConfigurationException;
|
||||
|
@ -52,14 +51,12 @@ public final class ScriptProcessor extends AbstractProcessor {
|
|||
|
||||
private final Script script;
|
||||
private final ScriptService scriptService;
|
||||
private final ClusterService clusterService;
|
||||
private final String field;
|
||||
|
||||
ScriptProcessor(String tag, Script script, ScriptService scriptService, ClusterService clusterService, String field) {
|
||||
ScriptProcessor(String tag, Script script, ScriptService scriptService, String field) {
|
||||
super(tag);
|
||||
this.script = script;
|
||||
this.scriptService = scriptService;
|
||||
this.clusterService = clusterService;
|
||||
this.field = field;
|
||||
}
|
||||
|
||||
|
@ -67,7 +64,7 @@ public final class ScriptProcessor extends AbstractProcessor {
|
|||
public void execute(IngestDocument document) {
|
||||
Map<String, Object> vars = new HashMap<>();
|
||||
vars.put("ctx", document.getSourceAndMetadata());
|
||||
CompiledScript compiledScript = scriptService.compile(script, ScriptContext.Standard.INGEST, emptyMap(), clusterService.state());
|
||||
CompiledScript compiledScript = scriptService.compile(script, ScriptContext.Standard.INGEST, emptyMap());
|
||||
ExecutableScript executableScript = scriptService.executable(compiledScript, vars);
|
||||
Object value = executableScript.run();
|
||||
if (field != null) {
|
||||
|
@ -83,11 +80,9 @@ public final class ScriptProcessor extends AbstractProcessor {
|
|||
public static final class Factory extends AbstractProcessorFactory<ScriptProcessor> {
|
||||
|
||||
private final ScriptService scriptService;
|
||||
private final ClusterService clusterService;
|
||||
|
||||
public Factory(ScriptService scriptService, ClusterService clusterService) {
|
||||
public Factory(ScriptService scriptService) {
|
||||
this.scriptService = scriptService;
|
||||
this.clusterService = clusterService;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -120,7 +115,7 @@ public final class ScriptProcessor extends AbstractProcessor {
|
|||
throw newConfigurationException(TYPE, processorTag, null, "Could not initialize script");
|
||||
}
|
||||
|
||||
return new ScriptProcessor(processorTag, script, scriptService, clusterService, field);
|
||||
return new ScriptProcessor(processorTag, script, scriptService, field);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public class ScriptProcessorFactoryTests extends ESTestCase {
|
|||
|
||||
@Before
|
||||
public void init() {
|
||||
factory = new ScriptProcessor.Factory(mock(ScriptService.class), mock(ClusterService.class));
|
||||
factory = new ScriptProcessor.Factory(mock(ScriptService.class));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
|
||||
package org.elasticsearch.ingest.common;
|
||||
|
||||
import org.elasticsearch.cluster.service.ClusterService;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.elasticsearch.ingest.IngestDocument;
|
||||
import org.elasticsearch.ingest.RandomDocumentPicks;
|
||||
import org.elasticsearch.script.CompiledScript;
|
||||
|
@ -28,9 +30,6 @@ import org.elasticsearch.script.Script;
|
|||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.hamcrest.Matchers.hasKey;
|
||||
import static org.hamcrest.core.Is.is;
|
||||
import static org.mockito.Mockito.any;
|
||||
|
@ -42,16 +41,15 @@ public class ScriptProcessorTests extends ESTestCase {
|
|||
public void testScripting() throws Exception {
|
||||
int randomInt = randomInt();
|
||||
ScriptService scriptService = mock(ScriptService.class);
|
||||
ClusterService clusterService = mock(ClusterService.class);
|
||||
CompiledScript compiledScript = mock(CompiledScript.class);
|
||||
Script script = mock(Script.class);
|
||||
when(scriptService.compile(any(), any(), any(), any())).thenReturn(compiledScript);
|
||||
when(scriptService.compile(any(), any(), any())).thenReturn(compiledScript);
|
||||
ExecutableScript executableScript = mock(ExecutableScript.class);
|
||||
when(scriptService.executable(any(), any())).thenReturn(executableScript);
|
||||
when(executableScript.run()).thenReturn(randomInt);
|
||||
|
||||
ScriptProcessor processor = new ScriptProcessor(randomAsciiOfLength(10), script,
|
||||
scriptService, clusterService, "bytes_total");
|
||||
scriptService, "bytes_total");
|
||||
|
||||
Map<String, Object> document = new HashMap<>();
|
||||
document.put("bytes_in", 1234);
|
||||
|
|
|
@ -53,7 +53,6 @@ public class TransportSearchTemplateAction extends HandledTransportAction<Search
|
|||
|
||||
private static final String TEMPLATE_LANG = MustacheScriptEngineService.NAME;
|
||||
|
||||
private final ClusterService clusterService;
|
||||
private final ScriptService scriptService;
|
||||
private final TransportSearchAction searchAction;
|
||||
private final IndicesQueriesRegistry queryRegistry;
|
||||
|
@ -63,11 +62,10 @@ public class TransportSearchTemplateAction extends HandledTransportAction<Search
|
|||
@Inject
|
||||
public TransportSearchTemplateAction(Settings settings, ThreadPool threadPool, TransportService transportService,
|
||||
ActionFilters actionFilters, IndexNameExpressionResolver resolver,
|
||||
ClusterService clusterService, ScriptService scriptService,
|
||||
ScriptService scriptService,
|
||||
TransportSearchAction searchAction, IndicesQueriesRegistry indicesQueryRegistry,
|
||||
AggregatorParsers aggregatorParsers, Suggesters suggesters) {
|
||||
super(settings, SearchTemplateAction.NAME, threadPool, transportService, actionFilters, resolver, SearchTemplateRequest::new);
|
||||
this.clusterService = clusterService;
|
||||
this.scriptService = scriptService;
|
||||
this.searchAction = searchAction;
|
||||
this.queryRegistry = indicesQueryRegistry;
|
||||
|
@ -80,7 +78,7 @@ public class TransportSearchTemplateAction extends HandledTransportAction<Search
|
|||
final SearchTemplateResponse response = new SearchTemplateResponse();
|
||||
try {
|
||||
Script script = new Script(request.getScript(), request.getScriptType(), TEMPLATE_LANG, request.getScriptParams());
|
||||
ExecutableScript executable = scriptService.executable(script, SEARCH, emptyMap(), clusterService.state());
|
||||
ExecutableScript executable = scriptService.executable(script, SEARCH, emptyMap());
|
||||
|
||||
BytesReference source = (BytesReference) executable.run();
|
||||
response.setSource(source);
|
||||
|
|
|
@ -439,19 +439,17 @@ public abstract class AbstractAsyncBulkIndexByScrollAction<Request extends Abstr
|
|||
|
||||
private final BulkByScrollTask task;
|
||||
private final ScriptService scriptService;
|
||||
private final ClusterState state;
|
||||
private final Script script;
|
||||
private final Map<String, Object> params;
|
||||
|
||||
private ExecutableScript executable;
|
||||
private Map<String, Object> context;
|
||||
|
||||
public ScriptApplier(BulkByScrollTask task, ScriptService scriptService, Script script, ClusterState state,
|
||||
public ScriptApplier(BulkByScrollTask task, ScriptService scriptService, Script script,
|
||||
Map<String, Object> params) {
|
||||
this.task = task;
|
||||
this.scriptService = scriptService;
|
||||
this.script = script;
|
||||
this.state = state;
|
||||
this.params = params;
|
||||
}
|
||||
|
||||
|
@ -462,7 +460,7 @@ public abstract class AbstractAsyncBulkIndexByScrollAction<Request extends Abstr
|
|||
return request;
|
||||
}
|
||||
if (executable == null) {
|
||||
CompiledScript compiled = scriptService.compile(script, ScriptContext.Standard.UPDATE, emptyMap(), state);
|
||||
CompiledScript compiled = scriptService.compile(script, ScriptContext.Standard.UPDATE, emptyMap());
|
||||
executable = scriptService.executable(compiled, params);
|
||||
}
|
||||
if (context == null) {
|
||||
|
|
|
@ -128,7 +128,7 @@ public class TransportReindexAction extends HandledTransportAction<ReindexReques
|
|||
protected BiFunction<RequestWrapper<?>, SearchHit, RequestWrapper<?>> buildScriptApplier() {
|
||||
Script script = mainRequest.getScript();
|
||||
if (script != null) {
|
||||
return new ReindexScriptApplier(task, scriptService, script, clusterState, script.getParams());
|
||||
return new ReindexScriptApplier(task, scriptService, script, script.getParams());
|
||||
}
|
||||
return super.buildScriptApplier();
|
||||
}
|
||||
|
@ -205,9 +205,9 @@ public class TransportReindexAction extends HandledTransportAction<ReindexReques
|
|||
|
||||
class ReindexScriptApplier extends ScriptApplier {
|
||||
|
||||
ReindexScriptApplier(BulkByScrollTask task, ScriptService scriptService, Script script, ClusterState state,
|
||||
ReindexScriptApplier(BulkByScrollTask task, ScriptService scriptService, Script script,
|
||||
Map<String, Object> params) {
|
||||
super(task, scriptService, script, state, params);
|
||||
super(task, scriptService, script, params);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -92,7 +92,7 @@ public class TransportUpdateByQueryAction extends HandledTransportAction<UpdateB
|
|||
protected BiFunction<RequestWrapper<?>, SearchHit, RequestWrapper<?>> buildScriptApplier() {
|
||||
Script script = mainRequest.getScript();
|
||||
if (script != null) {
|
||||
return new UpdateByQueryScriptApplier(task, scriptService, script, clusterState, script.getParams());
|
||||
return new UpdateByQueryScriptApplier(task, scriptService, script, script.getParams());
|
||||
}
|
||||
return super.buildScriptApplier();
|
||||
}
|
||||
|
@ -112,9 +112,9 @@ public class TransportUpdateByQueryAction extends HandledTransportAction<UpdateB
|
|||
|
||||
class UpdateByQueryScriptApplier extends ScriptApplier {
|
||||
|
||||
UpdateByQueryScriptApplier(BulkByScrollTask task, ScriptService scriptService, Script script, ClusterState state,
|
||||
UpdateByQueryScriptApplier(BulkByScrollTask task, ScriptService scriptService, Script script,
|
||||
Map<String, Object> params) {
|
||||
super(task, scriptService, script, state, params);
|
||||
super(task, scriptService, script, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue