Added an experimental dandi image for soak-testing an unreleased fix - #29
Closed
CodyCBakerPhD wants to merge 1 commit into
Closed
Added an experimental dandi image for soak-testing an unreleased fix#29CodyCBakerPhD wants to merge 1 commit into
CodyCBakerPhD wants to merge 1 commit into
Conversation
The nightly ingest re-downloads every dandiset because `dandi download -e refresh` compares the local mtime against the archive's record with a 1e-6 s tolerance, and the runner's incoming root truncates mtimes to whole seconds (measured: 0.5 s round-trip loss). dandi-cli PR 1910 passes an explicit 2 s tolerance instead. Verified against that branch: current dandi re-downloads at 1 s and 2 s granularity, the branch skips, and a genuine change is still caught. To confirm that on the real runner before it merges upstream: dandi.Dockerfile takes a DANDI_SPEC build arg naming the pip requirement for dandi. It defaults to the PyPI release, so the published :latest image is built exactly as before, git included only when the spec names a VCS ref. experimental_dandi_image.yml builds and publishes dandi-cli:experimental-<tag> from that spec. It asserts the fix is in the built bytes and runs dispatch's suite inside the image before pushing. Tags are always prefixed "experimental-" so an image built from unmerged upstream code cannot be mistaken for the supported one. Scheduled Ingest runs data-ingest-runner's workflow from that repo's main, so it takes no per-run overrides. Its TASK_FORCE_REF variable selects the branch of this repo to check out, which is why this branch's DEFAULT_DANDI_IMAGE is the lever. That line is marked do-not-merge and reverts to :latest once a released dandi carries the fix. Co-Authored-By: Claude Code 2.0.77 / Claude Opus 5 <noreply@anthropic.com>
Member
Author
|
it worked! |
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.
Soak-test branch for dandi-cli#1910, the fix for dandi/dandi-cli#1907. Not for merge as-is.
The nightly ingest re-downloads every dandiset because
dandi download -e refreshcompares the local mtime against the archive's record with a 1e-6 s tolerance, and the runner's incoming root truncates mtimes to whole seconds. Measured on the runner:dandi-cli#1910 passes an explicit 2 s tolerance. Verified against that branch: current dandi re-downloads at 1 s and 2 s granularity, the branch skips, and a genuine change is still caught (size delta either direction, or a re-upload 3 s or more later).
What this adds
dandi.Dockerfiletakes aDANDI_SPECbuild arg naming the pip requirement for dandi. It defaults to the PyPI release, so:latestis built exactly as before. git is installed only when the spec names a VCS ref, leaving the default build with no apt work at all.experimental_dandi_image.ymlbuilds and publishesdandi-cli:experimental-<tag>from that spec, on push to aclaude/**branch or on demand with a different spec. Before pushing the image it asserts the fix is present in the built bytes and runs dispatch's suite inside it. Tags always carry theexperimental-prefix so an image built from unmerged upstream code cannot be mistaken for the supported one.How the soak test reaches a scheduled run
Scheduled Ingest runs
data-ingest-runner's workflow from that repo'smain, so it accepts no per-run overrides. What it does read is that repo'sTASK_FORCE_REFvariable, naming the branch of this repo to check out. So this branch'sDEFAULT_DANDI_IMAGEis the lever, and it is marked do-not-merge.To run it: set
TASK_FORCE_REFindata-ingest-runnerto this branch and wait for the nightly, or trigger Manual Ingest there withtask_force_refset to it. Judge the result on theRun dispatchwall time and dandi's per-assetSTATUScolumn, whereskipped/no changeis the fix working anddonewith a full byte count is the bug. Then clearTASK_FORCE_REFand revertDEFAULT_DANDI_IMAGE.Once a released dandi carries the fix, none of this is needed:
:latestpicks it up on the next image build. TheDANDI_SPECarg and the workflow are worth keeping for the next candidate fix; theDEFAULT_DANDI_IMAGEline is not.Prompts
Generated by Claude Code