Skip to content

Give each local byte-store write a unique temp path - #383

Merged
ReganBell merged 1 commit into
mainfrom
upstream-1931
Aug 13, 2026
Merged

Give each local byte-store write a unique temp path#383
ReganBell merged 1 commit into
mainfrom
upstream-1931

Conversation

@ReganBell

@ReganBell ReganBell commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

In the local durable byte store, two concurrent writes of identical bytes shared the same ..part temporary path: both passed the initial existence check, the first rename won, and the second failed with ENOENT. Each write now uses a random per-write temp path; identical content still converges on the same content-addressed final path via atomic rename, so tidti l l d ll d dth tilfil i l d h th fil concurrent identical uploads all succeed, and the partial file is cleaned up when the rename fails. A repo-wide check confirmed this was the only affected temp-path site — the blob-transfer path already mints a unique id per put. Includes a deterministic concurrency regression test that fails on the unfixed code.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

In the local durable byte store, two concurrent writes of identical bytes shared the same <sha256>.<pid>.part temporary path: both passed the initial existence check, the first rename won, and the second failed with ENOENT. Each write now uses a random per-write temp path; identical content still converges on the same content-addressed final path via atomic rename, so  tidti l l d ll d dth tilfil i l d h th fil concurrent identical uploads all succeed, and the partial file is cleaned up when the rename fails. A repo-wide check confirmed this was the only affected temp-path site — the blob-transfer path already mints a unique id per put. Includes a deterministic concurrency regression test that fails on the unfixed code.

Co-authored-by: Hawthorn <217181565+lamenting-hawthorn@users.noreply.github.com>
@ReganBell
ReganBell merged commit c0888bd into main Aug 13, 2026
20 checks passed
@ReganBell
ReganBell deleted the upstream-1931 branch August 13, 2026 19:21
ReganBell added a commit that referenced this pull request Aug 13, 2026
In the local durable byte store, two concurrent writes of identical bytes shared the same <sha256>.<pid>.part temporary path: both passed the initial existence check, the first rename won, and the second failed with ENOENT. Each write now uses a random per-write temp path; identical content still converges on the same content-addressed final path via atomic rename, so  tidti l l d ll d dth tilfil i l d h th fil concurrent identical uploads all succeed, and the partial file is cleaned up when the rename fails. A repo-wide check confirmed this was the only affected temp-path site — the blob-transfer path already mints a unique id per put. Includes a deterministic concurrency regression test that fails on the unfixed code.

<!-- codesmith:footer -->
---
<a href="https://app.blacksmith.sh/yc-software/codesmith/qm/pr/383"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img alt="View with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a> <a href="https://backend.blacksmith.sh/track/enable-autofix?expires=1789237813&installation_model_id=19911&pr_number=383&repository=yc-software%2Fqm&return_to=https%3A%2F%2Fgithub.com%2Fyc-software%2Fqm%2Fpull%2F383&signature=b73861f1e99293de318a2d176575091db84a1c01d58e971cda5473bacf0287fe"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img alt="Autofix with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
ReganBell added a commit that referenced this pull request Aug 14, 2026
The recent batch of squash merges lost their Co-authored-by trailers.
This commit restores the credit. Per merged PR:

- #381: @zlx, @leixf-lab
- #382: @lamenting-hawthorn
- #383: @lamenting-hawthorn
- #385: @lamenting-hawthorn
- #386: @lamenting-hawthorn
- #387: @ianTPE
- #402: @lamenting-hawthorn
- #454: @paucommit
- #470: @lamenting-hawthorn
- #476: @lamenting-hawthorn, @Dhevenddra, @Saidheerajgollu, @mariohercules, @foxytanuki
- #481: @Luke20w, @KateZhang98, @AdamSEY, @rsindall
- #482: @lucassz
- #494: @salluexez, @SomSamantray, @gregario, @yoldaolmak, @lamenting-hawthorn
- #512: @wooheum-xin, @Jackallink, @ianTPE, @lmo-selected, @xieqian0816, @hugo2046
- #515: @mariohercules, @Luke20w, @tchudleigh1, @Restry

Co-authored-by: adamsey <adam.lababidi@gmx.com>
Co-authored-by: Dhevenddra <dhevg20020402@gmail.com>
Co-authored-by: foxytanuki <biz@foxytanuki.dev>
Co-authored-by: Greg Jackson <gregj64@gmail.com>
Co-authored-by: hugo <shen.lan123@gmail.com>
Co-authored-by: Ian Chou <33033541+ianTPE@users.noreply.github.com>
Co-authored-by: Jackallink <61698219+Jackallink@users.noreply.github.com>
Co-authored-by: KateZhang98 <kate@tinyfish.io>
Co-authored-by: Hawthorn <rv.help23@gmail.com>
Co-authored-by: leixf-lab <289300866+leixf-lab@users.noreply.github.com>
Co-authored-by: lmo-selected <lmo-selected@users.noreply.github.com>
Co-authored-by: lucassz <4793515+lucassz@users.noreply.github.com>
Co-authored-by: Luke20w <weidnerluke@gmail.com>
Co-authored-by: Mario <643672+mariohercules@users.noreply.github.com>
Co-authored-by: Pau Garcia <193717438+paucommit@users.noreply.github.com>
Co-authored-by: Restry <restry@users.noreply.github.com>
Co-authored-by: rsindall <rsindall@users.noreply.github.com>
Co-authored-by: Sai Dheeraj Gollu <saidheeraj.gollu@sjsu.edu>
Co-authored-by: Mohd Salauddin <sallumalik1111@gmail.com>
Co-authored-by: Som Samantray <92726151+SomSamantray@users.noreply.github.com>
Co-authored-by: Tom <tchudleigh1@gmail.com>
Co-authored-by: Wooheum Xin <xin98@naver.com>
Co-authored-by: xieqian0816 <260077733+xieqian0816@users.noreply.github.com>
Co-authored-by: yoldaolmak <159899613+yoldaolmak@users.noreply.github.com>
Co-authored-by: Newell Zhu <zlx.star@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant