dynamodb lock
Dynamodb based distributed lock implemented in pure Rust. The design is largely inspired by amazon-dynamodb-lock-client.
It is used by the delta-rs project to implement PUT if absence semantic for concurrent S3 writes. It is considered production ready and battle tested through the kafka-delta-ingest project.
Usage
let region = default;
// This will use the default options
let lock_client = for_region;
let lock_data = "Moe";
let lock = lock_client.try_acquire_lock.await?.unwrap;
if lock.acquired_expired_lock
// do stuff in the critical region
lock_client.release_lock.await?;
For real world example, see https://github.com/delta-io/delta-rs/blob/main/rust/src/storage/s3/mod.rs.