1 unstable release
0.1.0 | Aug 10, 2022 |
---|
#1908 in Database interfaces
22KB
457 lines
Cock Lock (Cockroach Locks)
There is no better name for this project
A Distributed Locking System (DLS) made for CockroachDB and Postgres written in pure Rust. Motivation for this project was to create a DLS that didn't use the Redis Redlock protocol (since I saw some nerds arguing about it on the internet). This project also contains more features than traditional Redlock implementations.
Install
Not published to crates.io yet, check back later.
Usage
use std::thread::sleep;
use std::time::Duration;
use cocklock::{errors::CockLockError::NotAvailable, CockLock};
fn my_task() {
println!("Doing my task.");
}
fn main() {
let mut locker = CockLock::builder()
.with_connection_strings(vec!["postgres://user:pass@localhost:5432/db"])
.build()
.unwrap();
loop {
match locker.lock("task", 10_000) {
Ok(_) => my_task(),
Err(err) => match err {
NotAvailable => println!("Someone else is doing my task!"),
_ => println!("Uh oh, some other error occurred: {err}")
},
};
sleep(Duration::from_millis(1_000));
}
}
License
Dependencies
~7–19MB
~280K SLoC