mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-10-18 00:03:11 +00:00
create_fork?background=true answers with a creation id, and the status route reads that attempt only, for the user who started it. A retry that reuses the fork id is a new attempt, so a poller never reads another attempt's outcome. The AI-session fork no longer adopts a creation in flight, which it could not tell apart from someone else's. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
21 lines
1015 B
SQL
21 lines
1015 B
SQL
-- A fork being created in the background, and how that ended. The fork's own workspace row only
|
|
-- exists once the copy commits, so this is where a failure is reported to whoever polls for it.
|
|
-- `heartbeat_at` is refreshed while the copy runs: an unfinished row that stops being refreshed
|
|
-- belongs to a server that went away mid-copy. `step` names the part of the copy it is in.
|
|
-- `creation_id` names one attempt: the row is reused when a failed or abandoned one is retried, and
|
|
-- whoever polls reads only the attempt it started.
|
|
CREATE TABLE workspace_fork_creation (
|
|
fork_workspace_id VARCHAR(50) PRIMARY KEY,
|
|
parent_workspace_id VARCHAR(50) NOT NULL,
|
|
creation_id UUID NOT NULL,
|
|
created_by VARCHAR(255) NOT NULL,
|
|
started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
heartbeat_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
step TEXT,
|
|
finished_at TIMESTAMPTZ,
|
|
error TEXT
|
|
);
|
|
|
|
GRANT ALL ON workspace_fork_creation TO windmill_user;
|
|
GRANT ALL ON workspace_fork_creation TO windmill_admin;
|