Example of concurrency bug
This commit is contained in:
parent
3f9f0904c2
commit
92d83d4c97
1 changed files with 30 additions and 0 deletions
30
examples/conflict.rs
Normal file
30
examples/conflict.rs
Normal file
|
@ -0,0 +1,30 @@
|
|||
use persy_trees::{Db, Tree};
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let db = Db::open("./db.persy")?;
|
||||
|
||||
let tree: Tree<String, u8> = db.open_tree("u8-tree")?;
|
||||
|
||||
let mut tx = tree.transaction()?;
|
||||
tx.insert("value".into(), 5)?;
|
||||
tx.commit()?;
|
||||
|
||||
let mut tx1 = tree.transaction()?;
|
||||
let mut tx2 = tree.transaction()?;
|
||||
|
||||
let value1 = tx1.get(&"value".into())?.expect("Value exists");
|
||||
let value2 = tx2.get(&"value".into())?.expect("Value exists");
|
||||
|
||||
tx1.insert("value".into(), value1 + 1)?;
|
||||
tx2.insert("value".into(), value2 - 1)?;
|
||||
|
||||
tx1.commit()?;
|
||||
tx2.commit()?;
|
||||
|
||||
let mut tx = tree.transaction()?;
|
||||
let value = tx.get(&"value".into())?.expect("Value exists");
|
||||
|
||||
println!("value: {}", value);
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in a new issue