Repository navigation
fix(migrations): merge purge audit and username index heads - #44288
Conversation
Code Review Agent Run #424c60Actionable Suggestions - 0Review Details
Bito Usage GuideCommands Type the following command in the pull request comment and save the comment.
Refer to the documentation for additional commands. Configuration This repository uses Documentation & Help |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #44288 +/- ##
==========================================
+ Coverage 75.91% 80.24% +4.32%
==========================================
Files 2926 2926
Lines 173023 173023
Branches 40139 40139
==========================================
+ Hits 131351 138835 +7484
+ Misses 38993 31596 -7397
+ Partials 2679 2592 -87
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Baseline landing coordination: #44317 proposes the same two-parent no-op merge and has a maintainer approval. #44284 is also blocked by this graph; I am monitoring for the selected repair to land, then will rebase/rerun #44284. Please coordinate #44288, #44317, and #44283 so only one parallel merge revision lands (or reparent later revisions). No merge or approval is being performed by this session. |
|
CI ownership follow-up from #44287: I inspected all 15 failed jobs on its exact head da5e0f6. Twelve execution jobs fail at the multiple-head migration startup; three required aggregate jobs propagate those failures. This repair PR's live applicable checks are successful and it still requires human review. Please coordinate maintainer review/landing with #44283's migration overlap. I will not merge either PR. Once this repair lands, I will rebase #44287 onto repaired master, validate and safely push, then monitor every applicable check to terminal success. |
Live CI and review audit — 2026-09-15 18:11 UTCExact head: 68 SUCCESS, 13 SKIPPED, 3 NEUTRAL; no failed, cancelled, action-required, or pending check conclusions. All 13 required checks are terminal SUCCESS. Inspected all review threads (zero, with pagination exhausted), reviews (zero), and both issue comments. Bito reports zero actionable suggestions. No review feedback needs resolution. Checked skip conditions: six frontend child jobs are excluded for this migration-only diff; Dependabot approval/requirements sync, first-time welcome, two hold-label jobs, Showtime, and master-push-only docker-compose are inapplicable. None is required. Three Netlify informational checks report NEUTRAL/“Deploy canceled”; the deploy status is SUCCESS, and docs/netlify.toml intentionally skips builds without docs changes. These are not being relabeled as successful checks. Fetched master at Remaining human gates: maintainer approval (REVIEW_REQUIRED, including the migration approval process) and landing-order coordination with #44283. That PR remains open at Full check rollup (84 entries, including repeated workflow executions)
|
|
Maintainer review / landing coordination: @eschutho (requested reviewer and #44283 author), @mikebridge and @richardfogaca (#44317 author/reviewer), could you confirm which baseline repair should land? #44288 at #44317 is another no-op merge of these exact parents, with revision
Landing parallel merge revisions unchanged recreates multiple heads. No consent, approval of the latest #44317 SHA, or landing decision is assumed. I will notify the #44285 owner only after verifying the selected repair is actually on master; they will then rebase and rerun all applicable CI. No merge or draft conversion will be performed by this session. |
`master` currently resolves to two Alembic heads -- c7f53d184ea2 (from apache#43490) and 88a01c781622 (from apache#43939) -- so every job that runs `flask db upgrade head` fails on this PR's merge commit with "Multiple head revisions are present for given argument 'head'": cypress-matrix (chrome), playwright-tests (chromium, both /app/prefix variants), playwright-tests-experimental, docker-build (dev) and the matching *-required gates. This is an upstream breakage on master, not something the frontend change in this PR can cause or fix; apache#44288 carries the same remediation. Add the documented no-op merge revision (see https://superset.apache.org/docs/contributing/development#merging-db-migrations) joining both heads so the merge commit resolves to a single head again. The file is byte-identical to the one in apache#44288 (same revision id e2f3a1b9c640, same filename, same content) so that whichever PR lands first the other still merges cleanly, instead of producing a third head or a "revision present more than once" error. No schema or data changes.
`master` currently resolves to two Alembic heads -- c7f53d184ea2 (from apache#43490) and 88a01c781622 (from apache#43939) -- so every job that runs `flask db upgrade head` fails on this PR's merge commit with "Multiple head revisions are present for given argument 'head'": cypress-matrix (chrome), playwright-tests (chromium, both /app/prefix variants), playwright-tests-experimental, docker-build (dev) and the matching *-required gates. This is an upstream breakage on master, not something the frontend change in this PR can cause or fix; apache#44288 carries the same remediation. Add the documented no-op merge revision (see https://superset.apache.org/docs/contributing/development#merging-db-migrations) joining both heads so the merge commit resolves to a single head again. The file is byte-identical to the one in apache#44288 (same revision id e2f3a1b9c640, same filename, same content) so that whichever PR lands first the other still merges cleanly, instead of producing a third head or a "revision present more than once" error. No schema or data changes.
|
let's do this one |
|
Thanks @mikebridge — recorded your selection of this repair and verified #44317 is closed without merging. @eschutho, could you complete the requested maintainer review of Owners of #44284–#44287 remain blocked on actual repaired master. In addition to the CI audit, #44285 reports 135 focused local tests passing and all applicable changed-file pre-commit hooks passing: #44285 (comment) . I will notify all four owners after verifying the maintainer-landed commit is on master with exactly one Alembic head, so they can rebase and rerun every applicable CI check. No merge or draft conversion will be performed by this session. |
|
Flagging a collision before this lands, because it is cheap to fix now and an emergency afterwards. There are two open PRs merging the same two alembic heads:
Same two parents, order swapped. Each consumes both heads and becomes a new childless head, so whichever lands second re-forks master — the very thing both PRs are fixing. Simulated against The fix is one line in whichever merges second: point its Also worth knowing for whoever reviews: the I have no write access here beyond my own PRs, so this needs a committer. @eschutho — you own #44283, so you may be best placed to decide the ordering. Happy to open the one-line re-point against whichever ends up second. (For the record: I opened a third merge migration myself before spotting this one, and closed it. Flagging so we do not all repair it in parallel.) |
|
Coordination note found while auditing #44287's CI. This PR ( down_revision = ("88a01c781622", "c7f53d184ea2")Both merge the same two heads. If both land as currently authored, master goes back to two heads ( Whichever of the two merges second should be rebased so its Current state confirmed by recomputing the graph from |
SUMMARY
Restore a single Alembic head with one no-op merge revision. No existing migration, driver requirement, schema, or application data is changed by the new revision.
Reproduced on exact master
ae240a8e6f0332acb709943d0884eae73927c9de: bothScriptDirectory.get_current_head()andflask_migrate.upgrade()fail because the graph has two heads:c7f53d184ea2: purge-audit pruning coordination, followinga6c21e5b4d93(feat(deletion-retention): scheduled pruning policy for the purge audit log #43490).88a01c781622: case-insensitive username index (fix(migrations): add functional index on ab_user(lower(username)) for case-insensitive login #43939).Both paths descend from
7e2c9a4f1b83. New revisione2f3a1b9c640joins them without rewriting ancestry that deployments may already have applied. This follows the documentedsuperset db mergealternative and existing no-op merge migrations.This addresses the shared migration-startup blocker observed on #44285, #44286, and #44287, without changing those driver PRs. The general Python-Unit jobs on all three driver PRs passed; do not conflate it with the failing migration-dependent Presto/Hive, integration, and startup jobs.
Landing coordination: #44283 already joins the same two parents inside a ClickHouse data migration. Coordination requested to keep this baseline repair independent of that data rewrite. If this PR lands first, #44283 must rebase/reparent its migration onto
e2f3a1b9c640; landing both unchanged would recreate two heads. If #44283 lands first, this PR must be reassessed/dropped. No agreement or maintainer approval is implied.BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
Not applicable. Before: two heads and ambiguous
upgrade head. After: one head,e2f3a1b9c640.TESTING INSTRUCTIONS
e2f3a1b9c640. Hosted enforce-single-migration-head passed.pytest tests/unit_tests/migrations -q: 147 passed before and after.tests/common tests/unit_testsbaseline at exact master: 15,360 passed, 6 failed, 6 skipped, 2 xfailed. Failures concern subject SQL quoting, theme commit count, MCP health infrastructure, missing optional profiler, and dashboard validation—not Alembic. Post-change full suite: 15,361 passed, 5 failed, 6 skipped, 2 xfailed. All five remaining failures are also present in the baseline; the subject SQL-quoting failure did not recur, which is not attributed to this no-op migration. No new local failures and no claim of a clean local full suite.PYTHONPATHcaused unrelated mypy import errors; removing that overlay restored the standard hook environment. No hook or code exclusions changed.d6f00dcffec9beb74bc9480b40f38515c5527a5a: no correctness findings; independently repeated real graph and SQLite transition validation. PostgreSQL/MySQL execution is left to CI/maintainer validation.Manual verification:
superset db heads: expect onlye2f3a1b9c640.superset db upgradefrom either old head, both old heads, their common ancestor, or an empty metadata database.superset db downgrade c7f53d184ea2: Alembic removes only the merge revision and restores both parent version rows, preserving schema/data. Use the explicit revision, not ambiguous relative-1.superset db upgradeagain.ADDITIONAL INFORMATION
The merge itself only updates Alembic version bookkeeping: negligible runtime, no application table changes or additional downtime. Previously unapplied parent migrations retain their own runtime/locking characteristics. SIP-59 maintainer approvals and review period still apply; independent automated review is not a substitute.