Development record
The cold-reading ingest verb's orphan sweep deletes a concurrent invocation's ledger records. sweepOrphanStages and rollbackRun hold no lock, and nothing distinguishes a crashed stage from a live one, so a second ingest starting while the first sits between its ledger write and its commit marker finds the first's stage, sees no run.json, and removes both its records and its stage. The first then writes run.json and exits 0 naming records that no longer exist. capture.IngestReading takes the ledger flock for its own write, but the sweep sits outside it.
issueresolvedminoriss-2608311234537042
The cold-reading ingest verb's orphan sweep deletes a concurrent invocation's ledger records. sweepOrphanStages and rollbackRun hold no lock, and nothing distinguishes a crashed stage from a live one, so a second ingest starting while the first sits between its ledger write and its commit marker finds the first's stage, sees no run.json, and removes both its records and its stage. The first then writes run.json and exits 0 naming records that no longer exist. capture.IngestReading takes the ledger flock for its own write, but the sweep sits outside it.
Grounds
- pursued: the finding is closed by a test that fails without the change; a later review or mutation run finding the same shape again would show this wrong
Frontmatter
| id | iss-2608311234537042 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2608311234537042-the-cold-reading-ingest-verb-s-orphan.md
open on GitHub ↗ · commit history ↗