Skip to content

Commit f6be830

Browse files
committed
Fix TransportPPLQueryAction
Signed-off-by: Lantao Jin <ltjin@amazon.com>
1 parent d231565 commit f6be830

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

plugin/src/main/java/org/opensearch/sql/plugin/SQLPlugin.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
import org.opensearch.sql.opensearch.setting.OpenSearchSettings;
9696
import org.opensearch.sql.opensearch.storage.OpenSearchDataSourceFactory;
9797
import org.opensearch.sql.opensearch.storage.script.CompoundedScriptEngine;
98+
import org.opensearch.sql.plugin.config.EngineExtensionsHolder;
9899
import org.opensearch.sql.plugin.config.OpenSearchPluginModule;
99100
import org.opensearch.sql.plugin.rest.RestPPLGrammarAction;
100101
import org.opensearch.sql.plugin.rest.RestPPLQueryAction;
@@ -158,7 +159,7 @@ public String description() {
158159
@Override
159160
public void loadExtensions(ExtensionLoader loader) {
160161
this.executionEngineExtensions = loader.loadExtensions(ExecutionEngine.class);
161-
if (!executionEngineExtensions.isEmpty()) {
162+
if (executionEngineExtensions != null && !executionEngineExtensions.isEmpty()) {
162163
LOGGER.info(
163164
"Loaded {} execution engine extension(s): {}",
164165
executionEngineExtensions.size(),
@@ -305,12 +306,15 @@ public Collection<Object> createComponents(
305306
ScheduledAsyncQueryJobRunner.getJobRunnerInstance()
306307
.loadJobResource(client, clusterService, threadPool, asyncQueryExecutorService);
307308

309+
EngineExtensionsHolder extensionsHolder = new EngineExtensionsHolder(executionEngineExtensions);
310+
308311
return ImmutableList.of(
309312
dataSourceService,
310313
asyncQueryExecutorService,
311314
clusterManagerEventListener,
312315
pluginSettings,
313-
directQueryExecutorService);
316+
directQueryExecutorService,
317+
extensionsHolder);
314318
}
315319

316320
@Override
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.opensearch.sql.plugin.config;
7+
8+
import java.util.List;
9+
import org.opensearch.sql.executor.ExecutionEngine;
10+
11+
/**
12+
* Holds execution engine engines loaded via SPI. Returned from {@code SQLPlugin.createComponents()}
13+
* so that OpenSearch's Guice injector can inject it into transport actions like {@code
14+
* TransportPPLQueryAction}.
15+
*/
16+
public record EngineExtensionsHolder(List<ExecutionEngine> engines) {}

plugin/src/main/java/org/opensearch/sql/plugin/config/OpenSearchPluginModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public class OpenSearchPluginModule extends AbstractModule {
4545

4646
private final List<ExecutionEngine> executionEngineExtensions;
4747

48-
/** Default constructor for when no extensions are available. */
48+
/** Default constructor for when no engines are available. */
4949
public OpenSearchPluginModule() {
5050
this(List.of());
5151
}

plugin/src/main/java/org/opensearch/sql/plugin/transport/TransportPPLQueryAction.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.opensearch.sql.monitor.profile.QueryProfiling;
3434
import org.opensearch.sql.opensearch.executor.OpenSearchQueryManager;
3535
import org.opensearch.sql.opensearch.setting.OpenSearchSettings;
36+
import org.opensearch.sql.plugin.config.EngineExtensionsHolder;
3637
import org.opensearch.sql.plugin.config.OpenSearchPluginModule;
3738
import org.opensearch.sql.ppl.PPLService;
3839
import org.opensearch.sql.ppl.domain.PPLQueryRequest;
@@ -65,11 +66,12 @@ public TransportPPLQueryAction(
6566
NodeClient client,
6667
ClusterService clusterService,
6768
DataSourceServiceImpl dataSourceService,
68-
org.opensearch.common.settings.Settings clusterSettings) {
69+
org.opensearch.common.settings.Settings clusterSettings,
70+
EngineExtensionsHolder extensionsHolder) {
6971
super(PPLQueryAction.NAME, transportService, actionFilters, TransportPPLQueryRequest::new);
7072

7173
ModulesBuilder modules = new ModulesBuilder();
72-
modules.add(new OpenSearchPluginModule());
74+
modules.add(new OpenSearchPluginModule(extensionsHolder.engines()));
7375
modules.add(
7476
b -> {
7577
b.bind(NodeClient.class).toInstance(client);

0 commit comments

Comments
 (0)