feat(httpapi): harden control plane and speed up prefix refresh
Очередь job получила lease и fencing, телеметрия и прогресс deploy сохраняются, ревизия пишет manifest входов. Обновление префиксов не переписывает неизменённый снимок, большие наборы идут через COPY, а устаревшая ревизия не попадает в deploy. Бандл ноды кэшируется, prune и постановка job больше не держат горячий путь. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
924f111e48
commit
f8e0520817
197 files changed
+18655
-1416
No files matched your search
@@ -0,0 +1,15 @@
|
||||
ALTER TABLE job_audit ADD COLUMN request_hash TEXT;
|
||||
ALTER TABLE job_audit ADD COLUMN request_sequence BIGINT GENERATED ALWAYS AS IDENTITY;
|
||||
ALTER TABLE job_audit ADD COLUMN request_json JSONB;
|
||||
ALTER TABLE job_audit ADD COLUMN owner_id TEXT;
|
||||
ALTER TABLE job_audit ADD COLUMN lease_until TIMESTAMPTZ;
|
||||
ALTER TABLE job_audit ADD COLUMN attempt INTEGER NOT NULL DEFAULT 0;
|
||||
ALTER TABLE job_audit ADD COLUMN fencing_token BIGINT NOT NULL DEFAULT 0;
|
||||
ALTER TABLE job_audit ADD COLUMN available_at TIMESTAMPTZ NOT NULL DEFAULT now();
|
||||
ALTER TABLE job_audit ADD COLUMN cancel_requested BOOLEAN NOT NULL DEFAULT false;
|
||||
INSERT INTO tenant (id, name, slug) VALUES ('00000000-0000-0000-0000-000000000000', 'EvoBGP system jobs', 'evobgp-system-jobs') ON CONFLICT (id) DO NOTHING;
|
||||
CREATE INDEX idx_job_audit_claim ON job_audit (available_at, created_at) WHERE status = 'queued';
|
||||
CREATE INDEX idx_job_audit_expired_lease ON job_audit (lease_until) WHERE status = 'running';
|
||||
-- Give pre-upgrade workers their old 15-minute grace; later claims can recover them.
|
||||
UPDATE job_audit SET owner_id = 'legacy-unfenced', lease_until = now() + interval '15 minutes', attempt = 1
|
||||
WHERE status = 'running' AND lease_until IS NULL;
|
||||
Reference in new issue
Block a user