aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2021-02-24 11:05:59 +0100
committerAlex Auvolat <alex@adnab.me>2021-02-24 11:05:59 +0100
commit09fd6ea7f02f5e8a7642942c52227056464b8833 (patch)
treec6541bd31f3b5cb29b581520f803c0077056280d
parenta52ab696403ebb824618e0f18ef9f4e707648439 (diff)
downloadgarage-09fd6ea7f02f5e8a7642942c52227056464b8833.tar.gz
garage-09fd6ea7f02f5e8a7642942c52227056464b8833.zip
I was tired yesterday
-rw-r--r--src/table/table.rs2
-rw-r--r--src/table/table_sync.rs11
2 files changed, 10 insertions, 3 deletions
diff --git a/src/table/table.rs b/src/table/table.rs
index bcf407ec..8b16173e 100644
--- a/src/table/table.rs
+++ b/src/table/table.rs
@@ -433,7 +433,7 @@ where
let removed = self.store.transaction(|txn| {
if let Some(cur_v) = txn.get(k)? {
if cur_v == v {
- txn.remove(v)?;
+ txn.remove(k)?;
return Ok(true);
}
}
diff --git a/src/table/table_sync.rs b/src/table/table_sync.rs
index 58391274..2c984226 100644
--- a/src/table/table_sync.rs
+++ b/src/table/table_sync.rs
@@ -319,7 +319,7 @@ where
}
counter += 1;
- debug!("Offloading items from {:?}..{:?} ({})", begin, end, counter);
+ debug!("Offloading {} items from {:?}..{:?} ({})", items.len(), begin, end, counter);
self.offload_items(&items, &nodes[..]).await?;
} else {
break;
@@ -348,8 +348,15 @@ where
}
// All remote nodes have written those items, now we can delete them locally
+ let mut not_removed = 0;
for (k, v) in items.iter() {
- self.table.delete_if_equal(&k[..], &v[..])?;
+ if !self.table.delete_if_equal(&k[..], &v[..])? {
+ not_removed += 1;
+ }
+ }
+
+ if not_removed > 0 {
+ debug!("{} items not removed during offload because they changed in between (trying again...)", not_removed);
}
Ok(())