21 stable releases (12 major)
15.0.1 | Nov 24, 2024 |
---|---|
14.0.0 | May 22, 2024 |
13.1.1 | Mar 14, 2024 |
12.0.1 | Dec 30, 2023 |
3.0.2 | Feb 17, 2023 |
#75 in Concurrency
562,438 downloads per month
Used in 269 crates
(4 directly)
81KB
1.5K
SLoC
Use lock-files in the way git does with auto-cleanup being the most notable feature.
- writable lock files that can be committed to atomically replace the resource they lock
- read-only markers that lock a resource without the intend to overwrite it
- auto-removal of the lockfiles and intermediate directories on drop or on signal
lib.rs
:
git-style registered lock files to make altering resources atomic.
In this model, reads are always atomic and can be performed directly while writes are facilitated by the locking mechanism implemented here. Locks are acquired atomically, then written to, to finally atomically overwrite the actual resource.
Lock files are wrapped gix-tempfile
-handles and add the following:
- consistent naming of lock files
- block the thread (with timeout) or fail immediately if a lock cannot be obtained right away
- commit lock files to atomically put them into the location of the originally locked file
Limitations
- All limitations of
gix-tempfile
apply. A highlight of such a limitation is resource leakage which results in them being permanently locked unless there is user-intervention. - As the lock file is separate from the actual resource, locking is merely a convention rather than being enforced.
Dependencies
~3–12MB
~181K SLoC