Skip to content
zit Artifact [e17845e40d]
Login

Artifact [e17845e40d]

Artifact e17845e40d7910a9afa31d2eb1c6cec048351f50552a2d782f771c7f596ab4d0:

Manifest of check-in [e17845e40d] - serve: read the served store through a log-offset index, not a resident copy

Priming a serve snapshot copied every artifact's container out of the log into an in-memory store and held them there for the server's lifetime. The log had already been scanned and every frame CRC-checked to build the rid table, so the copy was a second full read whose only product was resident bytes: on a 254k-artifact repository it was two thirds of the prime time and a few hundred megabytes of RSS, all to re-hold what the log already holds.

The snapshot is now a log-backed store: an index of hash -> log location, and container bytes read from the log on demand as a round emits them, memoised only for the round and released after it. Persisted order is preserved so the clone pager still cursors correctly, the binary-digest to hex-wire-name conversion stays at its one site, and a read fault after the scan surfaces as a server storage error so a clone is never silently truncated. The old whole-store copy is retained only where it is actually needed: the pull client's holdings and the equivalence test's oracle.

Measured, 67499-artifact repository, ReleaseSafe: a clone off the indexed serve is byte-identical to a clone off the copy-based serve (both materialise all 983 files of trunk identically), while serve peak RSS falls from 157 MB to 32 MB. The one remaining O(store) cost, the startup scan itself, is a separate change. by dmestas on 2026-07-25 13:37:43.


