Development record
A retrospective written during an embark is replaced silently: reflect write takes no lock, and embark's writeEmbark writes each planned create through a rename-over (writeIntoLifeboat, fsutil.WriteFileAtomic), so a retrospective reflect write creates between embark's rejudge and its write is replaced by the lifeboat's copy with no conflict.
issueresolvedminoriss-2609301245517138
A retrospective written during an embark is replaced silently: reflect write takes no lock, and embark's writeEmbark writes each planned create through a rename-over (writeIntoLifeboat, fsutil.WriteFileAtomic), so a retrospective reflect write creates between embark's rejudge and its write is replaced by the lifeboat's copy with no conflict.
Grounds
- pursued: a reflect write arriving while embark holds the intent lock waits for it (TestWriteWaitsForTheIntentStoresLock), and writeEmbark over a pre-existing differing README refuses with the file intact (TestWriteEmbarkRefusesToReplaceAFileThatLandedAtACreateTarget); a retrospective replaced by an embark's copy with a nil error would show it wrong.
Frontmatter
| id | iss-2609301245517138 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609301245517138-a-retrospective-written-during-an-embark.md
open on GitHub ↗ · commit history ↗