diff --git a/gg-g_counter/src/main.rs b/gg-g_counter/src/main.rs index bcaf4a9..edc3498 100644 --- a/gg-g_counter/src/main.rs +++ b/gg-g_counter/src/main.rs @@ -36,13 +36,11 @@ impl Node for Counter { "add" => { let delta = req.body.payload.get("delta").unwrap().as_i64().unwrap(); loop { - let cur = self.0; + let cur = kv.read(runner, KEY).unwrap().unwrap().as_i64().unwrap(); + let cur = cur.max(self.0); let new = cur + delta; match kv.cas(runner, KEY, cur.into(), new.into(), false) { - Err(_e) => { - let cur = kv.read(runner, KEY).unwrap().unwrap().as_i64().unwrap(); - self.0 = cur; - } + Err(_e) => {} Ok(_) => { let nodes = runner .nodes()