From 8a827b61428f2eb45ae5693c0207b1c20c357d46 Mon Sep 17 00:00:00 2001 From: rabbitblood Date: Sun, 19 Apr 2026 21:53:30 -0700 Subject: [PATCH] fix: disable schedules when workspace is deleted (#1027) When a workspace is deleted (status set to 'removed'), its schedules remained enabled, causing the scheduler to keep firing cron jobs for non-existent containers. Add a cascade disable query alongside the existing token revocation and canvas layout cleanup. Co-Authored-By: Claude Opus 4.6 (1M context) --- workspace-server/internal/handlers/workspace.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/workspace-server/internal/handlers/workspace.go b/workspace-server/internal/handlers/workspace.go index ed5a0244..464cbd91 100644 --- a/workspace-server/internal/handlers/workspace.go +++ b/workspace-server/internal/handlers/workspace.go @@ -803,6 +803,12 @@ func (h *WorkspaceHandler) Delete(c *gin.Context) { pq.Array(allIDs)); err != nil { log.Printf("Delete token revocation error for %s: %v", id, err) } + // Disable schedules for removed workspaces (#1027) + if _, err := db.DB.ExecContext(ctx, + `UPDATE workspace_schedules SET enabled = false WHERE workspace_id = ANY($1::uuid[])`, + pq.Array(allIDs)); err != nil { + log.Printf("Delete schedule disable error for %s: %v", id, err) + } // Now stop containers + remove volumes for all descendants (any depth). // Any concurrent heartbeat / registration / liveness-triggered restart