From 285698ccfd2732a0d4939b0e2efbe99bbd0bb5c3 Mon Sep 17 00:00:00 2001 From: taylanbakircioglu Date: Thu, 13 Nov 2025 21:11:04 +0300 Subject: [PATCH] fix(snapshot): Include metadata column in pending_versions SELECT query MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CRITICAL BUG FOUND: - Snapshot created successfully (metadata exists in database) - But reject_all_pending_changes() was not fetching metadata column - Line 4151: SELECT id, version_name FROM config_versions (missing metadata!) - Result: KeyError: 'metadata' during reject rollback Fix: - Added 'metadata' to SELECT query - Line 4151: SELECT id, version_name, metadata FROM config_versions Impact: - Rollback will now work (metadata accessible) - entity_snapshot will be parsed correctly - Entities will be restored to old values on reject Log evidence: - SNAPSHOT: Created successfully ✅ - REJECT ROLLBACK ERROR: KeyError 'metadata' ❌ - Root cause: Missing column in SELECT query --- backend/routers/cluster.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/routers/cluster.py b/backend/routers/cluster.py index 9c997a9..1c21e2f 100644 --- a/backend/routers/cluster.py +++ b/backend/routers/cluster.py @@ -4200,9 +4200,9 @@ async def reject_all_pending_changes(cluster_id: int, authorization: str = Heade await close_database_connection(conn) raise HTTPException(status_code=404, detail=f"Cluster {cluster_id} not found") - # Get all pending config versions for this cluster + # Get all pending config versions for this cluster (CRITICAL: Include metadata for rollback!) pending_versions = await conn.fetch(""" - SELECT id, version_name FROM config_versions + SELECT id, version_name, metadata FROM config_versions WHERE cluster_id = $1 AND status = 'PENDING' """, cluster_id)