Skip to content

flaky api tests: git clone from shared full-data fixture repo loses objects mid-copy under parallel workers #171

Description

@themightychris

Seen twice on 2026-09-09 in CI on the same commit (96b71ef, merge of #157, which touched only apps/web):

  • push run: tests/slug-redirect.test.ts > never intercepts /api/* paths
  • pull_request run: tests/avatar-upload.test.ts > 404s for a missing person and > rejects unsupported MIME types with 422

All with the same error from apps/api/tests/helpers/seed-fixtures.ts cloning the bare fixture repo created by tests/helpers/test-full-repo.ts:

Error: Command failed: git clone /tmp/cfp-full-data-XXXX/data.git /tmp/cfp-seed-wt-YYYY
fatal: failed to copy file to '/tmp/cfp-seed-wt-YYYY/.git/objects/71/fdd3...': No such file or directory

Different test files, different temp dirs, same shape: a local git clone (hardlink/copy of loose objects) races with something mutating the source repo's object store while it runs. Suspects: another worker's transaction on the same shared fixture repo (gitsheets 2.x Rust core landed on develop via #151 and may repack/prune loose objects), or a cleanup rm in a sibling file's afterEach. Locally the suite passes with --maxWorkers=2; CI uses the default worker count.

Options: give each test file its own fixture repo (no shared source), clone with --no-hardlinks/file:// (forces a pack transfer instead of per-object copies), or serialize the clone behind a lock. Re-running the job passes, so this is a flake, not a regression, but it will keep failing release CI at random.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RdRwHvDupRLV8GuJpYKzEr

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions