Artifact cb80f2e5d8818752c4c3e5268f7550cb60792abd6eb622ea7275c58f77823740:
- File
internal/sync/sparse_walk.go
-
2026-10-23 13:57:58
— part of check-in
[9a2938b626]
on branch feat/horizon-cones
— perf(serve): classify a cone walk's rows without expanding every file
A cone-aware clone classifies each row it walks, and each served delta's base, by parsing the row's bytes. The handler has no content cache in production, so every row's whole delta chain was expanded and hashed again; on fossil-scm.org's repository that was the cone clone's first round, unfinished after 20 minutes.
The walk now reads, once per request, the rows the crosslink tables prove to be file content (named by mlink, claimed by no artifact table; a store that has seen a sub-manifest answers nothing) and classifies only the rest, through its own unchecked cache: classifying serves nothing, and the bytes a row is sent with are still checked apart.
A file version's base is the newer version, which a walk in rid order has not reached yet, so every version went out whole: a 9 MB text per version of sqlite3.c. A content base the walk has not reached is now forwardable when the store's classification of the cone keeps it (SC-6.2-2 bars only a base outside the keep set). (user: [email protected], size: 14565) [annotate] [blame] [check-ins using]
- 2026-10-23 15:19:13 — part of check-in [ed53ee9c59] on branch feat/horizon-cones — Merge branch 'wip/clone-perf' into feat/horizon-cones (user: [email protected], size: 14565) [annotate] [blame] [check-ins using]
-
2026-10-23 17:16:09
— part of check-in
[ac0bf85d72]
on branch main
— Merge pull request #461 from danmestas/feat/horizon-cones
feat: horizon cones (draft-fossil-horizon-00) (user: [email protected], size: 14565) [annotate] [blame] [check-ins using]
-
2026-10-23 13:57:58
— part of check-in
[9a2938b626]
on branch feat/horizon-cones
— perf(serve): classify a cone walk's rows without expanding every file