Skip to content
zit Check-in [676068f793]
Login

Check-in [676068f793]

Overview
Comment:landing accept: read the target once; --expect-target refuses a moved one

accept merged onto the target resolved by name at merge time, so a landing accepted meanwhile put an untested target under the merge. It now reads the target once and merges onto that check-in by hash. --expect-target HASH refuses with exit 7 and nothing written when the target is no longer at HASH.

Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 676068f793257374a6f42ad830af241ccbd66151c3ff97252a14f9d252f31797
User & Date: dmestas on 2026-09-28 12:35:44.325
Other Links: manifest | tags
Context
2026-09-28
12:53
pack, shun --force: fsync the directory after the rename; model it in DST

The rename that installs a new generation was never made durable, so a power loss after a reported success could bring the old store back, and with it content a shun had removed. The fault layer now reverts creates, renames and deletes no directory fsync made durable, and the shun sweep requires a rewrite that succeeded to survive a power cut. check-in: 3873759cfa user: dmestas tags: trunk

12:35
landing accept: read the target once; --expect-target refuses a moved one

accept merged onto the target resolved by name at merge time, so a landing accepted meanwhile put an untested target under the merge. It now reads the target once and merges onto that check-in by hash. --expect-target HASH refuses with exit 7 and nothing written when the target is no longer at HASH. check-in: 676068f793 user: dmestas tags: trunk

11:59
Lock the store with exclusive-create lock files instead of flock

Writers create .zit.lock with O_CREAT|O_EXCL before opening the store. A waiter names the holder and gives up after a minute; a dead holder's lock is broken; pack and shun --force hold the writer lock across their final check and rename. Release 0.3.33. check-in: d6cf7bf59c user: dmestas tags: trunk, version-0.3.33

Changes