Artifact e21b1398fa292fe76525b9ae3b433a1abbd4cc04d551d4755843c305efbc3a85:
- File
internal/content/memo_lost_test.go
-
2026-10-29 14:01:29
— part of check-in
[c50ff7c9e2]
on branch main
— fix(content): serve a kept tree only where a fresh read would give it
Review of the tree memo found it could classify differently warm than cold. A kept tree was served whenever the store held its name at its rid, even when the store could no longer expand it (a delta whose source became a phantom or lost its row), where a fresh read skips the tree. Each view now lists, once, the rids its store cannot expand: a recursive walk of the delta table seeded with the phantoms and the delta sources the store holds no row for. Those sources only appear when a row is deleted, which forces a full read, so they are found once per lineage (about 20ms on fossil-scm.org) and the per-view walk costs about 0.3ms. The phantom check folds into it.
Publish dropped the trees a view read whenever the memo had gone past that view's store, though trees do not depend on the store; they are now kept either way. A view over a store read in full after the memo's is no longer taken for a stale one, so a store whose highest rid was deleted stops being read in full on every view.
The names bound that replaced the byte cap counted pieces, not names, so one publish could pass it; it now counts the names each piece adds, on the fresh-index path too, and is passed as a parameter so it is tested.
The tests compare the names a horizon's walk produces, memo against fresh, which classification alone can hide: a tree's lost nodes also stop its files counting as files. They lose trees as phantoms, as deleted nodes, behind phantom and deleted delta sources, and by a shun and rebuild in stock fossil; removing either check fails them. (user: [email protected], size: 9704) [annotate] [blame] [check-ins using]
-
2026-10-29 14:58:28
— part of check-in
[dd58b95c70]
on branch main
— Merge pull request #527 from danmestas/perf/463-memo-trees
perf(content): keep the memo's trees for the life of the memo (HZ-6.2-10) (user: [email protected], size: 9704) [annotate] [blame] [check-ins using]
-
2026-10-29 14:01:29
— part of check-in
[c50ff7c9e2]
on branch main
— fix(content): serve a kept tree only where a fresh read would give it