2020import org .elasticsearch .cluster .SimpleBatchedExecutor ;
2121import org .elasticsearch .cluster .block .ClusterBlockException ;
2222import org .elasticsearch .cluster .block .ClusterBlockLevel ;
23+ import org .elasticsearch .cluster .metadata .ProjectId ;
2324import org .elasticsearch .cluster .metadata .ProjectMetadata ;
25+ import org .elasticsearch .cluster .project .ProjectResolver ;
2426import org .elasticsearch .cluster .service .ClusterService ;
2527import org .elasticsearch .cluster .service .MasterServiceTaskQueue ;
2628import org .elasticsearch .common .Priority ;
@@ -58,13 +60,15 @@ public void taskSucceeded(UpdateDatabaseConfigurationTask task, Void unused) {
5860 };
5961
6062 private final MasterServiceTaskQueue <UpdateDatabaseConfigurationTask > updateDatabaseConfigurationTaskQueue ;
63+ private final ProjectResolver projectResolver ;
6164
6265 @ Inject
6366 public TransportPutDatabaseConfigurationAction (
6467 TransportService transportService ,
6568 ClusterService clusterService ,
6669 ThreadPool threadPool ,
67- ActionFilters actionFilters
70+ ActionFilters actionFilters ,
71+ ProjectResolver projectResolver
6872 ) {
6973 super (
7074 PutDatabaseConfigurationAction .NAME ,
@@ -81,6 +85,7 @@ public TransportPutDatabaseConfigurationAction(
8185 Priority .NORMAL ,
8286 UPDATE_TASK_EXECUTOR
8387 );
88+ this .projectResolver = projectResolver ;
8489 }
8590
8691 @ Override
@@ -89,7 +94,7 @@ protected void masterOperation(Task task, Request request, ClusterState state, A
8994
9095 updateDatabaseConfigurationTaskQueue .submitTask (
9196 Strings .format ("update-geoip-database-configuration-[%s]" , id ),
92- new UpdateDatabaseConfigurationTask (listener , request .getDatabase ()),
97+ new UpdateDatabaseConfigurationTask (projectResolver . getProjectId (), listener , request .getDatabase ()),
9398 null
9499 );
95100 }
@@ -105,9 +110,9 @@ static boolean isNoopUpdate(@Nullable DatabaseConfigurationMetadata existingData
105110 }
106111 }
107112
108- static void validatePrerequisites (DatabaseConfiguration database , ClusterState state ) {
113+ static void validatePrerequisites (ProjectId projectId , DatabaseConfiguration database , ClusterState state ) {
109114 // 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 );
111116
112117 Optional <DatabaseConfiguration > sameName = geoIpMeta .getDatabases ()
113118 .values ()
@@ -125,12 +130,14 @@ static void validatePrerequisites(DatabaseConfiguration database, ClusterState s
125130 });
126131 }
127132
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 {
131138
132139 ClusterState execute (ClusterState currentState ) throws Exception {
133- final var project = currentState .metadata ().getProject ();
140+ final var project = currentState .metadata ().getProject (projectId );
134141 IngestGeoIpMetadata geoIpMeta = project .custom (IngestGeoIpMetadata .TYPE , IngestGeoIpMetadata .EMPTY );
135142
136143 String id = database .id ();
@@ -140,7 +147,7 @@ ClusterState execute(ClusterState currentState) throws Exception {
140147 return currentState ;
141148 }
142149
143- validatePrerequisites (database , currentState );
150+ validatePrerequisites (projectId , database , currentState );
144151
145152 Map <String , DatabaseConfigurationMetadata > databases = new HashMap <>(geoIpMeta .getDatabases ());
146153 databases .put (
0 commit comments