2121import org .elasticsearch .cluster .SimpleBatchedExecutor ;
2222import org .elasticsearch .cluster .block .ClusterBlockException ;
2323import org .elasticsearch .cluster .block .ClusterBlockLevel ;
24+ import org .elasticsearch .cluster .metadata .ProjectId ;
2425import org .elasticsearch .cluster .metadata .ProjectMetadata ;
26+ import org .elasticsearch .cluster .project .ProjectResolver ;
2527import org .elasticsearch .cluster .service .ClusterService ;
2628import org .elasticsearch .cluster .service .MasterServiceTaskQueue ;
2729import org .elasticsearch .common .Priority ;
@@ -56,13 +58,15 @@ public void taskSucceeded(DeleteDatabaseConfigurationTask task, Void unused) {
5658 };
5759
5860 private final MasterServiceTaskQueue <DeleteDatabaseConfigurationTask > deleteDatabaseConfigurationTaskQueue ;
61+ private final ProjectResolver projectResolver ;
5962
6063 @ Inject
6164 public TransportDeleteDatabaseConfigurationAction (
6265 TransportService transportService ,
6366 ClusterService clusterService ,
6467 ThreadPool threadPool ,
65- ActionFilters actionFilters
68+ ActionFilters actionFilters ,
69+ ProjectResolver projectResolver
6670 ) {
6771 super (
6872 DeleteDatabaseConfigurationAction .NAME ,
@@ -79,31 +83,35 @@ public TransportDeleteDatabaseConfigurationAction(
7983 Priority .NORMAL ,
8084 DELETE_TASK_EXECUTOR
8185 );
86+ this .projectResolver = projectResolver ;
8287 }
8388
8489 @ Override
8590 protected void masterOperation (Task task , Request request , ClusterState state , ActionListener <AcknowledgedResponse > listener )
8691 throws Exception {
8792 final String id = request .getDatabaseId ();
88- final IngestGeoIpMetadata geoIpMeta = state .metadata ().getProject ().custom (IngestGeoIpMetadata .TYPE , IngestGeoIpMetadata .EMPTY );
93+ final ProjectId projectId = projectResolver .getProjectId ();
94+ final IngestGeoIpMetadata geoIpMeta = state .metadata ()
95+ .getProject (projectId )
96+ .custom (IngestGeoIpMetadata .TYPE , IngestGeoIpMetadata .EMPTY );
8997 if (geoIpMeta .getDatabases ().containsKey (id ) == false ) {
9098 throw new ResourceNotFoundException ("Database configuration not found: {}" , id );
9199 } else if (geoIpMeta .getDatabases ().get (id ).database ().isReadOnly ()) {
92100 throw new IllegalArgumentException ("Database " + id + " is read only" );
93101 }
94102 deleteDatabaseConfigurationTaskQueue .submitTask (
95103 Strings .format ("delete-geoip-database-configuration-[%s]" , id ),
96- new DeleteDatabaseConfigurationTask (listener , id ),
104+ new DeleteDatabaseConfigurationTask (projectId , listener , id ),
97105 null
98106 );
99107 }
100108
101- private record DeleteDatabaseConfigurationTask (ActionListener <AcknowledgedResponse > listener , String databaseId )
109+ private record DeleteDatabaseConfigurationTask (ProjectId projectId , ActionListener <AcknowledgedResponse > listener , String databaseId )
102110 implements
103111 ClusterStateTaskListener {
104112
105113 ClusterState execute (ClusterState currentState ) throws Exception {
106- final var project = currentState .metadata ().getProject ();
114+ final var project = currentState .metadata ().getProject (projectId );
107115 final IngestGeoIpMetadata geoIpMeta = project .custom (IngestGeoIpMetadata .TYPE , IngestGeoIpMetadata .EMPTY );
108116
109117 logger .debug ("deleting database configuration [{}]" , databaseId );
0 commit comments