| Crates.io | cocklock |
| lib.rs | cocklock |
| version | 0.1.0 |
| created_at | 2022-08-10 21:48:53.661907+00 |
| updated_at | 2022-08-10 21:48:53.661907+00 |
| description | Implementation of the distributed locking mechanism built on top of Postgres/CockroachDB |
| homepage | |
| repository | https://github.com/hexcowboy/cocklock |
| max_upload_size | |
| id | 642914 |
| size | 53,535 |
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.
Not published to crates.io yet, check back later.
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));
}
}