diff --git a/core/src/cluster_info.rs b/core/src/cluster_info.rs index be7ed79bf1eed9..e3efd49be52ce5 100644 --- a/core/src/cluster_info.rs +++ b/core/src/cluster_info.rs @@ -1890,14 +1890,12 @@ impl ClusterInfo { error!("crds table trim failed: {:?}", err); } Ok(purged_values) => { + let now = timestamp(); self.stats .trim_crds_table_purged_values_count .add_relaxed(purged_values.len() as u64); - gossip.pull.purged_values.extend( - purged_values - .into_iter() - .map(|v| (v.value_hash, v.local_timestamp)), - ); + let purged_values = purged_values.into_iter().map(|v| (v.value_hash, now)); + gossip.pull.purged_values.extend(purged_values); } } } diff --git a/core/src/crds.rs b/core/src/crds.rs index 02b9288af673d9..7f3cbcb9352e19 100644 --- a/core/src/crds.rs +++ b/core/src/crds.rs @@ -73,7 +73,7 @@ pub struct VersionedCrdsValue { /// local time when inserted pub insert_timestamp: u64, /// local time when updated - pub local_timestamp: u64, + pub(crate) local_timestamp: u64, /// value hash pub value_hash: Hash, } diff --git a/core/src/crds_gossip.rs b/core/src/crds_gossip.rs index d7a45dc5243a16..bb2257fa2851f9 100644 --- a/core/src/crds_gossip.rs +++ b/core/src/crds_gossip.rs @@ -66,8 +66,7 @@ impl CrdsGossip { .push .process_push_message(&mut self.crds, from, val, now); if let Ok(Some(val)) = res { - self.pull - .record_old_hash(val.value_hash, val.local_timestamp); + self.pull.record_old_hash(val.value_hash, now); Some(val) } else { None diff --git a/core/src/crds_gossip_pull.rs b/core/src/crds_gossip_pull.rs index 639feac106e362..26092aff5e5f63 100644 --- a/core/src/crds_gossip_pull.rs +++ b/core/src/crds_gossip_pull.rs @@ -300,8 +300,7 @@ impl CrdsGossipPull { for caller in callers { let key = caller.label().pubkey(); if let Ok(Some(val)) = crds.insert(caller, now) { - self.purged_values - .push_back((val.value_hash, val.local_timestamp)); + self.purged_values.push_back((val.value_hash, now)); } crds.update_record_timestamp(&key, now); } @@ -399,8 +398,7 @@ impl CrdsGossipPull { owners.insert(label.pubkey()); success.push((label, hash, wc)); if let Some(val) = old { - self.purged_values - .push_back((val.value_hash, val.local_timestamp)) + self.purged_values.push_back((val.value_hash, now)) } } } @@ -555,7 +553,7 @@ impl CrdsGossipPull { .into_iter() .filter_map(|label| { let val = crds.remove(&label)?; - Some((val.value_hash, val.local_timestamp)) + Some((val.value_hash, now)) }), ); self.purged_values.len() - num_purged_values @@ -1335,7 +1333,7 @@ mod test { } // purge the value - node.purge_purged(1); + node.purge_purged(3); assert_eq!(node.purged_values.len(), 0); } #[test]