Artifact d84e1d74d54ad18a645d3d333b227cd4d6ba0344b7e42905d20a871b83151296:
- File
db/receipt_test.go
-
2026-10-19 14:52:58
— part of check-in
[0269bd9461]
on branch feat/submanifest-reader
— fix(db): forget a receipt's row when its transaction rolls back
Receipt.ID took (rcvid, mtime) to identify its own row and checked it with a SELECT on every use. After a rollback the rcvid can be reused by another receipt's insert, and under a frozen clock the mtime matches too, so the receipt attached to the wrong row.
Fossil holds g.rcvid for its process and never re-reads the row (content_rcvid_init); a rollback ends the process with it. A Receipt outlives transactions, so the transaction or savepoint that makes its row now records that, forgets the id if it rolls back, and hands it to the enclosing level when released. A kept id costs no query, which takes one SELECT per stored blob off the clone path.
Also checks that a tree check-in's sub-manifests share the commit's receipt. (user: [email protected], size: 8739) [annotate] [blame] [check-ins using]
- 2026-10-19 18:27:41 — part of check-in [41ff5d315a] on branch feat/submanifest-reader — Merge branch 'fix/receipt-followups' into feat/submanifest-reader (user: [email protected], size: 8739) [annotate] [blame] [check-ins using]
-
2026-10-21 21:20:46
— part of check-in
[7244496a09]
on branch main
— Merge pull request #437 from danmestas/feat/submanifest-reader
feat: sub-manifest trees and sparse cones (draft-fossil-submanifests-00, draft-fossil-sparse-cone-00) (user: [email protected], size: 8739) [annotate] [blame] [check-ins using]
-
2026-10-19 14:52:58
— part of check-in
[0269bd9461]
on branch feat/submanifest-reader
— fix(db): forget a receipt's row when its transaction rolls back