mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-09 10:57:03 +08:00
Fix provider deletion cleanup
This commit is contained in:
@@ -564,11 +564,17 @@ impl AppState {
|
||||
pub(crate) async fn cleanup_deleted_provider_catalog_refs(
|
||||
&self,
|
||||
provider_id: &str,
|
||||
provider_deleted: bool,
|
||||
endpoint_ids: &[String],
|
||||
key_ids: &[String],
|
||||
) -> Result<(), GatewayError> {
|
||||
self.data
|
||||
.cleanup_deleted_provider_catalog_refs(provider_id, endpoint_ids, key_ids)
|
||||
.cleanup_deleted_provider_catalog_refs(
|
||||
provider_id,
|
||||
provider_deleted,
|
||||
endpoint_ids,
|
||||
key_ids,
|
||||
)
|
||||
.await
|
||||
.map_err(|err| GatewayError::Internal(err.to_string()))?;
|
||||
for key_id in key_ids {
|
||||
@@ -770,6 +776,25 @@ impl AppState {
|
||||
tasks.insert(task.task_id.clone(), task);
|
||||
}
|
||||
|
||||
pub(crate) fn reserve_provider_delete_task(
|
||||
&self,
|
||||
task: LocalProviderDeleteTaskState,
|
||||
) -> LocalProviderDeleteTaskState {
|
||||
let mut tasks = self
|
||||
.provider_delete_tasks
|
||||
.lock()
|
||||
.expect("provider delete tasks cache should lock");
|
||||
if let Some(existing) = tasks
|
||||
.values()
|
||||
.find(|existing| existing.provider_id == task.provider_id && existing.is_active())
|
||||
.cloned()
|
||||
{
|
||||
return existing;
|
||||
}
|
||||
tasks.insert(task.task_id.clone(), task.clone());
|
||||
task
|
||||
}
|
||||
|
||||
pub(crate) fn get_provider_delete_task(
|
||||
&self,
|
||||
task_id: &str,
|
||||
|
||||
@@ -1291,6 +1291,7 @@ impl AppState {
|
||||
let deleted_key_ids = [key_id.to_string()];
|
||||
self.cleanup_deleted_provider_catalog_refs(
|
||||
&transport.provider.id,
|
||||
false,
|
||||
&[],
|
||||
&deleted_key_ids,
|
||||
)
|
||||
|
||||
@@ -11,6 +11,12 @@ pub(crate) struct LocalProviderDeleteTaskState {
|
||||
pub message: String,
|
||||
}
|
||||
|
||||
impl LocalProviderDeleteTaskState {
|
||||
pub(crate) fn is_active(&self) -> bool {
|
||||
matches!(self.status.as_str(), "pending" | "running")
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub(crate) enum LocalMutationOutcome<T> {
|
||||
Applied(T),
|
||||
|
||||
Reference in New Issue
Block a user