Implement crash-safe streaming worker runtime
This commit is contained in:
parent
16cba3c317
commit
cdeef3cc1a
2 changed files with 7448 additions and 194 deletions
|
|
@ -0,0 +1,39 @@
|
|||
ALTER TABLE attempts
|
||||
ADD COLUMN staging_origin_attempt_id TEXT;
|
||||
|
||||
UPDATE attempts
|
||||
SET staging_origin_attempt_id = attempt_id;
|
||||
|
||||
ALTER TABLE attempts
|
||||
ALTER COLUMN staging_origin_attempt_id SET NOT NULL,
|
||||
ADD CONSTRAINT attempts_staging_origin_fk
|
||||
FOREIGN KEY (staging_origin_attempt_id)
|
||||
REFERENCES attempts (attempt_id)
|
||||
DEFERRABLE INITIALLY DEFERRED,
|
||||
ADD CONSTRAINT attempts_id_job_unique UNIQUE (attempt_id, job_id);
|
||||
|
||||
ALTER TABLE jobs
|
||||
ADD COLUMN checkpoint_owner_attempt_id TEXT;
|
||||
|
||||
UPDATE jobs j
|
||||
SET checkpoint_owner_attempt_id = (
|
||||
SELECT a.attempt_id
|
||||
FROM attempts a
|
||||
WHERE a.job_id = j.job_id
|
||||
ORDER BY a.fence DESC
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE j.checkpoint IS NOT NULL;
|
||||
|
||||
ALTER TABLE jobs
|
||||
ADD CONSTRAINT jobs_checkpoint_owner_fk
|
||||
FOREIGN KEY (checkpoint_owner_attempt_id, job_id)
|
||||
REFERENCES attempts (attempt_id, job_id)
|
||||
DEFERRABLE INITIALLY DEFERRED,
|
||||
ADD CONSTRAINT jobs_checkpoint_owner_check CHECK (
|
||||
(checkpoint IS NULL) = (checkpoint_owner_attempt_id IS NULL)
|
||||
);
|
||||
|
||||
CREATE INDEX jobs_checkpoint_owner_idx
|
||||
ON jobs (checkpoint_owner_attempt_id)
|
||||
WHERE checkpoint_owner_attempt_id IS NOT NULL;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
ALTER TABLE attempt_staging_cleanup
|
||||
DROP CONSTRAINT attempt_staging_cleanup_kind_check,
|
||||
DROP CONSTRAINT attempt_staging_cleanup_identity_shape_check,
|
||||
ADD CONSTRAINT attempt_staging_cleanup_kind_check
|
||||
CHECK (kind IN ('write_intent', 'object', 'multipart')),
|
||||
ADD CONSTRAINT attempt_staging_cleanup_identity_shape_check CHECK (
|
||||
(kind IN ('write_intent', 'object') AND upload_id IS NULL)
|
||||
OR (kind = 'multipart' AND version_id IS NULL AND upload_id IS NOT NULL)
|
||||
);
|
||||
Loading…
Reference in a new issue