Skip to content

dispatch snapshot omits valid SHA-only source commit after dry-run succeeds #82

Closed

Description

@ligon

dispatch submit --ref <commit-SHA> validates a locally present commit and its dry run succeeds, but actual preparation can fail before sbatch when that commit is not reachable from an advertised source ref.

Observed with dispatcher 641d8fdbab6e67a29b214d16399ffc5af6e29b0c (the merged-#81 campaign source), selecting LSMS commit 96d9b3970341bfe9f53a0848fbdafe90422e3d74. The commit was fetched with git fetch --no-write-fetch-head <remote> <SHA>; git cat-file -t <SHA> returns commit. Dry-run exited 0. Actual submit exited 2:

git source inspection failed: fatal: Not a valid object name 96d9b3970341bfe9f53a0848fbdafe90422e3d74^{commit}

Source explanation: sucoder/dispatch.py first resolves the source commit, then at lines 268–269 creates results.git with git clone --bare --no-local --no-hardlinks <source> <destination> and checks the selected SHA there. Transport cloning copies reachable refs, so the selected unreferenced object is omitted. The error describes source inspection although the source object remains valid; the failure is in snapshot completeness. Dry-run returns before this step.

Expected: make the selected resolved commit reachable inside the private snapshot (for example explicitly fetch that exact commit from the source), without needing to change source refs. Alternatively reject this source shape explicitly at validation, with consistent dry-run behavior and actionable wording. Regression coverage should include a valid selected commit available only by SHA, and verify the snapshot and selected branch contain it.

Workaround: anchor the selected commit to a task-specific source ref before submission. We are using that workaround; no product-code change proposed here.

This failure occurred before sbatch, under a request for co_carleton / savio4_htc / carleton_htc4_normal, 1 CPU / 8 GiB. It is not pre-emption and is distinct from #79's worker /proc failure. No job was created by the refused attempt; no automatic blind retry was performed. Existing failed submission evidence is preserved.

Backlog reconciliation — 2026-10-30

PR 83 merged into main as 5aa31a7. After transport cloning, ordinary dispatch now fetches the already-resolved exact SHA from the explicit local source into the private snapshot before checking and anchoring the selected branch. Loose and packed SHA-only regressions verify the selected commit/tree, connectivity, and unchanged source bytes; error/timeout cases prove refusal before scheduler submission. The PR records all 387 dispatch tests passing. This covers the reported pre-scheduler failure without requiring a task-specific source ref or changing source refs/config/index.

Activity

  1. ligon commented on Oct 30, 2026

    @ligon
    OwnerAuthor

    Workaround verified: anchoring the same selected commit to a task-specific source ref made dry-run and submission succeed. Dispatch 99162779e3dd4730ac6b11674b6a5aed, job 40647990, is running on n0038.savio4 at carleton_htc4_normal (1 CPU / 8 GiB). No source code changed between the refused SHA-only attempt and this submission. This further isolates the original failure to snapshot reachability, before scheduling, rather than pre-emption.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions