Skip to content

Process provisioner: binding fingerprint survives hub restarts (CL-9918) - #1107

Merged
TheGreatAxios merged 2 commits into
mainfrom
cl-9918-stable-provisioner-fingerprint
Oct 5, 2026
Merged

TheGreatAxios merged 2 commits into
mainfrom
cl-9918-stable-provisioner-fingerprint

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Closes CL-9918.

Problem: the process provisioner's binding fingerprint included the hub's port-derived WebSocket URL and the sidecar's absolute entry path. A hub restart that changed either left existing allocation rows matching no provisioner, so the reconciler retried them forever without releasing or replacing them.

Fix: the fingerprint is now process:v1:${role}. It identifies the backend, and port or install path don't change compatibility.

Reproduced: hub A deploys a worker, then hub A and its sidecar are killed and hub B boots on the same database with a new port. The allocation row was still allocated after 300s. With the fingerprint patched to hub B's value, the row was released at about 126s with sidecar_connect_failed.

Tests: the new test fails on main and passes with the fix. Typecheck, lint, fmt:check and the hub tests pass.

Note: existing rows carrying the old fingerprint stay stranded once. Reset the database after this lands.

@linear-code

linear-code Bot commented Oct 5, 2026

Copy link
Copy Markdown

CL-9918

@TheGreatAxios
TheGreatAxios merged commit 5652775 into main Oct 5, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant