feat: support durable task cancellation without foreign keys

This commit is contained in:
2026-09-17 17:03:23 +08:00
parent 6805506450
commit 3ce7d2c104
48 changed files with 1642 additions and 164 deletions

View File

@@ -0,0 +1,4 @@
ALTER TABLE pulse_attempt_evidence
DROP CHECK ck_attempt_evidence_outcome,
MODIFY COLUMN outcome VARCHAR(16) NOT NULL COMMENT 'Worker 声明的结果:SUCCEEDED、FAILED、UNKNOWN 或已确认停止且本次无遗留效果的 CANCELLED',
ADD CONSTRAINT ck_attempt_evidence_outcome CHECK(outcome IN ('SUCCEEDED','FAILED','UNKNOWN','CANCELLED'));

View File

@@ -0,0 +1,103 @@
-- 移除全部历史外键,保留现有索引、唯一约束、状态约束和数据。
-- 资源存在性及归属由服务端按命名空间在事务内校验,禁止级联删除。
ALTER TABLE orbit_namespaces
DROP FOREIGN KEY fk_orbit_namespaces_0;
ALTER TABLE orbit_credentials
DROP FOREIGN KEY fk_orbit_credentials_0;
ALTER TABLE orbit_idempotency_keys
DROP FOREIGN KEY fk_orbit_idempotency_keys_0;
ALTER TABLE orbit_events
DROP FOREIGN KEY fk_orbit_events_0;
ALTER TABLE orbit_subscriptions
DROP FOREIGN KEY fk_orbit_subscriptions_0,
DROP FOREIGN KEY fk_orbit_subscriptions_1;
ALTER TABLE orbit_deliveries
DROP FOREIGN KEY fk_orbit_deliveries_0,
DROP FOREIGN KEY fk_orbit_deliveries_1,
DROP FOREIGN KEY fk_orbit_deliveries_2;
ALTER TABLE orbit_audit_events
DROP FOREIGN KEY fk_orbit_audit_events_0;
ALTER TABLE pulse_queues
DROP FOREIGN KEY fk_pulse_queues_0;
ALTER TABLE pulse_execution_gates
DROP FOREIGN KEY fk_pulse_execution_gates_0;
ALTER TABLE pulse_worker_sessions
DROP FOREIGN KEY fk_pulse_worker_sessions_0,
DROP FOREIGN KEY fk_pulse_worker_sessions_1,
DROP FOREIGN KEY fk_worker_session_instance;
ALTER TABLE pulse_tasks
DROP FOREIGN KEY fk_pulse_tasks_0,
DROP FOREIGN KEY fk_pulse_tasks_1,
DROP FOREIGN KEY fk_pulse_tasks_2,
DROP FOREIGN KEY fk_pulse_tasks_3,
DROP FOREIGN KEY fk_pulse_tasks_4;
ALTER TABLE pulse_attempts
DROP FOREIGN KEY fk_pulse_attempts_0,
DROP FOREIGN KEY fk_pulse_attempts_1,
DROP FOREIGN KEY fk_pulse_attempts_2;
ALTER TABLE pulse_attempt_receipts
DROP FOREIGN KEY fk_pulse_attempt_receipts_0,
DROP FOREIGN KEY fk_pulse_attempt_receipts_1;
ALTER TABLE pulse_concurrency_limits
DROP FOREIGN KEY fk_pulse_concurrency_limits_0;
ALTER TABLE pulse_permits
DROP FOREIGN KEY fk_pulse_permits_0,
DROP FOREIGN KEY fk_pulse_permits_1,
DROP FOREIGN KEY fk_pulse_permits_2;
ALTER TABLE pulse_schedules
DROP FOREIGN KEY fk_pulse_schedules_0,
DROP FOREIGN KEY fk_schedule_queue;
ALTER TABLE pulse_schedule_versions
DROP FOREIGN KEY fk_pulse_schedule_versions_0,
DROP FOREIGN KEY fk_pulse_schedule_versions_1;
ALTER TABLE pulse_schedule_occurrences
DROP FOREIGN KEY fk_pulse_schedule_occurrences_0,
DROP FOREIGN KEY fk_pulse_schedule_occurrences_1,
DROP FOREIGN KEY fk_pulse_schedule_occurrences_2;
ALTER TABLE weave_definitions
DROP FOREIGN KEY fk_weave_definitions_0;
ALTER TABLE weave_definition_versions
DROP FOREIGN KEY fk_weave_definition_versions_0,
DROP FOREIGN KEY fk_weave_definition_versions_1;
ALTER TABLE weave_instances
DROP FOREIGN KEY fk_weave_instances_0,
DROP FOREIGN KEY fk_weave_instances_1,
DROP FOREIGN KEY fk_weave_instances_2,
DROP FOREIGN KEY fk_weave_instances_3;
ALTER TABLE weave_steps
DROP FOREIGN KEY fk_weave_steps_0,
DROP FOREIGN KEY fk_weave_steps_1,
DROP FOREIGN KEY fk_weave_steps_2;
ALTER TABLE weave_activations
DROP FOREIGN KEY fk_weave_activations_0,
DROP FOREIGN KEY fk_weave_activations_1,
DROP FOREIGN KEY fk_weave_activations_2;
ALTER TABLE weave_waits
DROP FOREIGN KEY fk_weave_waits_0,
DROP FOREIGN KEY fk_weave_waits_1,
DROP FOREIGN KEY fk_weave_waits_2;
ALTER TABLE weave_signals
DROP FOREIGN KEY fk_weave_signals_0,
DROP FOREIGN KEY fk_weave_signals_1,
DROP FOREIGN KEY fk_weave_signals_2;
ALTER TABLE weave_poll_states
DROP FOREIGN KEY fk_weave_poll_states_0,
DROP FOREIGN KEY fk_weave_poll_states_1,
DROP FOREIGN KEY fk_weave_poll_states_2;
ALTER TABLE weave_poll_rounds
DROP FOREIGN KEY fk_weave_poll_rounds_0,
DROP FOREIGN KEY fk_weave_poll_rounds_1,
DROP FOREIGN KEY fk_weave_poll_rounds_2;
ALTER TABLE weave_inbox
DROP FOREIGN KEY fk_weave_inbox_0,
DROP FOREIGN KEY fk_weave_inbox_1,
DROP FOREIGN KEY fk_weave_inbox_2;
ALTER TABLE weave_pending_advances
DROP FOREIGN KEY fk_weave_pending_advances_0,
DROP FOREIGN KEY fk_weave_pending_advances_1;
ALTER TABLE pulse_worker_instances
DROP FOREIGN KEY fk_worker_instance_credential,
DROP FOREIGN KEY fk_worker_instance_queue,
DROP FOREIGN KEY fk_worker_instance_session;
ALTER TABLE pulse_attempt_evidence
DROP FOREIGN KEY fk_attempt_evidence_attempt;