removes redundant (mutable) self receivers (#18574)
This commit is contained in:
parent
c810908e62
commit
918b5c28b2
|
@ -659,7 +659,7 @@ impl ClusterInfo {
|
|||
self.my_contact_info.read().unwrap().shred_version
|
||||
}
|
||||
|
||||
pub fn lookup_epoch_slots(&self, ix: EpochSlotsIndex) -> EpochSlots {
|
||||
fn lookup_epoch_slots(&self, ix: EpochSlotsIndex) -> EpochSlots {
|
||||
let self_pubkey = self.id();
|
||||
let label = CrdsValueLabel::EpochSlots(ix, self_pubkey);
|
||||
let gossip = self.gossip.read().unwrap();
|
||||
|
@ -1141,28 +1141,14 @@ impl ClusterInfo {
|
|||
}
|
||||
|
||||
pub fn get_node_version(&self, pubkey: &Pubkey) -> Option<solana_version::Version> {
|
||||
let version = self
|
||||
.gossip
|
||||
.read()
|
||||
.unwrap()
|
||||
.crds
|
||||
.get(&CrdsValueLabel::Version(*pubkey))
|
||||
.map(|x| x.value.version())
|
||||
.flatten()
|
||||
.map(|version| version.version.clone());
|
||||
|
||||
if version.is_none() {
|
||||
self.gossip
|
||||
.read()
|
||||
.unwrap()
|
||||
.crds
|
||||
.get(&CrdsValueLabel::LegacyVersion(*pubkey))
|
||||
.map(|x| x.value.legacy_version())
|
||||
.flatten()
|
||||
.map(|version| version.version.clone().into())
|
||||
} else {
|
||||
version
|
||||
let gossip = self.gossip.read().unwrap();
|
||||
let version = gossip.crds.get(&CrdsValueLabel::Version(*pubkey));
|
||||
if let Some(version) = version.and_then(|v| v.value.version()) {
|
||||
return Some(version.version.clone());
|
||||
}
|
||||
let version = gossip.crds.get(&CrdsValueLabel::LegacyVersion(*pubkey))?;
|
||||
let version = version.value.legacy_version()?;
|
||||
Some(version.version.clone().into())
|
||||
}
|
||||
|
||||
/// all validators that have a valid rpc port regardless of `shred_version`.
|
||||
|
|
|
@ -238,8 +238,7 @@ impl CrdsGossip {
|
|||
where
|
||||
I: IntoIterator<Item = CrdsValue>,
|
||||
{
|
||||
self.pull
|
||||
.process_pull_requests(&mut self.crds, callers, now);
|
||||
CrdsGossipPull::process_pull_requests(&mut self.crds, callers, now);
|
||||
}
|
||||
|
||||
pub fn generate_pull_responses(
|
||||
|
@ -248,8 +247,7 @@ impl CrdsGossip {
|
|||
output_size_limit: usize, // Limit number of crds values returned.
|
||||
now: u64,
|
||||
) -> Vec<Vec<CrdsValue>> {
|
||||
self.pull
|
||||
.generate_pull_responses(&self.crds, filters, output_size_limit, now)
|
||||
CrdsGossipPull::generate_pull_responses(&self.crds, filters, output_size_limit, now)
|
||||
}
|
||||
|
||||
pub fn filter_pull_responses(
|
||||
|
@ -313,9 +311,7 @@ impl CrdsGossip {
|
|||
//sanity check
|
||||
assert_eq!(timeouts[self_pubkey], std::u64::MAX);
|
||||
assert!(timeouts.contains_key(&Pubkey::default()));
|
||||
rv = self
|
||||
.pull
|
||||
.purge_active(thread_pool, &mut self.crds, now, timeouts);
|
||||
rv = CrdsGossipPull::purge_active(thread_pool, &mut self.crds, now, timeouts);
|
||||
}
|
||||
self.crds
|
||||
.trim_purged(now.saturating_sub(5 * self.pull.crds_timeout));
|
||||
|
|
|
@ -75,7 +75,8 @@ impl solana_sdk::sanitize::Sanitize for CrdsFilter {
|
|||
}
|
||||
|
||||
impl CrdsFilter {
|
||||
pub fn new_rand(num_items: usize, max_bytes: usize) -> Self {
|
||||
#[cfg(test)]
|
||||
pub(crate) fn new_rand(num_items: usize, max_bytes: usize) -> Self {
|
||||
let max_bits = (max_bytes * 8) as f64;
|
||||
let max_items = Self::max_items(max_bits, FALSE_RATE, KEYS);
|
||||
let mask_bits = Self::mask_bits(num_items as f64, max_items as f64);
|
||||
|
@ -208,7 +209,7 @@ impl Default for CrdsGossipPull {
|
|||
impl CrdsGossipPull {
|
||||
/// generate a random request
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub fn new_pull_request(
|
||||
pub(crate) fn new_pull_request(
|
||||
&self,
|
||||
thread_pool: &ThreadPool,
|
||||
crds: &Crds,
|
||||
|
@ -315,12 +316,12 @@ impl CrdsGossipPull {
|
|||
/// This is used for weighted random selection during `new_pull_request`
|
||||
/// It's important to use the local nodes request creation time as the weight
|
||||
/// instead of the response received time otherwise failed nodes will increase their weight.
|
||||
pub fn mark_pull_request_creation_time(&mut self, from: Pubkey, now: u64) {
|
||||
pub(crate) fn mark_pull_request_creation_time(&mut self, from: Pubkey, now: u64) {
|
||||
self.pull_request_time.put(from, now);
|
||||
}
|
||||
|
||||
/// process a pull request
|
||||
pub fn process_pull_requests<I>(&mut self, crds: &mut Crds, callers: I, now: u64)
|
||||
pub(crate) fn process_pull_requests<I>(crds: &mut Crds, callers: I, now: u64)
|
||||
where
|
||||
I: IntoIterator<Item = CrdsValue>,
|
||||
{
|
||||
|
@ -332,14 +333,13 @@ impl CrdsGossipPull {
|
|||
}
|
||||
|
||||
/// Create gossip responses to pull requests
|
||||
pub fn generate_pull_responses(
|
||||
&self,
|
||||
pub(crate) fn generate_pull_responses(
|
||||
crds: &Crds,
|
||||
requests: &[(CrdsValue, CrdsFilter)],
|
||||
output_size_limit: usize, // Limit number of crds values returned.
|
||||
now: u64,
|
||||
) -> Vec<Vec<CrdsValue>> {
|
||||
self.filter_crds_values(crds, requests, output_size_limit, now)
|
||||
Self::filter_crds_values(crds, requests, output_size_limit, now)
|
||||
}
|
||||
|
||||
// Checks if responses should be inserted and
|
||||
|
@ -348,7 +348,7 @@ impl CrdsGossipPull {
|
|||
// .0 => responses that update the owner timestamp
|
||||
// .1 => responses that do not update the owner timestamp
|
||||
// .2 => hash value of outdated values which will fail to insert.
|
||||
pub fn filter_pull_responses(
|
||||
pub(crate) fn filter_pull_responses(
|
||||
&self,
|
||||
crds: &Crds,
|
||||
timeouts: &HashMap<Pubkey, u64>,
|
||||
|
@ -394,7 +394,7 @@ impl CrdsGossipPull {
|
|||
}
|
||||
|
||||
/// process a vec of pull responses
|
||||
pub fn process_pull_responses(
|
||||
pub(crate) fn process_pull_responses(
|
||||
&mut self,
|
||||
crds: &mut Crds,
|
||||
from: &Pubkey,
|
||||
|
@ -426,7 +426,7 @@ impl CrdsGossipPull {
|
|||
.extend(failed_inserts.into_iter().zip(std::iter::repeat(now)));
|
||||
}
|
||||
|
||||
pub fn purge_failed_inserts(&mut self, now: u64) {
|
||||
pub(crate) fn purge_failed_inserts(&mut self, now: u64) {
|
||||
if FAILED_INSERTS_RETENTION_MS < now {
|
||||
let cutoff = now - FAILED_INSERTS_RETENTION_MS;
|
||||
let outdated = self
|
||||
|
@ -472,7 +472,6 @@ impl CrdsGossipPull {
|
|||
|
||||
/// filter values that fail the bloom filter up to max_bytes
|
||||
fn filter_crds_values(
|
||||
&self,
|
||||
crds: &Crds,
|
||||
filters: &[(CrdsValue, CrdsFilter)],
|
||||
mut output_size_limit: usize, // Limit number of crds values returned.
|
||||
|
@ -553,8 +552,7 @@ impl CrdsGossipPull {
|
|||
}
|
||||
|
||||
/// Purge values from the crds that are older then `active_timeout`
|
||||
pub fn purge_active(
|
||||
&mut self,
|
||||
pub(crate) fn purge_active(
|
||||
thread_pool: &ThreadPool,
|
||||
crds: &mut Crds,
|
||||
now: u64,
|
||||
|
@ -569,7 +567,7 @@ impl CrdsGossipPull {
|
|||
|
||||
/// For legacy tests
|
||||
#[cfg(test)]
|
||||
pub fn process_pull_response(
|
||||
fn process_pull_response(
|
||||
&mut self,
|
||||
crds: &mut Crds,
|
||||
from: &Pubkey,
|
||||
|
@ -1123,10 +1121,9 @@ pub(crate) mod tests {
|
|||
);
|
||||
|
||||
let mut dest_crds = Crds::default();
|
||||
let dest = CrdsGossipPull::default();
|
||||
let (_, filters) = req.unwrap();
|
||||
let mut filters: Vec<_> = filters.into_iter().map(|f| (caller.clone(), f)).collect();
|
||||
let rsp = dest.generate_pull_responses(
|
||||
let rsp = CrdsGossipPull::generate_pull_responses(
|
||||
&dest_crds,
|
||||
&filters,
|
||||
/*output_size_limit=*/ usize::MAX,
|
||||
|
@ -1144,7 +1141,7 @@ pub(crate) mod tests {
|
|||
.unwrap();
|
||||
|
||||
//should skip new value since caller is to old
|
||||
let rsp = dest.generate_pull_responses(
|
||||
let rsp = CrdsGossipPull::generate_pull_responses(
|
||||
&dest_crds,
|
||||
&filters,
|
||||
/*output_size_limit=*/ usize::MAX,
|
||||
|
@ -1162,7 +1159,7 @@ pub(crate) mod tests {
|
|||
.map(|(_, filter)| (caller.clone(), filter.clone()))
|
||||
.collect::<Vec<_>>()
|
||||
});
|
||||
let rsp = dest.generate_pull_responses(
|
||||
let rsp = CrdsGossipPull::generate_pull_responses(
|
||||
&dest_crds,
|
||||
&filters,
|
||||
/*output_size_limit=*/ usize::MAX,
|
||||
|
@ -1211,16 +1208,15 @@ pub(crate) mod tests {
|
|||
);
|
||||
|
||||
let mut dest_crds = Crds::default();
|
||||
let mut dest = CrdsGossipPull::default();
|
||||
let (_, filters) = req.unwrap();
|
||||
let filters: Vec<_> = filters.into_iter().map(|f| (caller.clone(), f)).collect();
|
||||
let rsp = dest.generate_pull_responses(
|
||||
let rsp = CrdsGossipPull::generate_pull_responses(
|
||||
&dest_crds,
|
||||
&filters,
|
||||
/*output_size_limit=*/ usize::MAX,
|
||||
0,
|
||||
);
|
||||
dest.process_pull_requests(
|
||||
CrdsGossipPull::process_pull_requests(
|
||||
&mut dest_crds,
|
||||
filters.into_iter().map(|(caller, _)| caller),
|
||||
1,
|
||||
|
@ -1251,7 +1247,6 @@ pub(crate) mod tests {
|
|||
let new = CrdsValue::new_unsigned(CrdsData::ContactInfo(new));
|
||||
node_crds.insert(new, 0).unwrap();
|
||||
|
||||
let mut dest = CrdsGossipPull::default();
|
||||
let mut dest_crds = Crds::default();
|
||||
let new_id = solana_sdk::pubkey::new_rand();
|
||||
let new = ContactInfo::new_localhost(&new_id, 1);
|
||||
|
@ -1286,13 +1281,13 @@ pub(crate) mod tests {
|
|||
);
|
||||
let (_, filters) = req.unwrap();
|
||||
let filters: Vec<_> = filters.into_iter().map(|f| (caller.clone(), f)).collect();
|
||||
let rsp = dest.generate_pull_responses(
|
||||
let rsp = CrdsGossipPull::generate_pull_responses(
|
||||
&dest_crds,
|
||||
&filters,
|
||||
/*output_size_limit=*/ usize::MAX,
|
||||
0,
|
||||
);
|
||||
dest.process_pull_requests(
|
||||
CrdsGossipPull::process_pull_requests(
|
||||
&mut dest_crds,
|
||||
filters.into_iter().map(|(caller, _)| caller),
|
||||
0,
|
||||
|
@ -1335,7 +1330,7 @@ pub(crate) mod tests {
|
|||
)));
|
||||
let node_label = entry.label();
|
||||
let node_pubkey = node_label.pubkey();
|
||||
let mut node = CrdsGossipPull::default();
|
||||
let node = CrdsGossipPull::default();
|
||||
node_crds.insert(entry, 0).unwrap();
|
||||
let old = CrdsValue::new_unsigned(CrdsData::ContactInfo(ContactInfo::new_localhost(
|
||||
&solana_sdk::pubkey::new_rand(),
|
||||
|
@ -1351,7 +1346,7 @@ pub(crate) mod tests {
|
|||
);
|
||||
// purge
|
||||
let timeouts = node.make_timeouts(node_pubkey, &HashMap::new(), Duration::default());
|
||||
node.purge_active(&thread_pool, &mut node_crds, node.crds_timeout, &timeouts);
|
||||
CrdsGossipPull::purge_active(&thread_pool, &mut node_crds, node.crds_timeout, &timeouts);
|
||||
|
||||
//verify self is still valid after purge
|
||||
assert_eq!(
|
||||
|
|
|
@ -98,7 +98,7 @@ impl CrdsGossipPush {
|
|||
((CRDS_GOSSIP_PRUNE_STAKE_THRESHOLD_PCT * min_path_stake as f64).round() as u64).max(1)
|
||||
}
|
||||
|
||||
pub fn prune_received_cache(
|
||||
pub(crate) fn prune_received_cache(
|
||||
&mut self,
|
||||
self_pubkey: &Pubkey,
|
||||
origin: &Pubkey,
|
||||
|
@ -254,7 +254,7 @@ impl CrdsGossipPush {
|
|||
|
||||
/// refresh the push active set
|
||||
/// * ratio - active_set.len()/ratio is the number of actives to rotate
|
||||
pub fn refresh_push_active_set(
|
||||
pub(crate) fn refresh_push_active_set(
|
||||
&mut self,
|
||||
crds: &Crds,
|
||||
stakes: &HashMap<Pubkey, u64>,
|
||||
|
@ -359,7 +359,7 @@ impl CrdsGossipPush {
|
|||
}
|
||||
|
||||
/// purge received push message cache
|
||||
pub fn purge_old_received_cache(&mut self, min_time: u64) {
|
||||
pub(crate) fn purge_old_received_cache(&mut self, min_time: u64) {
|
||||
self.received_cache.retain(|_, v| {
|
||||
v.retain(|_, (_, t)| *t > min_time);
|
||||
!v.is_empty()
|
||||
|
|
Loading…
Reference in New Issue