Skip to content
go-libfossil Ambiguous Artifact ID
Login

Ambiguous Artifact ID

The artifact hash prefix 4966 is ambiguous and might mean any of the following:

  1. 49666454514bfad5886a786da32727367275f33ad191c572f652a6d719b9aa8b -

    • File clone_corpus_parity_test.go — part of check-in [2256f5d7ce] at 2026-07-29 19:19:43 on branch trunk — fix(test): reap fossil servers before temp-dir cleanup; raise unit-test timeout (#220)

      Three tests started a real fossil server and killed it with Process.Kill() without waiting for the exit. Kill signals but does not reap, so the server could still be writing its -wal/-shm files while t.TempDir()'s cleanup walked the directory. A file appearing mid-walk fails RemoveAll with "directory not empty", which is how TestCloneFromRealFossilUncompressedReply failed on CI while passing locally -- it needs a loaded machine to lose the race.

      internal/sync/integration_test.go already did this correctly, Kill followed by Wait, with a comment naming the same failure. This applies that established pattern at the three sites that lacked it.

      Separately, the unit-test step ran with -timeout=120s, a per-package budget. CI runs the package binaries concurrently, so under contention internal/manifest and internal/sync exceeded it and panicked with "test timed out" despite finishing in 19s and 34s on an unloaded runner. Raised to 300s, matching the DST step, so the margin does not depend on how busy the runner is. (user: [email protected], size: 15395) [annotate] [blame] [check-ins using]

  2. 4966e5caee85ae0d7299105880cafa820cbed0070d692328576142e25ad9ff9a -

    • File internal/sync/clone.go — part of check-in [aea957939f] at 2026-10-12 22:57:27 on branch main — fix(sync): drop shunned artifacts and never ask for a shunned phantom (#302) (#355)

      * fix(sync): drop shunned artifacts and never ask for a shunned phantom (#302)

      fossil's xfer_accept_file and xfer_accept_compressed_file drop a received artifact whose hash is on the shun list, and its request_phantoms and content_new leave shunned names out of what a client asks for (sections 3.3 and 7.7). The server, the sync client and clone stored a shunned artifact, and the client asked for shunned phantoms.

      storeReceivedFile, which every receive path shares, now drops a shunned artifact; the server checks first so a dropped file is not reported as missing after store. The client's phantom scan and its igot handling skip shunned names, so a delta whose basis is shunned is kept as a delta and the basis is never requested.

      * refactor(sync): split the client's reply handling into per-card helpers

      processResponse had grown to 232 lines: one switch over every reply card followed by the convergence check. It is now a loop over handleReplyCard, which hands each card to a focused helper, and converged, which keeps the termination rules apart from card handling. Behavior is unchanged. (user: [email protected], size: 23734) [annotate] [blame] [check-ins using]