diff --git a/workspace-server/internal/handlers/approvals.go b/workspace-server/internal/handlers/approvals.go index 33f4c8453..b0d44b105 100644 --- a/workspace-server/internal/handlers/approvals.go +++ b/workspace-server/internal/handlers/approvals.go @@ -80,10 +80,12 @@ func (h *ApprovalsHandler) ListAll(c *gin.Context) { ctx := c.Request.Context() // Auto-expire stale approvals (older than 10 min) - db.DB.ExecContext(ctx, ` + if _, err := db.DB.ExecContext(ctx, ` UPDATE approval_requests SET status = 'denied', decided_by = 'auto-expired', decided_at = now() WHERE status = 'pending' AND created_at < now() - interval '10 minutes' - `) + `); err != nil { + log.Printf("approvals: auto-expire failed: %v", err) + } rows, err := db.DB.QueryContext(ctx, ` SELECT a.id, a.workspace_id, w.name, a.action, a.reason, a.status, a.created_at diff --git a/workspace-server/internal/handlers/delegation.go b/workspace-server/internal/handlers/delegation.go index d42cff5c9..8221c12cb 100644 --- a/workspace-server/internal/handlers/delegation.go +++ b/workspace-server/internal/handlers/delegation.go @@ -261,10 +261,12 @@ func lookupIdempotentDelegation(ctx context.Context, c *gin.Context, sourceID, i return false } if existingStatus == "failed" { - _, _ = db.DB.ExecContext(ctx, ` + if _, err := db.DB.ExecContext(ctx, ` DELETE FROM activity_logs WHERE workspace_id = $1 AND idempotency_key = $2 AND status = 'failed' - `, sourceID, idempotencyKey) + `, sourceID, idempotencyKey); err != nil { + log.Printf("delegation: failed to clean up failed idempotency row for %s/%s: %v", sourceID, idempotencyKey, err) + } return false } c.JSON(http.StatusOK, gin.H{ diff --git a/workspace-server/internal/handlers/workspace_crud.go b/workspace-server/internal/handlers/workspace_crud.go index 23f489db6..8c54e56c1 100644 --- a/workspace-server/internal/handlers/workspace_crud.go +++ b/workspace-server/internal/handlers/workspace_crud.go @@ -450,8 +450,12 @@ func (h *WorkspaceHandler) Delete(c *gin.Context) { } } // Null out parent_id / forwarded_to references - db.DB.ExecContext(ctx, "UPDATE workspaces SET parent_id = NULL WHERE parent_id = ANY($1::uuid[])", purgeIDs) - db.DB.ExecContext(ctx, "UPDATE workspaces SET forwarded_to = NULL WHERE forwarded_to = ANY($1::uuid[])", purgeIDs) + if _, err := db.DB.ExecContext(ctx, "UPDATE workspaces SET parent_id = NULL WHERE parent_id = ANY($1::uuid[])", purgeIDs); err != nil { + log.Printf("Purge parent_id null error for %v: %v", allIDs, err) + } + if _, err := db.DB.ExecContext(ctx, "UPDATE workspaces SET forwarded_to = NULL WHERE forwarded_to = ANY($1::uuid[])", purgeIDs); err != nil { + log.Printf("Purge forwarded_to null error for %v: %v", allIDs, err) + } // Hard delete the workspace row if _, err := db.DB.ExecContext(ctx, "DELETE FROM workspaces WHERE id = ANY($1::uuid[])", purgeIDs); err != nil { log.Printf("Purge workspace row error for %v: %v", allIDs, err)