20
20
import org .elasticsearch .cluster .SimpleBatchedExecutor ;
21
21
import org .elasticsearch .cluster .block .ClusterBlockException ;
22
22
import org .elasticsearch .cluster .block .ClusterBlockLevel ;
23
+ import org .elasticsearch .cluster .metadata .ProjectId ;
23
24
import org .elasticsearch .cluster .metadata .ProjectMetadata ;
25
+ import org .elasticsearch .cluster .project .ProjectResolver ;
24
26
import org .elasticsearch .cluster .service .ClusterService ;
25
27
import org .elasticsearch .cluster .service .MasterServiceTaskQueue ;
26
28
import org .elasticsearch .common .Priority ;
@@ -58,13 +60,15 @@ public void taskSucceeded(UpdateDatabaseConfigurationTask task, Void unused) {
58
60
};
59
61
60
62
private final MasterServiceTaskQueue <UpdateDatabaseConfigurationTask > updateDatabaseConfigurationTaskQueue ;
63
+ private final ProjectResolver projectResolver ;
61
64
62
65
@ Inject
63
66
public TransportPutDatabaseConfigurationAction (
64
67
TransportService transportService ,
65
68
ClusterService clusterService ,
66
69
ThreadPool threadPool ,
67
- ActionFilters actionFilters
70
+ ActionFilters actionFilters ,
71
+ ProjectResolver projectResolver
68
72
) {
69
73
super (
70
74
PutDatabaseConfigurationAction .NAME ,
@@ -81,6 +85,7 @@ public TransportPutDatabaseConfigurationAction(
81
85
Priority .NORMAL ,
82
86
UPDATE_TASK_EXECUTOR
83
87
);
88
+ this .projectResolver = projectResolver ;
84
89
}
85
90
86
91
@ Override
@@ -89,7 +94,7 @@ protected void masterOperation(Task task, Request request, ClusterState state, A
89
94
90
95
updateDatabaseConfigurationTaskQueue .submitTask (
91
96
Strings .format ("update-geoip-database-configuration-[%s]" , id ),
92
- new UpdateDatabaseConfigurationTask (listener , request .getDatabase ()),
97
+ new UpdateDatabaseConfigurationTask (projectResolver . getProjectId (), listener , request .getDatabase ()),
93
98
null
94
99
);
95
100
}
@@ -105,9 +110,9 @@ static boolean isNoopUpdate(@Nullable DatabaseConfigurationMetadata existingData
105
110
}
106
111
}
107
112
108
- static void validatePrerequisites (DatabaseConfiguration database , ClusterState state ) {
113
+ static void validatePrerequisites (ProjectId projectId , DatabaseConfiguration database , ClusterState state ) {
109
114
// we need to verify that the database represents a unique file (name) among the various databases for this same provider
110
- IngestGeoIpMetadata geoIpMeta = state .metadata ().getProject ().custom (IngestGeoIpMetadata .TYPE , IngestGeoIpMetadata .EMPTY );
115
+ IngestGeoIpMetadata geoIpMeta = state .metadata ().getProject (projectId ).custom (IngestGeoIpMetadata .TYPE , IngestGeoIpMetadata .EMPTY );
111
116
112
117
Optional <DatabaseConfiguration > sameName = geoIpMeta .getDatabases ()
113
118
.values ()
@@ -125,12 +130,14 @@ static void validatePrerequisites(DatabaseConfiguration database, ClusterState s
125
130
});
126
131
}
127
132
128
- private record UpdateDatabaseConfigurationTask (ActionListener <AcknowledgedResponse > listener , DatabaseConfiguration database )
129
- implements
130
- ClusterStateTaskListener {
133
+ private record UpdateDatabaseConfigurationTask (
134
+ ProjectId projectId ,
135
+ ActionListener <AcknowledgedResponse > listener ,
136
+ DatabaseConfiguration database
137
+ ) implements ClusterStateTaskListener {
131
138
132
139
ClusterState execute (ClusterState currentState ) throws Exception {
133
- final var project = currentState .metadata ().getProject ();
140
+ final var project = currentState .metadata ().getProject (projectId );
134
141
IngestGeoIpMetadata geoIpMeta = project .custom (IngestGeoIpMetadata .TYPE , IngestGeoIpMetadata .EMPTY );
135
142
136
143
String id = database .id ();
@@ -140,7 +147,7 @@ ClusterState execute(ClusterState currentState) throws Exception {
140
147
return currentState ;
141
148
}
142
149
143
- validatePrerequisites (database , currentState );
150
+ validatePrerequisites (projectId , database , currentState );
144
151
145
152
Map <String , DatabaseConfigurationMetadata > databases = new HashMap <>(geoIpMeta .getDatabases ());
146
153
databases .put (
0 commit comments