Artifact 1055d1d381d9491aea89abd8ee794854083c90e935ea61bdbcc6eb4981abaa93:
- File
db/receipt.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: 5198) [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: 5198) [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: 5198) [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