Skip to content

Commit b1c78ce

Browse files
authored
Make TransportGetDatabaseConfigurationAction project aware (#130065)
1 parent fcd5afa commit b1c78ce

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

modules/ingest-geoip/src/main/java/org/elasticsearch/ingest/geoip/direct/TransportGetDatabaseConfigurationAction.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@
1313
import org.elasticsearch.action.FailedNodeException;
1414
import org.elasticsearch.action.support.ActionFilters;
1515
import org.elasticsearch.action.support.nodes.TransportNodesAction;
16+
import org.elasticsearch.cluster.metadata.ProjectMetadata;
1617
import org.elasticsearch.cluster.node.DiscoveryNode;
18+
import org.elasticsearch.cluster.project.ProjectResolver;
1719
import org.elasticsearch.cluster.service.ClusterService;
1820
import org.elasticsearch.common.io.stream.StreamInput;
1921
import org.elasticsearch.common.regex.Regex;
2022
import org.elasticsearch.ingest.geoip.DatabaseNodeService;
23+
import org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor;
2124
import org.elasticsearch.ingest.geoip.GeoIpTaskState;
2225
import org.elasticsearch.ingest.geoip.IngestGeoIpMetadata;
2326
import org.elasticsearch.injection.guice.Inject;
@@ -48,14 +51,16 @@ public class TransportGetDatabaseConfigurationAction extends TransportNodesActio
4851
List<DatabaseConfigurationMetadata>> {
4952

5053
private final DatabaseNodeService databaseNodeService;
54+
private final ProjectResolver projectResolver;
5155

5256
@Inject
5357
public TransportGetDatabaseConfigurationAction(
5458
TransportService transportService,
5559
ClusterService clusterService,
5660
ThreadPool threadPool,
5761
ActionFilters actionFilters,
58-
DatabaseNodeService databaseNodeService
62+
DatabaseNodeService databaseNodeService,
63+
ProjectResolver projectResolver
5964
) {
6065
super(
6166
GetDatabaseConfigurationAction.NAME,
@@ -66,6 +71,7 @@ public TransportGetDatabaseConfigurationAction(
6671
threadPool.executor(ThreadPool.Names.MANAGEMENT)
6772
);
6873
this.databaseNodeService = databaseNodeService;
74+
this.projectResolver = projectResolver;
6975
}
7076

7177
protected List<DatabaseConfigurationMetadata> createActionContext(Task task, GetDatabaseConfigurationAction.Request request) {
@@ -82,25 +88,29 @@ protected List<DatabaseConfigurationMetadata> createActionContext(Task task, Get
8288
"wildcard only supports a single value, please use comma-separated values or a single wildcard value"
8389
);
8490
}
85-
8691
List<DatabaseConfigurationMetadata> results = new ArrayList<>();
87-
PersistentTasksCustomMetadata tasksMetadata = PersistentTasksCustomMetadata.getPersistentTasksCustomMetadata(
88-
clusterService.state()
89-
);
92+
ProjectMetadata projectMetadata = projectResolver.getProjectMetadata(clusterService.state());
93+
PersistentTasksCustomMetadata tasksMetadata = PersistentTasksCustomMetadata.get(projectMetadata);
94+
String geoIpTaskId = GeoIpDownloaderTaskExecutor.getTaskId(projectMetadata.id(), projectResolver.supportsMultipleProjects());
95+
9096
for (String id : ids) {
91-
results.addAll(getWebDatabases(tasksMetadata, id));
92-
results.addAll(getMaxmindDatabases(clusterService, id));
97+
results.addAll(getWebDatabases(geoIpTaskId, tasksMetadata, id));
98+
results.addAll(getMaxmindDatabases(projectMetadata, id));
9399
}
94100
return results;
95101
}
96102

97103
/*
98104
* This returns read-only database information about the databases managed by the standard downloader
99105
*/
100-
private static Collection<DatabaseConfigurationMetadata> getWebDatabases(PersistentTasksCustomMetadata tasksMetadata, String id) {
106+
private static Collection<DatabaseConfigurationMetadata> getWebDatabases(
107+
String geoIpTaskId,
108+
PersistentTasksCustomMetadata tasksMetadata,
109+
String id
110+
) {
101111
List<DatabaseConfigurationMetadata> webDatabases = new ArrayList<>();
102112
if (tasksMetadata != null) {
103-
PersistentTasksCustomMetadata.PersistentTask<?> maybeGeoIpTask = tasksMetadata.getTask("geoip-downloader");
113+
PersistentTasksCustomMetadata.PersistentTask<?> maybeGeoIpTask = tasksMetadata.getTask(geoIpTaskId);
104114
if (maybeGeoIpTask != null) {
105115
GeoIpTaskState geoIpTaskState = (GeoIpTaskState) maybeGeoIpTask.getState();
106116
if (geoIpTaskState != null) {
@@ -137,12 +147,9 @@ private static String getDatabaseNameForFileName(String databaseFileName) {
137147
/*
138148
* This returns information about databases that are downloaded from maxmind.
139149
*/
140-
private static Collection<DatabaseConfigurationMetadata> getMaxmindDatabases(ClusterService clusterService, String id) {
150+
private static Collection<DatabaseConfigurationMetadata> getMaxmindDatabases(ProjectMetadata projectMetadata, String id) {
141151
List<DatabaseConfigurationMetadata> maxmindDatabases = new ArrayList<>();
142-
final IngestGeoIpMetadata geoIpMeta = clusterService.state()
143-
.metadata()
144-
.getProject()
145-
.custom(IngestGeoIpMetadata.TYPE, IngestGeoIpMetadata.EMPTY);
152+
final IngestGeoIpMetadata geoIpMeta = projectMetadata.custom(IngestGeoIpMetadata.TYPE, IngestGeoIpMetadata.EMPTY);
146153
if (Regex.isSimpleMatchPattern(id)) {
147154
for (Map.Entry<String, DatabaseConfigurationMetadata> entry : geoIpMeta.getDatabases().entrySet()) {
148155
if (Regex.simpleMatch(id, entry.getKey())) {

0 commit comments

Comments
 (0)