Skip to content

(wip) flyte backfill <trigger> for scheduled triggers - #1383

Open
kumare3 wants to merge 1 commit into
mainfrom
backfill-command
Open

(wip) flyte backfill <trigger> for scheduled triggers#1383
kumare3 wants to merge 1 commit into
mainfrom
backfill-command

Conversation

@kumare3

@kumare3 kumare3 commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Expands a cron or fixed-rate trigger's schedule across a window, shows exactly which runs it would create, and on approval launches a driver run that creates them from inside the cluster (so a long backfill does not depend on the client staying connected, and the work is observable and abortable like any run).

De-duplication is the point of the naming. A backfilled slot is created the way the scheduler creates a real fire -- addressed by TriggerName, named by the deterministic slot hash, and marked schedule-sourced -- so a slot that already ran is recognised and skipped, and re-running the same backfill is a no-op. --force salts the name into a separate namespace to re-run those slots.

The run-name hash mirrors the scheduler's runName() exactly: FNV-1 (not FNV-1a) 64-bit over org:project:domain:task:trigger plus unpadded wall-clock fields, rendered as unpadded hex. Expected values in tests/backfill/test_naming.py were generated by running the Go implementation; cron expansion is likewise pinned against robfig/cron v3, the parser the scheduler uses.

Expands a cron or fixed-rate trigger's schedule across a window, shows exactly
which runs it would create, and on approval launches a driver run that creates
them from inside the cluster (so a long backfill does not depend on the client
staying connected, and the work is observable and abortable like any run).

De-duplication is the point of the naming. A backfilled slot is created the way
the scheduler creates a real fire -- addressed by TriggerName, named by the
deterministic slot hash, and marked schedule-sourced -- so a slot that already
ran is recognised and skipped, and re-running the same backfill is a no-op.
`--force` salts the name into a separate namespace to re-run those slots.

The run-name hash mirrors the scheduler's runName() exactly: FNV-1 (not FNV-1a)
64-bit over org:project:domain:task:trigger plus unpadded wall-clock fields,
rendered as unpadded hex. Expected values in tests/backfill/test_naming.py were
generated by running the Go implementation; cron expansion is likewise pinned
against robfig/cron v3, the parser the scheduler uses.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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