Repository navigation
Promotion 2026-10-20 anvilprod (#8420) - #8429
Merged
Merged
Conversation
The `deploy_site_browser` provisioner extracts the Data Browser tarball with `tar -xvjf`, which execs `bzip2`. The binary used to be present as a transitive dependency of `build-essential`, and left the image when that package started being purged after use. Nothing referenced it by name, so the loss was silent. It surfaced only now because the provisioner execs `bzip2` solely when there is a new tarball to extract, which is what a reindex of `anvildev` produced. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The indexer SA lost access to 22 of the 25 sources in the lm10 catalog, which fails the deploy step during the outsourcing of sources. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The `stitched` attribute of a canned HCA bundle is a set of the UUIDs of the entities that were stitched into that bundle. The canned TDR HCA bundle 4426adc5 also listed, for each stitched file, the UUID of that file's manifest entry. The plugin only ever adds an entity's own UUID, so the canner cannot have produced those six surplus entries. They were inert, because `Bundle.not_stitched` matches the set against each entity's `document_id`, which a manifest entry UUID never equals. The surplus went unnoticed because `_test_fetch_bundle` compared every other attribute of a canned bundle against that of the emulated one, but not `stitched`. It now does. The canned DSS bundles carry the same surplus, tracked in #8423. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The comment stated that the manifest and the metadata of a bundle are both sorted by entity UUID. The assertions below it compare dictionaries, which are equal regardless of the order of their entries, so nothing verified that claim. The claim was inaccurate, too. The entries are grouped by entity type and only sorted by UUID within such a group. The order of the groups is that of a set's iteration. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A plugin groups those entries by entity type, in the iteration order of a set, which varies with Python's hash seed. Canning one bundle twice could therefore yield two files that differ only in the order of their entries. The canner now sorts both by entity reference. The entries of the canned TDR HCA bundles are reordered accordingly. They are otherwise unchanged, and so are the other attributes of those bundles. Only the canned file is normalized. The order of the entries of a bundle in memory still varies between processes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The canned bundles of `test_subgraph_stitching` formed a chain, so the plugin retrieved them one at a time, in the order the chain dictated. The order of the merged links only varies when one batch holds more than one bundle, a shape that fixture could not produce. The root bundle now consumes a second file, produced by a new bundle whose own input is a cell suspension rather than a file. That bundle is therefore self-contained, and the traversal retrieves it together with the first upstream bundle, in one batch. A batch is a set, whose iteration order varies between processes, so this test now fails in roughly half of all runs, until the commit that merges the links in a deterministic order. The new bundle, its process and the file it produces are synthetic. All other entities they reference already exist in the canned tables. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The stitched bundles of one batch are the elements of a set, so the order in which the plugin emits them, and with it the order of the merged links, varies between processes. The preceding commit made the fixture produce such a batch, but a single run of the test still covers only whichever order that process happens to produce. The new test merges the links of the stitched bundles in every permutation and expects the result of the canned bundle each time. It fails until the next commit, which merges them in a deterministic order. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The TDR HCA plugin merged the links in the order in which it retrieved the stitched bundles. That is the iteration order of a set and differs between indexer invocations, so every partition of a stitched bundle could produce a links replica with a different content hash. In prod, one bundle has 101 replicas that differ only in the order of their links. The links of the root bundle now come first, followed by those of the other bundles in the order of their UUID. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A test used to drop the tables it had created, so that the next test of the class could create them again in the same emulator. Dropping them grew more expensive the longer that emulator had been in use, from 4.7s in the first test of a class to 11.6s in the fifth, and dominated the run time of both affected test classes. A test now gets an emulator of its own and discards it afterwards. Launching one costs 0.3s and makes dropping the tables unnecessary. Running test_tdr and test_anvil together takes 59s instead of 142s, for the same 29 tests. Replacing the nineteen table deletions with a single deletion of the dataset was tried first. That deletion degrades just like the ones it replaces, so it saved only 12%. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
8 tasks done
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## anvilprod #8429 +/- ##
==========================================
Coverage 84.99% 85.00%
==========================================
Files 170 170
Lines 26068 26085 +17
==========================================
+ Hits 22156 22173 +17
Misses 3912 3912 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
hannes-ucsc
approved these changes
Oct 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.
Linked issue: #8420
Notes
Perform a manual deindex of the following snapshots in
anvil15:GTEx_V7_hg19_20221128_ANV5_202402291034GTEx_V8_hg38_20240116_ANV5_202409251632GTEx_V9_hg38_20221128_ANV5_202402070108GTEx_public_data_20240117_ANV5_202510101251GTEx_v10_hg38_20241105_ANV5_202511210107GTEx_v11_hg38_20260126_ANV5_202601261749Perform a source specific reindex of the following snapshots in
anvil15:GTEx_V7_hg19_20260821_ANV6_202608241432GTEx_V8_hg38_20240116_ANV6_202608211533GTEx_V9_hg38_20260821_ANV6_202608251459GTEx_public_data_20260821_ANV6_202608211401GTEx_v10_hg38_20260821_ANV6_202608241349GTEx_v11_hg38_20260126_ANV6_202608211606Mirror
anvil15in anvilprodChecklist
Author
A01PR is assigned to the authorA02Status of PR is In progressA03Target branch isanvilprodA04Name of PR branch matchespromotions/yyyy-mm-dd-anvilprodA05PR is linked to the promotion issue it resolvesA06Status of linked issue is In progressA07PR description links to linked issueA08Title of linked issue matchesPromotion yyyy-mm-ddA09PR title starts with title of linked issue followed byanvilprodA10PR title references the linked issueA11Propagated theupgrade,API,deploy:shared,deploy:gitlab,deploy:runner,backup:gitlab,reindex:partial,reindex:anvilprod,mirror:partialandmirror:anvilprodlabels and associated notes from the PRs included in this promotion or none of the promoted PRs include any of these labelsAuthor (reindex)
C01This PR is labeledreindex:anvilprodor the changes introduced by it will not require reindexing ofanvilprodC02This PR is labeledreindex:partialand its description documents the specific reindexing procedure foranvilprodor requires a full reindex or is not labeledreindex:anvilprodAuthor (mirror)
D01This PR is labeledmirror:anvilprodor the changes introduced by it will not require mirroring ofanvilprodD02This PR is labeledmirror:partialand its description documents the specific mirroring procedure foranvilprodor requires a full mirroring or is not labeledmirror:anvilprodAuthor (upgrading deployments)
F01This PR is labeledupgradeor does not require upgrading deploymentsF02This PR is labeleddeploy:sharedor does not modifydocker_images.json, and does not require deploying thesharedcomponent for any other reasonF03This PR is labeleddeploy:gitlabor does not require deploying thegitlabcomponentF04This PR is labeleddeploy:runneror does not require deploying therunnerimageAuthor (before every review)
H01PR branch is up to date (if not, mergeanvilprodinto PR branch to integrate upstream changes)H02PR is not a draftH03PR is awaiting requested review from system administratorH04Status of PR is Review requestedH05PR is assigned to only the system administrator and the authorSystem administrator (after approval)
K01Actually approved the PRK02Decided if PR can be labeledno sandboxK03N reviewslabel is accurateK04Status of PR is ApprovedK05PR is assigned to only the operator and the authorOperator
L01Pushed PR branch to GitHubOperator (deploy
.sharedand.gitlabcomponents)M01Ran_select anvilprod.shared && CI_COMMIT_REF_NAME=anvilprod make -C terraform/shared apply_keep_unusedor this PR is not labeleddeploy:sharedM02Ran_select anvilprod.gitlab && python scripts/create_gitlab_snapshot.py --no-restart(see operator manual for details) or this PR is not labeledbackup:gitlabM03Ran_select anvilprod.gitlab && CI_COMMIT_REF_NAME=anvilprod make -C terraform/gitlab apply(an error from _login_docker_gitlab is benign if the instance was stopped for backup) or this PR is not labeleddeploy:gitlabM04Checked the items in the next section or this PR is labeleddeploy:gitlabM05PR is assigned to only the system administrator and the author or this PR is not labeleddeploy:gitlabSystem administrator (post-deploy of
.gitlabcomponent)N01Background migrations foranvilprod.gitlabare complete or this PR is not labeleddeploy:gitlabN02PR is assigned to only the operator and the authorOperator (deploy runner image)
P01Ran_select anvilprod.gitlab && make -C terraform/gitlab/runneror this PR is not labeleddeploy:runnerOperator (sandbox build)
Q01Addedsandboxlabel or PR is labeledno sandboxQ02Pushed PR branch to GitLabanvilprodor PR is labeledno sandboxQ03Build passes inhammerboxdeployment or PR is labeledno sandboxQ04Reviewed build logs for anomalies inhammerboxdeployment or PR is labeledno sandboxQ05Applied upgrade instructions from UPGRADING.rst tohammerboxor this PR is not labeledupgrade, or upgrade instructions do not apply tohammerboxQ06Inhammerbox, deleted the catalogs specified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothQ07Inhammerbox, deindexed the sources sepcified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothQ08Inhammerbox, indexed the sources specified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothQ09Inhammerbox, indexed the catalogs specified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothQ10Started full reindex inhammerboxor this PR is not labeledreindex:anvilprodor it is labeled reindex:partialQ11Checked for failures inhammerboxor this PR is not labeledreindex:anvilprodQ12Started mirroring inhammerboxor this PR is not labeledmirror:anvilprodQ13Checked for failures inhammerboxor this PR is not labeledmirror:anvilprodOperator (merge the branch)
R01All status checks passed and the PR is mergeableR02The title of the merge commit starts with the title of this PRR03Added PR # reference to merge commit titleR04Collected commit title tags in merge commit title but excluded anyptagsR05Pushed merge commit to GitHubR06Status of PR is Merged stableOperator (main build)
S01Pushed merge commit to GitLabanvilprodS02Build passes on GitLabanvilprodS03Reviewed build logs for anomalies on GitLabanvilprodS04Applied upgrade instructions from UPGRADING.rst toanvilprodor this PR is not labeledupgrade, or upgrade instructions do not apply toanvilprodS05Ran_select anvilprod.shared && make -C terraform/shared applyor this PR is not labeleddeploy:sharedS06Deleted PR branch from GitHubS07PR is assigned to only the operatorS08Deleted PR branch from GitLabanvilprodS09Status of linked issue is StableS10Status of promoted1 PRs is Merged stableS11Status of promoted1 issues is Stable1 Promoted issues and PRs are referenced in the titles of the commits
that the promotion branch introduces to the stable branch. Prior to the
promotion, the status of promoted issues (PRs) is Lower (Merged lower).
Promoted PRs in status Done do not need to be moved.
Operator (reindex)
T01Inanvilprod, deleted the catalogs specified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothT02Inanvilprod, deindexed the sources sepcified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothT03Inanvilprod, indexed the sources specified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothT04Inanvilprod, indexed the catalogs specified in the notes or this PR is missing either thereindex:partialor thereindex:anvilprodlabel, or bothT05Started full reindex inanvilprodor this PR is not labeledreindex:anvilprodor it is labeled reindex:partialT06Checked for, triaged and possibly requeued messages in both fail queues inanvilprodor this PR is not labeledreindex:anvilprodor it is labeled reindex:partialT07Emptied fail queues inanvilprodor this PR is not labeledreindex:anvilprodor it is labeled reindex:partialT08Restarted the Data Browser pipeline for the ucsc/anvil/anvilprod branch on GitLab inanvilprod, and it succeeded or this PR is not labeledreindex:anvilprodT09Restarteddeploy_browserjob in the GitLab pipeline for this PR inanvilprod, and it succeeded or this PR is not labeledreindex:anvilprodOperator (mirroring)
U01Started mirroring inanvilprodor this PR is not labelledmirror:anvilprodU02Checked for, triaged and possibly requeued messages in mirror fail queue inanvilprodor this PR is not labelledmirror:anvilprodU03Emptied mirror fail queue inanvilprodor this PR is not labelledmirror:anvilprodOperator
V01PR is assigned to only the system administratorSystem administrator
W01Removed unused image tags from pycharm image on DockerHub or this promotion does not alter references to that imageW02Removed unused image tags from bigquery_emulator image on DockerHub or this promotion does not alter references to that imageW03PR is assigned to no oneShorthand for review comments
Lline is too longWline wrapping is wrongQbad quotesFother formatting problem