C serve:\sread\sthe\sserved\sstore\sthrough\sa\slog-offset\sindex,\snot\sa\sresident\scopy\n\nPriming\sa\sserve\ssnapshot\scopied\severy\sartifact's\scontainer\sout\sof\sthe\slog\sinto\nan\sin-memory\sstore\sand\sheld\sthem\sthere\sfor\sthe\sserver's\slifetime.\sThe\slog\shad\nalready\sbeen\sscanned\sand\severy\sframe\sCRC-checked\sto\sbuild\sthe\srid\stable,\sso\sthe\ncopy\swas\sa\ssecond\sfull\sread\swhose\sonly\sproduct\swas\sresident\sbytes:\son\sa\n254k-artifact\srepository\sit\swas\stwo\sthirds\sof\sthe\sprime\stime\sand\sa\sfew\shundred\nmegabytes\sof\sRSS,\sall\sto\sre-hold\swhat\sthe\slog\salready\sholds.\n\nThe\ssnapshot\sis\snow\sa\slog-backed\sstore:\san\sindex\sof\shash\s->\slog\slocation,\sand\ncontainer\sbytes\sread\sfrom\sthe\slog\son\sdemand\sas\sa\sround\semits\sthem,\smemoised\sonly\nfor\sthe\sround\sand\sreleased\safter\sit.\sPersisted\sorder\sis\spreserved\sso\sthe\sclone\npager\sstill\scursors\scorrectly,\sthe\sbinary-digest\sto\shex-wire-name\sconversion\nstays\sat\sits\sone\ssite,\sand\sa\sread\sfault\safter\sthe\sscan\ssurfaces\sas\sa\sserver\nstorage\serror\sso\sa\sclone\sis\snever\ssilently\struncated.\sThe\sold\swhole-store\scopy\nis\sretained\sonly\swhere\sit\sis\sactually\sneeded:\sthe\spull\sclient's\sholdings\sand\sthe\nequivalence\stest's\soracle.\n\nMeasured,\s67499-artifact\srepository,\sReleaseSafe:\sa\sclone\soff\sthe\sindexed\sserve\nis\sbyte-identical\sto\sa\sclone\soff\sthe\scopy-based\sserve\s(both\smaterialise\sall\s983\nfiles\sof\strunk\sidentically),\swhile\sserve\speak\sRSS\sfalls\sfrom\s157\sMB\sto\s32\sMB.\nThe\sone\sremaining\sO(store)\scost,\sthe\sstartup\sscan\sitself,\sis\sa\sseparate\schange.
D 2026-07-25T13:37:43.121
F .fossil-settings/ignore-glob b96efee96328bf8544239c0767abcaabdb904bbcac2d0f8e21ea84a8e7b5963f
F .github/workflows/ci.yml 7b817b4a7c230e3f351a112a83c0cad98db79add99264a07549cab8d499120f9
F LICENSE 702ae7ff835a2a971dae11c5cae039803bf394b77a6d8ec9f18693e449eaaf26
F README.md d37570185a670aaef9ce5d758de099957ce797c760c59fd100d6bf61d233c96b
F build.zig 11e29810821087667c781c5d6510084a8261628e1d864ac8f7c71fc95af5c884
F build.zig.zon 7d366dc42f38920ad2ac03b599b4ac6dc7f79c39f71eaa8df3d61177280527a4
F docs/RELEASE-NOTES-0.1.0.md 5ed8b4d35ee23b7990261f8af34f5fa3cc629baf63b0059d9f7bb2d2c48dc802
F docs/RELEASE-NOTES-0.1.1.md 59eea8c487dc1e9190c44c371656e430cd5621031a71c502ecbae96802712857
F docs/RELEASE-NOTES-0.1.2.md 7c968ab247ad1194f9163e625a37452ae72bdc23f3e66e8ea26b39f6e0a52914
F docs/rfcs/draft-fossil-artifact-format-00.txt a6d542a5effeb41d0ea1e916058ccdc0a5819787f167ef1ebad7814f5680e7ad
F docs/rfcs/draft-fossil-delta-format-00.txt d8025d6d75322e33887c3334a4b9cc729960028b3c994ed01e5a474e4b388fd2
F docs/rfcs/draft-fossil-repo-state-00.txt b35480166caaf5d2c220086140a1d47034e9b4967689be8f4cd8779bbdbbc3da
F docs/rfcs/draft-fossil-sync-protocol-00.txt aa55791464a54ef4b651df8780ba5c46e95c723c7997d09a5b727fef658f920a
F scripts/mirror-export.sh cc1130129e3c320cb9c1c5a05f505e45ece23d6bb3e0228da8e7ffe97bd5612b x
F scripts/soak.README 3a2f028e4f87a395b2b779ac63260fcb68a7a9c7ffc9fea5b065d5bc065c4719
F scripts/soak.sh e184de2f7396ae88c1266d565092282dc9aff151fab8f971840d867562f7d1be x
F src/annotate.zig 0a6b6728099e63c84681d1e5228ebb45fafb55d65df1720358247fd6e6532c63
F src/artifact.zig c630afd9fbbcfaccd7b823105b4d05db1dc85b6af03080a6d58635ed064672ca
F src/artifact_fuzz.zig c28bf210176eec4ca7232f256187f00d273c3ecafe7ed2271eaca3bd15b748ba
F src/artifact_test.zig da999476660f7e6e1f50ed9da5c30f1c83d6b358e2cfcd265c6932959c85bdd1
F src/bisect.zig 7bfc45d3e0e339017826941463cc4e9118892d2898fbcd319e6e6ca85c4d3301
F src/checkout.zig 31f20dc1fe5285575b7bfca7fedbca1dae07e2cb77c9fde6f0f27e72a7e4f80f
F src/ci_test.zig a75b83a94e7d28d11f9c73c0dfae450000e31ca9a7b7563f8120686112047c84
F src/cli.zig 210e02fc9f73fd86c853a48727b99891af3a46617dd0e900b0b54eb7c5380eea
F src/cmd/checkout.zig b617e30e50addaffe550b17a701516a912b8f591aabb7431a602ea0532f57e15
F src/cmd/history.zig fd3adc3448c7a8486a8610ff7a47f2ca89620e897590155f0bc1b83bfd64b2a1
F src/cmd/sync.zig 2bb24aa3f0cb13a75591bbc7b906d7b013c61990707d6ffca5bfe18c2b460eed
F src/cmd/tracking.zig 46b079b974838f92b9508a647c0a89e3747fec09dab072a0bae2c0d0639c4831
F src/container.zig cef1028531f2763f94248b761c8779a1884e44bb854b8c45617494e3ead40e61
F src/container_test.zig a013652b1ed181161d3ad8fc9d8f052f7c27b61e129662632ceaf8cf189445ec
F src/delta.zig e8f3a6297d47549aea146222732ccf514c39688414f0a74ba396ac91066686f3
F src/delta_fuzz.zig 5e5c715722760d6f45c4eaaf9b5d495bf83c59e5869a0e0dd76bb57b007e3b53
F src/delta_test.zig b18d97e117dce8fbcc05bff6f6954effdb946bab6d36337efbe5ef64d10646a0
F src/dst.zig 37a65f7257a9d49115d6526c340d5295019668740cdab844b3674e3d6c427cd3
F src/e2e.zig 29b44d54e5425c7658980f5a1281b8fe0c9e79970243f272653ade3209591d2d
F src/extras.zig d7b6ec8caa95993ce01c4ed9ddd0cda327db823bdbde4e27dff4966591be25f5
F src/fuzz_tests.zig 82ab1b4a0125e3171217ca0b84ffb6276b364aa16d08120aea0bf6a9f1183f44
F src/logstore.zig a26e7b006f335b0bbb9bb41ac702ea42fab1c5b4ce9b13c7d25a89c84197aed0
F src/logstore_benchmark.zig 1ce3cfb1eec19cdba9345ec432d01aa2e0f56dfb0ecae7c578638a3d60d9cfa8
F src/logstore_fuzz.zig fcdbb70b468fcabff6edbfd8a526832acc5ba12a39cca83b5fdffd5716817e8d
F src/logstore_test.zig a9baaee2cf009c988832d3632f52a1eeabf36afd52c891315f7673ce28442533
F src/main.zig b38583c453caf3c9e9b1f3705df4ddfce819cb471830f1734fa7fe73b576d063
F src/managed.zig 81ccc2d6321fe3dff91f653305ae4e73bea0b3fae7db2ab2f0cf168d9518d601
F src/merge3.zig 7fc52445688751bb8af30462549650660bcdbadabef54d892b6505d628248d0b
F src/merge3_fuzz.zig 83dcd4d9f2f9c208baa15e79ceeea80a0ebf47456a9b045f6d1c1efe3a927582
F src/pack.zig 0ea96cb540b3f43f6ff8ce95a3044ce939879bc6f9bf0eb82b26aab4089009c7
F src/packaging_test.zig b802ada92f1ade1b62e3d1cfc36549c9b8d05be5430bd33d440bc93d7cd3600f
F src/repocache.zig aae232a6b1b86e27c5242c0ee17ce9f2544299d99cf4936d8c2c9000e3166884
F src/repoimage.zig 7d2dc2f3c145e10e2d9ba6997705fd61a0cc0aedde8e171c253163d1279ccdd5
F src/repository.zig bbf2d73a3dc76a23d25811f7d4c3ba5c7a92245808bf7aeac606d87c2e792f1d
F src/repository_test.zig 7ecff1b41d376285f4a9ea879bf53d6e9557efc77e52203ada40df9eabf35290
F src/repostate.zig c6cbf58e7c0603d58445f2b67565e14fc4b8a49a56c25f2bfee195febe475038
F src/repostate_test.zig e5699688b0f43b7480ed5d89f11585c2f61114bbe3ec9dae5061741f37b37e7a
F src/repoview.zig ec2958e1e8fd955c761d240ab80c3b3f62e3473991713c25ed5a603df984e403
F src/rfc_vectors/artifact_a1_1_sha1_manifest.txt 82d8fc78b3fbf85efe80cb05e79db40c910bf0551e55b728c6f9c2ca7a42ddb6
F src/rfc_vectors/artifact_a1_2_sha3_technote.txt 832e850f83aab2e2a754aa97591109f7f05fb41e4126c7e71c88a59d6d17e55d
F src/rfc_vectors/artifact_a3_rcard_manifest.txt 47e412ef211f095e93275fadf527909e581eef42357d8437fc7e299bfc3e62a7
F src/rfc_vectors/sync_a1_round1_reply.txt 638813029b10f81303b88859279afb17095d7c779c993f4267870909acabbeb9
F src/rfc_vectors/sync_a1_round2_file_cards.txt 4fa397741f7521cc4181d5d6b04dc143187f57602384eaa688552115ecda27c2
F src/rfc_vectors/sync_a1_round2_reply.txt af956808190c79b37a384041690c36b78845b471d6c6c01d1cced6e3ee92e6b1
F src/rfc_vectors/sync_a2_reply.txt aa130a127cde210f793c7842960083c765e0ffc7b673374fabc8f0edfe03d763
F src/root.zig 2714f8b55507dadabfb94566f2f33d12198df1ccc45ac133ebba9881f9c476dc
F src/serve.zig 58af81fdc580627839a84eacec7971459a1bd9accbdbe5434f504836f02981de
F src/serve_benchmark.zig ff55c6148e961c9374ad60a756d9d997fadbc854d2a79d625235b580aefb8656
F src/serve_fuzz.zig 3c39ea768ffa37599e2cc00c588f053870766ab91500aceb0d844a4322174687
F src/sim/checkout_sweep.zig 80bb6fef67c88a29a2b6bdc372996c9f2c4ad65db289cddebc7a427b42ee5d39
F src/sim/faulty_dir.zig 29f0efc3338c14eb87085cd87591d01d78ae1feac8b3f6ab7f5a2533ac01a7db
F src/sim/faulty_file.zig 720be41b7f9bd64b9fd2586201e2f62d79c6d60452196eedeb9708b170093424
F src/sim/gen.zig a05fa9fa17e4b585c662c6e1d3855e5e46327db9c7490bc834382b64e742c557
F src/sim/net.zig 8fb057012ce0a33f67c928cd696bc2761fea8ba4012b2daa33871b2ba5dfe772
F src/sim/oracle.zig bc9e272bb3332b7b715fbcc254b63583aa294b769d423f4be48593152717dfb2
F src/sim/storage_sweep.zig 78e8a877e22afe537d29d289273d739a18f220497584b925492ed57331af27d9
F src/sim/sync_gen.zig 238d46942915b5c0e989dfc738b5927b5228468ea123e6f17b6fb593aa5cbf6e
F src/sim/sync_sweep.zig a5069e059bdba0cb7ceac9395923a76e673944df67c5fd6d2c2b5db18483d376
F src/smoke.zig 71968cdaeed39abca39b4795c95f590f9afea80a32e95a07d4209495aeb70ea6
F src/storage.zig 512205eb629d5af8d50ad336f1ef49f53b455abd52ee2f9b56d20893cafad39f
F src/storage_benchmark.zig 123ee72db0b7ba660a11594b54b4e11410b3cb1df4ca4e8c3e29cfcb7ceb48b3
F src/storestat.zig 30bd29d3638c4dcda9766f94a1a202cc1df181add943d9afb9ef225ccc64b4f9
F src/sync.zig 344b2cc760b0b15063300677a521c5b28a2927a452b86ce665979ecf94414bea
F src/sync_benchmark.zig f0d99a1f8273a1675a2f482a4977bbb12fc07a432447905c991bd359db73acdf
F src/sync_driver.zig 722ed498ea6b76900661a085d4257e51f6416d43ac1185e8ac15140de265f67e
F src/sync_driver_test.zig b50450d2938fc60aa90cd9067fc45141a965b63dc2194f42d5109919e380d7df
F src/sync_fuzz.zig 0ab9b7195535468db561cdcb405b7bf17536e2c6cb77a115ab1fe2badb001194
F src/sync_test.zig e42c4f2f53ed236ff770f0da973924877bdb1184651361a50b8acd2f6c5e9e1b
F src/tidy.zig c43465f253553b13e4b68f1c4e5eee3ec7638e2cd7ed8b4ce8dab4445bfb89d3
F src/transport.zig 36c4cbabaf10b30dbc20c6b8a30df94394a7e0a65b27613f0ace2f49ec1eaa79
F src/transport_fuzz.zig 43c310c51a6502fb2e049e6f43dfa151b1a632e6c885554ec6edce4ec62a8a48
F src/undo.zig 7fe1eacc9a3fdb2bb254014b08677989ae2991a0b3d3d87425b67c565c01be89
F src/update.zig 7553bc40be6d20a31c45f0fdb3a541285cf766c69ae0a1e984b22696ba7f1515
F src/update_test.zig c92b790daa737a1ba0b983c613de734d17028399fc303a8fd69298c3bc5325a1
F src/warmread_benchmark.zig 9421986d49deff3f720e491fb6d1c7162dc9322f4e67dd14198820c3992dc02a
P de218fa6f61eec86d2fd973eaa8c58d6b0fc01613a6dfd13350af2b829874518
R 114867528f10f452b373c25ba5aff13d
U dmestas
Z 466df6491f3da631ea3ade9072739725