removes require-stake-for-gossip feature (#19476)

The feature is already activated on all clusters.
This commit is contained in:
behzad nouri 2021-08-27 21:17:15 +00:00 committed by GitHub
parent 4305d4b7b1
commit 6909a79b6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 68 deletions

View File

@ -53,7 +53,7 @@ use {
solana_runtime::bank_forks::BankForks,
solana_sdk::{
clock::{Slot, DEFAULT_MS_PER_SLOT, DEFAULT_SLOTS_PER_EPOCH},
feature_set::{self, FeatureSet},
feature_set::FeatureSet,
hash::Hash,
pubkey::Pubkey,
sanitize::{Sanitize, SanitizeError},
@ -1439,18 +1439,14 @@ impl ClusterInfo {
let _ = gossip_crds.insert(entry, now);
}
}
fn new_push_requests(
&self,
stakes: &HashMap<Pubkey, u64>,
require_stake_for_gossip: bool,
) -> Vec<(SocketAddr, Protocol)> {
fn new_push_requests(&self, stakes: &HashMap<Pubkey, u64>) -> Vec<(SocketAddr, Protocol)> {
let self_id = self.id();
let mut push_messages = {
let _st = ScopedTimer::from(&self.stats.new_push_requests);
self.gossip
.new_push_messages(self.drain_push_queue(), timestamp())
};
if require_stake_for_gossip {
if self.require_stake_for_gossip(stakes) {
push_messages.retain(|_, data| {
retain_staked(data, stakes);
!data.is_empty()
@ -1487,14 +1483,13 @@ impl ClusterInfo {
gossip_validators: Option<&HashSet<Pubkey>>,
stakes: &HashMap<Pubkey, u64>,
generate_pull_requests: bool,
require_stake_for_gossip: bool,
) -> Vec<(SocketAddr, Protocol)> {
self.trim_crds_table(CRDS_UNIQUE_PUBKEY_CAPACITY, stakes);
// This will flush local pending push messages before generating
// pull-request bloom filters, preventing pull responses to return the
// same values back to the node itself. Note that packets will arrive
// and are processed out of order.
let mut out: Vec<_> = self.new_push_requests(stakes, require_stake_for_gossip);
let mut out: Vec<_> = self.new_push_requests(stakes);
self.stats
.packets_sent_push_messages_count
.add_relaxed(out.len() as u64);
@ -1522,14 +1517,12 @@ impl ClusterInfo {
stakes: &HashMap<Pubkey, u64>,
sender: &PacketSender,
generate_pull_requests: bool,
require_stake_for_gossip: bool,
) -> Result<(), GossipError> {
let reqs = self.generate_new_gossip_requests(
thread_pool,
gossip_validators,
stakes,
generate_pull_requests,
require_stake_for_gossip,
);
if !reqs.is_empty() {
let packets = to_packets_with_destination(recycler.clone(), &reqs);
@ -1680,7 +1673,7 @@ impl ClusterInfo {
last_contact_info_save = start;
}
let (stakes, feature_set) = match bank_forks {
let (stakes, _feature_set) = match bank_forks {
Some(ref bank_forks) => {
let root_bank = bank_forks.read().unwrap().root_bank();
(
@ -1690,8 +1683,6 @@ impl ClusterInfo {
}
None => (Arc::default(), None),
};
let require_stake_for_gossip =
self.require_stake_for_gossip(feature_set.as_deref(), &stakes);
let _ = self.run_gossip(
&thread_pool,
gossip_validators.as_ref(),
@ -1699,7 +1690,6 @@ impl ClusterInfo {
&stakes,
&sender,
generate_pull_requests,
require_stake_for_gossip,
);
if exit.load(Ordering::Relaxed) {
return;
@ -1778,7 +1768,6 @@ impl ClusterInfo {
recycler: &PacketsRecycler,
stakes: &HashMap<Pubkey, u64>,
response_sender: &PacketSender,
require_stake_for_gossip: bool,
) {
let _st = ScopedTimer::from(&self.stats.handle_batch_pull_requests_time);
if requests.is_empty() {
@ -1809,13 +1798,7 @@ impl ClusterInfo {
self.stats
.pull_requests_count
.add_relaxed(requests.len() as u64);
let response = self.handle_pull_requests(
thread_pool,
recycler,
requests,
stakes,
require_stake_for_gossip,
);
let response = self.handle_pull_requests(thread_pool, recycler, requests, stakes);
if !response.is_empty() {
self.stats
.packets_sent_pull_responses_count
@ -1889,7 +1872,6 @@ impl ClusterInfo {
recycler: &PacketsRecycler,
requests: Vec<PullData>,
stakes: &HashMap<Pubkey, u64>,
require_stake_for_gossip: bool,
) -> Packets {
const DEFAULT_EPOCH_DURATION_MS: u64 = DEFAULT_SLOTS_PER_EPOCH * DEFAULT_MS_PER_SLOT;
let mut time = Measure::start("handle_pull_requests");
@ -1924,7 +1906,7 @@ impl ClusterInfo {
now,
)
};
if require_stake_for_gossip {
if self.require_stake_for_gossip(stakes) {
for resp in &mut pull_responses {
retain_staked(resp, stakes);
}
@ -2168,7 +2150,6 @@ impl ClusterInfo {
recycler: &PacketsRecycler,
stakes: &HashMap<Pubkey, u64>,
response_sender: &PacketSender,
require_stake_for_gossip: bool,
) {
let _st = ScopedTimer::from(&self.stats.handle_batch_push_messages_time);
if messages.is_empty() {
@ -2245,7 +2226,7 @@ impl ClusterInfo {
self.stats
.push_response_count
.add_relaxed(packets.packets.len() as u64);
let new_push_requests = self.new_push_requests(stakes, require_stake_for_gossip);
let new_push_requests = self.new_push_requests(stakes);
inc_new_counter_debug!("cluster_info-push_message-pushes", new_push_requests.len());
for (address, request) in new_push_requests {
if ContactInfo::is_valid_address(&address, &self.socket_addr_space) {
@ -2266,30 +2247,14 @@ impl ClusterInfo {
let _ = response_sender.send(packets);
}
fn require_stake_for_gossip(
&self,
feature_set: Option<&FeatureSet>,
stakes: &HashMap<Pubkey, u64>,
) -> bool {
match feature_set {
None => {
self.stats
.require_stake_for_gossip_unknown_feature_set
.add_relaxed(1);
false
}
Some(feature_set) => {
if !feature_set.is_active(&feature_set::require_stake_for_gossip::id()) {
false
} else if stakes.len() < MIN_NUM_STAKED_NODES {
self.stats
.require_stake_for_gossip_unknown_stakes
.add_relaxed(1);
false
} else {
true
}
}
fn require_stake_for_gossip(&self, stakes: &HashMap<Pubkey, u64>) -> bool {
if stakes.len() < MIN_NUM_STAKED_NODES {
self.stats
.require_stake_for_gossip_unknown_stakes
.add_relaxed(1);
false
} else {
true
}
}
@ -2300,7 +2265,7 @@ impl ClusterInfo {
recycler: &PacketsRecycler,
response_sender: &PacketSender,
stakes: &HashMap<Pubkey, u64>,
feature_set: Option<&FeatureSet>,
_feature_set: Option<&FeatureSet>,
epoch_duration: Duration,
should_check_duplicate_instance: bool,
) -> Result<(), GossipError> {
@ -2378,8 +2343,7 @@ impl ClusterInfo {
self.stats
.packets_received_prune_messages_count
.add_relaxed(prune_messages.len() as u64);
let require_stake_for_gossip = self.require_stake_for_gossip(feature_set, stakes);
if require_stake_for_gossip {
if self.require_stake_for_gossip(stakes) {
for (_, data) in &mut pull_responses {
retain_staked(data, stakes);
}
@ -2397,7 +2361,6 @@ impl ClusterInfo {
recycler,
stakes,
response_sender,
require_stake_for_gossip,
);
self.handle_batch_pull_responses(pull_responses, thread_pool, stakes, epoch_duration);
self.trim_crds_table(CRDS_UNIQUE_PUBKEY_CAPACITY, stakes);
@ -2408,7 +2371,6 @@ impl ClusterInfo {
recycler,
stakes,
response_sender,
require_stake_for_gossip,
);
Ok(())
}
@ -3320,7 +3282,6 @@ mod tests {
None, // gossip_validators
&HashMap::new(), // stakes
true, // generate_pull_requests
false, // require_stake_for_gossip
);
//assert none of the addrs are invalid.
reqs.iter().all(|(addr, _)| {

View File

@ -143,7 +143,6 @@ pub(crate) struct GossipStats {
pub(crate) push_response_count: Counter,
pub(crate) push_vote_read: Counter,
pub(crate) repair_peers: Counter,
pub(crate) require_stake_for_gossip_unknown_feature_set: Counter,
pub(crate) require_stake_for_gossip_unknown_stakes: Counter,
pub(crate) skip_pull_response_shred_version: Counter,
pub(crate) skip_pull_shred_version: Counter,
@ -422,11 +421,6 @@ pub(crate) fn submit_gossip_stats(
stats.packets_sent_push_messages_count.clear(),
i64
),
(
"require_stake_for_gossip_unknown_feature_set",
stats.require_stake_for_gossip_unknown_feature_set.clear(),
i64
),
(
"require_stake_for_gossip_unknown_stakes",
stats.require_stake_for_gossip_unknown_stakes.clear(),

View File

@ -91,10 +91,6 @@ pub mod check_program_owner {
solana_sdk::declare_id!("5XnbR5Es9YXEARRuP6mdvoxiW3hx5atNNeBmwVd8P3QD");
}
pub mod require_stake_for_gossip {
solana_sdk::declare_id!("6oNzd5Z3M2L1xo4Q5hoox7CR2DuW7m1ETLWH5jHJthwa");
}
pub mod enforce_aligned_host_addrs {
solana_sdk::declare_id!("6Qob9Z4RwGdf599FDVCqsjuKjR8ZFR3oVs2ByRLWBsua");
}
@ -221,7 +217,6 @@ lazy_static! {
(warp_timestamp_again::id(), "warp timestamp again, adjust bounding to 25% fast 80% slow #15204"),
(check_init_vote_data::id(), "check initialized Vote data"),
(check_program_owner::id(), "limit programs to operating on accounts owned by itself"),
(require_stake_for_gossip::id(), "require stakes for propagating crds values through gossip #15561"),
(enforce_aligned_host_addrs::id(), "enforce aligned host addresses"),
(stake_program_v4::id(), "solana_stake_program v4"),
(memory_ops_syscalls::id(), "add syscalls for memory operations"),