Add reparse button to the Dag import errors modal - #72896
Merged
Merged
Conversation
pierrejeambrun
commented
Sep 10, 2026
pierrejeambrun
force-pushed
the
add-reparse-to-import-errors
branch
4 times, most recently
from
September 16, 2026 15:27
bc1b3ce to
6e0088c
Compare
1 task
pierrejeambrun
force-pushed
the
add-reparse-to-import-errors
branch
2 times, most recently
from
September 17, 2026 11:34
a61c88d to
b805b3c
Compare
Member
Author
|
First two commits are not relevant and coming from #73274 |
pierrejeambrun
marked this pull request as ready for review
September 17, 2026 13:51
pierrejeambrun
requested review from
bbovenzi,
bugraoz93,
choo121600,
dheerajturaga,
ephraimbuddy,
guan404ming,
henry3260,
jason810496,
potiuk,
rawwar,
ryanahamilton,
shubhamraj-git,
vatsrahul1001 and
vincbeck
as code owners
September 17, 2026 13:51
The import errors modal lists files that failed to parse but gave no way to retry them; users had to wait for the next scheduled parse or trigger a reparse elsewhere after fixing the file. Surfacing a reparse action next to each failed file lets them retry from the same place they see the error.
Reparsing a file with no registered Dag now returns 403 instead of 404 when the caller lacks the new REPARSE_ALL permission -- an observable behaviour change that warrants a release note.
pierrejeambrun
force-pushed
the
add-reparse-to-import-errors
branch
from
September 17, 2026 14:29
b805b3c to
59438c3
Compare
bbovenzi
reviewed
Sep 18, 2026
The two-step check on a file with no registered Dag returned 404 for a file Airflow had never heard of and 403 for one with an import error, so an unauthorized caller could tell them apart. Auth runs first, and the existence probe now serves only its own purpose (an authorized caller against a stale file). The dashboard modal also invalidates the import-errors and DAG-stats queries on a successful reparse, so a fixed error disappears from the list and the resolved Dag shows up in the stats without a manual refresh.
Reparse is asynchronous: the endpoint inserts a DagPriorityParsingRequest row and returns, and the dag processor picks it up on its next cycle. Invalidating the modal, dashboard, and Dags-table queries the instant the mutation resolves refetches against a DB the processor has not touched yet, so every refetch returns the same rows and only marks the queries fresh again. The toast is the honest signal that the reparse has been queued.
Reparse enqueues a DagPriorityParsingRequest and returns; the dag processor picks it up on its next cycle. Nothing tells the modal when that happens, so a user watching the list has no way to see the row disappear without closing and reopening the modal. Polling on the same auto-refresh cadence the dashboard cards use closes that gap. Polling only starts once a reparse has been issued in this modal session, so a modal that is opened and never mutated hits the endpoint no more than it did before, and it stops when the modal is closed.
bbovenzi
approved these changes
Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a reparse action next to each file in the Dag import errors modal, so a file that failed to parse can be retried in place, instead of waiting for the next scheduled parse or reparsing the file from elsewhere after fixing it.
A file with an import error has no registered Dag, so the reparse endpoint had no per-Dag key to authorize the request against and returned
404. Reparsing an errored file is now gated on the dedicatedREPARSE_ALLpermission (admin-by-default, scoped to the file's team via its bundle) added in #73274 — a write permission of its own, so being able to view import errors does not grant the reparse action.ImportErrorResponseexposes thefile_tokenthe button needs to call the existing reparse endpoint.closes: #72038
related: #72039 — an earlier, still-open draft for the same issue.
Screenshots
Reparse button in the import errors modal:
Tooltip on hover:
Was generative AI tooling used to co-author this PR?
Generated-by: Claude Code (Opus 4.8) following the guidelines