fix: use CASE instead of COALESCE for swapper_state to always update when provided

This commit is contained in:
Apple
2025-12-01 04:12:38 -08:00
parent d8ab32b59f
commit 0f32630733

View File

@@ -3801,7 +3801,9 @@ async def node_heartbeat(
# Update heartbeat
swapper_state = metrics.get("swapper_state")
swapper_state_json = json.dumps(swapper_state) if swapper_state else None
# Always update swapper_state if provided (even if empty dict)
# Use empty JSON object as default if swapper_state is None
swapper_state_json = json.dumps(swapper_state) if swapper_state is not None else None
await pool.execute("""
UPDATE node_cache SET
@@ -3817,7 +3819,10 @@ async def node_heartbeat(
swapper_healthy = COALESCE($9::boolean, swapper_healthy),
swapper_models_loaded = COALESCE($10::integer, swapper_models_loaded),
swapper_models_total = COALESCE($11::integer, swapper_models_total),
swapper_state = COALESCE($12::jsonb, swapper_state)
swapper_state = CASE
WHEN $12::jsonb IS NOT NULL THEN $12::jsonb
ELSE swapper_state
END
WHERE node_id = $1
""",
node_id,