Skip to content
go-libfossil Check-in [6339d6fb50]
Login

Check-in [6339d6fb50]

Overview
Comment:Merge branch 'wip/rebuild-perf' into feat/horizon-cones

Rebuild of fossil-scm.org's repository in about 50 s instead of 3 to 6 minutes: delta-chain availability answered from the sweep's cache, and each manifest parsed once. Every derived table is identical before and after.

Timelines: family | ancestors | descendants | both | trunk | feat/horizon-cones
Files: files | file ages | folders
SHA3-256: 6339d6fb5045a563d74f4571c66b4081c63cf41e4f94a8a747ca43c63be99abd
User & Date: [email protected] on 2026-10-22 21:17:32.000
Other Links: branch diff | manifest | tags
Context
2026-10-22
21:17
docs(changelog): rebuild in under a minute check-in: 23831a1bce user: [email protected] tags: feat/horizon-cones, trunk
21:17
Merge branch 'wip/rebuild-perf' into feat/horizon-cones

Rebuild of fossil-scm.org's repository in about 50 s instead of 3 to 6 minutes: delta-chain availability answered from the sweep's cache, and each manifest parsed once. Every derived table is identical before and after. check-in: 6339d6fb50 user: [email protected] tags: feat/horizon-cones, trunk

21:17
perf(manifest): stop re-walking delta chains and re-parsing manifests in a rebuild

Rebuilding a clone of the Fossil SCM repository (67,894 artifacts, 21,008 check-ins) took about 3 minutes of which 104 s was parentTreeGap asking content.AvailableByUUID, an uncached delta-chain walk with one SQL statement per node, for every parent of every check-in. It now uses the sweep's availability cache like the rest of the guard.

The same sweep parsed each check-in three times (as a child, as its child's parent, as a delta baseline) and rebuilt its file maps. The sweep's content cache now keeps the parsed deck, file views and baseline rid of its few most recent check-ins (Cache.Derived), dropped with the cached bytes on Invalidate and Clear. Derived hits count as reuse in the cascade stats, so the shared-cache regression guard keeps measuring it.

The rebuilt event, mlink, plink, tagxref, leaf, filename, cherrypick, orphan, unclustered, unsent, forumpost, attachment, phantom, blob and delta tables are row-for-row identical to the previous code's. check-in: 48ff1f5084 user: [email protected] tags: feat/horizon-cones, trunk

21:16
docs(changelog): merges follow renames; Repo.Merge keeps deletions check-in: cb4284230b user: [email protected] tags: feat/horizon-cones, trunk
Changes