From d0e72805bec2d51485ef5ec89d9dc00ca2bd20f8 Mon Sep 17 00:00:00 2001 From: Mashhur Date: Tue, 5 Aug 2025 14:01:54 -0700 Subject: [PATCH 1/3] Sync up with upstream ES main: apply null project ID resolver as applied in logstash-bridge ScriptServiceBridge. --- .../filters/elasticintegration/EventProcessorBuilder.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java index 7f1548d..9ea23af 100644 --- a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java +++ b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java @@ -20,6 +20,7 @@ import com.google.common.util.concurrent.Service; import com.google.common.util.concurrent.ServiceManager; import org.elasticsearch.client.RestClient; +import org.elasticsearch.cluster.project.DefaultProjectResolver; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.IOUtils; import org.elasticsearch.core.TimeValue; @@ -318,7 +319,7 @@ private static ScriptService initScriptService(final Settings settings, final Th Map engines = new HashMap<>(); engines.put(PainlessScriptEngine.NAME, getPainlessScriptEngine(settings)); engines.put(MustacheScriptEngine.NAME, new MustacheScriptEngine(settings)); - return new ScriptService(settings, engines, ScriptModule.CORE_CONTEXTS, threadPool::absoluteTimeInMillis); + return new ScriptService(settings, engines, ScriptModule.CORE_CONTEXTS, threadPool::absoluteTimeInMillis, null); } /** From 64c0d5672175bccd9d787a14a6215683f5d67c2e Mon Sep 17 00:00:00 2001 From: Mashhur Date: Tue, 5 Aug 2025 14:05:14 -0700 Subject: [PATCH 2/3] Remove unnecessary dependency. --- .../filters/elasticintegration/EventProcessorBuilder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java index 9ea23af..444a1ab 100644 --- a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java +++ b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java @@ -20,7 +20,6 @@ import com.google.common.util.concurrent.Service; import com.google.common.util.concurrent.ServiceManager; import org.elasticsearch.client.RestClient; -import org.elasticsearch.cluster.project.DefaultProjectResolver; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.IOUtils; import org.elasticsearch.core.TimeValue; From 0778dcc948904c282839c131a490d235d847066f Mon Sep 17 00:00:00 2001 From: Mashhur Date: Tue, 5 Aug 2025 23:37:32 -0700 Subject: [PATCH 3/3] Introduce plugin project resolver. --- .../EventProcessorBuilder.java | 10 +++++++-- .../util/PluginProjectResolver.java | 21 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 src/main/java/co/elastic/logstash/filters/elasticintegration/util/PluginProjectResolver.java diff --git a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java index 444a1ab..0a3f925 100644 --- a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java +++ b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java @@ -17,6 +17,7 @@ import co.elastic.logstash.filters.elasticintegration.resolver.ResolverCache; import co.elastic.logstash.filters.elasticintegration.util.Exceptions; import co.elastic.logstash.filters.elasticintegration.util.PluginContext; +import co.elastic.logstash.filters.elasticintegration.util.PluginProjectResolver; import com.google.common.util.concurrent.Service; import com.google.common.util.concurrent.ServiceManager; import org.elasticsearch.client.RestClient; @@ -33,7 +34,6 @@ import org.elasticsearch.painless.PainlessPlugin; import org.elasticsearch.painless.PainlessScriptEngine; import org.elasticsearch.painless.spi.PainlessExtension; -import org.elasticsearch.painless.spi.Whitelist; import org.elasticsearch.plugins.ExtensiblePlugin; import org.elasticsearch.plugins.IngestPlugin; import org.elasticsearch.script.IngestConditionalScript; @@ -318,7 +318,13 @@ private static ScriptService initScriptService(final Settings settings, final Th Map engines = new HashMap<>(); engines.put(PainlessScriptEngine.NAME, getPainlessScriptEngine(settings)); engines.put(MustacheScriptEngine.NAME, new MustacheScriptEngine(settings)); - return new ScriptService(settings, engines, ScriptModule.CORE_CONTEXTS, threadPool::absoluteTimeInMillis, null); + + return new ScriptService( + settings, + engines, + ScriptModule.CORE_CONTEXTS, + threadPool::absoluteTimeInMillis, + new PluginProjectResolver()); } /** diff --git a/src/main/java/co/elastic/logstash/filters/elasticintegration/util/PluginProjectResolver.java b/src/main/java/co/elastic/logstash/filters/elasticintegration/util/PluginProjectResolver.java new file mode 100644 index 0000000..352ba66 --- /dev/null +++ b/src/main/java/co/elastic/logstash/filters/elasticintegration/util/PluginProjectResolver.java @@ -0,0 +1,21 @@ +package co.elastic.logstash.filters.elasticintegration.util; + +import org.elasticsearch.cluster.metadata.ProjectId; +import org.elasticsearch.cluster.project.ProjectResolver; +import org.elasticsearch.core.CheckedRunnable; + +public class PluginProjectResolver implements ProjectResolver { + @Override + public ProjectId getProjectId() { + return null; + } + + @Override + public void executeOnProject(ProjectId projectId, CheckedRunnable checkedRunnable) throws E { + if (projectId.equals(ProjectId.DEFAULT)) { + checkedRunnable.run(); + } else { + throw new IllegalArgumentException("Cannot execute on a project other than [" + ProjectId.DEFAULT + "]"); + } + } +}