PrefectHQ
prefect
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
Keep latest timestamp in natural-key dedup within batch Explicitly compare state_timestamp when deduplicating by natural key instead of relying on dict-overwrite order, which could select an older event when the same natural key appears across multiple task-run IDs. Co-Authored-By: alex.s@prefect.io <ajstreed1@gmail.com>
devin/1771284144-fix-task-run-recorder-upsert-constraint
14 minutes ago
Add work pool API helpers and list page E2E tests (#20695) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
main
23 minutes ago
Deduplicate states by (task_run_id, timestamp) before insertion After natural-key ID resolution, multiple events can share the same task_run.id. If they also share the same state timestamp (likely when two workers observe the same state transition), inserting both would violate uq_task_run_state__task_run_id_timestamp_desc. Dedup before passing to _insert_task_run_states. Co-Authored-By: alex.s@prefect.io <ajstreed1@gmail.com>
devin/1771284144-fix-task-run-recorder-upsert-constraint
33 minutes ago
Fix scheduler to check per-schedule run counts for multi-schedule deployments The scheduler's deployment selection query previously used aggregate count/max_time across ALL schedules in the HAVING clause. This meant that when a deployment had multiple schedules with different frequencies, the high-frequency schedule could be starved of runs while the low-frequency schedules kept the aggregate above the threshold. Changed _get_select_deployments_to_schedule_query to use per-schedule subqueries that check each active schedule's run count and max scheduled time independently using idempotency_key prefix matching. A deployment is now selected for re-scheduling if ANY of its active schedules has fewer than min_runs future SCHEDULED runs or insufficient time coverage. Added regression tests verifying: - Query selects deployment when one schedule's runs are exhausted - Scheduler generates new runs for starved schedules Co-Authored-By: Nate Nowack <nate@prefect.io>
devin/1771292172-fix-multi-schedule-scheduler
45 minutes ago
Handle orphan Redis pending entries in consumer (#20696) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
main
51 minutes ago
Reject negative DateTimeDelta intervals in validation Use in_months_days_secs_nanos() to check all components are non-negative, preventing infinite loops in schedule generation from negative intervals like DateTimeDelta(hours=-1). Co-Authored-By: Nate Nowack <nate@prefect.io>
devin/1771257112-datetimedelta-interval-schedule
1 hour ago
Fix uq_task_run constraint violation with multiple background workers Use composite key (flow_run_id, task_key, dynamic_key) for ON CONFLICT instead of primary key (id) in task_run_recorder upsert paths. When multiple background workers process the same task run event via Redis consumer groups, each generates a different UUID for the same logical task run. The previous ON CONFLICT (id) didn't catch these natural key collisions, causing IntegrityError on the unique constraint. Changes: - record_task_run_event: Use composite key conflict for tasks with flow_run_id, fall back to id-based for autonomous tasks (NULL flow_run_id) - record_bulk_task_run_events: Add natural key dedup within batch, split batches by flow_run_id presence, resolve actual persisted ids after upsert for TaskRunState FK linkage - Add tests for natural key collision with different ids Co-Authored-By: alex.s@prefect.io <ajstreed1@gmail.com>
devin/1771284144-fix-task-run-recorder-upsert-constraint
3 hours ago
Add deployment detail page E2E tests (#20694) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: alex.s@prefect.io <ajstreed1@gmail.com>
main
5 hours ago
Active Branches
Fix `uq_task_run__flow_run_id_task_key_dynamic_key` constraint violation with multiple background workers
last run
14 minutes ago
#20697
CodSpeed Performance Gauge
0%
Fix scheduler to check per-schedule run counts for multi-schedule deployments
last run
45 minutes ago
#20699
CodSpeed Performance Gauge
0%
Support `DateTimeDelta` as interval option in `IntervalSchedule`
last run
1 hour ago
#20692
CodSpeed Performance Gauge
0%
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs