From d25b5921f70bcbda7bb6b6d12405f1bd79f3afb0 Mon Sep 17 00:00:00 2001 From: Accusys Date: Mon, 20 Jul 2026 23:45:48 +0800 Subject: [PATCH] fix: delete all progress keys on unregister - Delete progress:{uuid}:pipeline, :agent, :tkg - Prevents stale Redis data from blocking new registrations --- src/api/files.rs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/api/files.rs b/src/api/files.rs index 1300fb8..6722ab4 100644 --- a/src/api/files.rs +++ b/src/api/files.rs @@ -1263,20 +1263,22 @@ async fn unregister( deleted += 1; } - // Delete PipelineProgress key - let progress_key = format!( - "{}progress:{}:pipeline", - crate::core::config::REDIS_KEY_PREFIX.as_str(), - uuid - ); + // Delete PipelineProgress keys (all variants) + let progress_patterns = [ + format!("{}progress:{}:pipeline", crate::core::config::REDIS_KEY_PREFIX.as_str(), uuid), + format!("{}progress:{}:agent", crate::core::config::REDIS_KEY_PREFIX.as_str(), uuid), + format!("{}progress:{}:tkg", crate::core::config::REDIS_KEY_PREFIX.as_str(), uuid), + ]; if let Ok(mut conn) = redis.get_conn().await { - let _: Option = redis::cmd("DEL") - .arg(&progress_key) - .query_async(&mut conn) - .await - .ok(); - tracing::info!("[UNREGISTER] Deleted Redis PipelineProgress for {}", uuid); - deleted += 1; + for key in &progress_patterns { + let _: Option = redis::cmd("DEL") + .arg(key) + .query_async(&mut conn) + .await + .ok(); + } + tracing::info!("[UNREGISTER] Deleted Redis PipelineProgress keys for {}", uuid); + deleted += progress_patterns.len() as u64; } Some(deleted)