Development record
Once-only breaks under concurrent session starts: ahoy.TakeUnseenUpdate read the cache/update-shown marker, then wrote it with a create-temp-and-rename, a read-then-write with no claim, so N sessions starting together in one plugin root (an autonomous run does this within a second) each saw no marker and each showed 'abcd updated from X to Y'; a 16-goroutine probe on one seeded cache showed the line 16 times, breaking the ruling CJ1b's once-only.
issueresolvedminoriss-2609300939590291
Once-only breaks under concurrent session starts: ahoy.TakeUnseenUpdate read the cache/update-shown marker, then wrote it with a create-temp-and-rename, a read-then-write with no claim, so N sessions starting together in one plugin root (an autonomous run does this within a second) each saw no marker and each showed 'abcd updated from X to Y'; a 16-goroutine probe on one seeded cache showed the line 16 times, breaking the ruling CJ1b's once-only.
Grounds
- pursued: 16 goroutines calling TakeUnseenUpdate on one seeded cache show the line exactly once (TestTakeUnseenUpdateShowsOnceUnderConcurrentSessions, 16 before the fix); a second show of one release from any interleaving, or a claim created through a link, would show it wrong.
Frontmatter
| id | iss-2609300939590291 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609300939590291-once-only-breaks-under-concurrent.md
open on GitHub ↗ · commit history ↗