removes old runtime feature gates in gossip and turbine (#16633)
This commit is contained in:
parent
f2ab0384e4
commit
9706512115
|
@ -2051,7 +2051,6 @@ impl ClusterInfo {
|
||||||
recycler: &PacketsRecycler,
|
recycler: &PacketsRecycler,
|
||||||
stakes: &HashMap<Pubkey, u64>,
|
stakes: &HashMap<Pubkey, u64>,
|
||||||
response_sender: &PacketSender,
|
response_sender: &PacketSender,
|
||||||
feature_set: Option<&FeatureSet>,
|
|
||||||
require_stake_for_gossip: bool,
|
require_stake_for_gossip: bool,
|
||||||
) {
|
) {
|
||||||
let _st = ScopedTimer::from(&self.stats.handle_batch_pull_requests_time);
|
let _st = ScopedTimer::from(&self.stats.handle_batch_pull_requests_time);
|
||||||
|
@ -2094,13 +2093,8 @@ impl ClusterInfo {
|
||||||
self.stats
|
self.stats
|
||||||
.pull_requests_count
|
.pull_requests_count
|
||||||
.add_relaxed(requests.len() as u64);
|
.add_relaxed(requests.len() as u64);
|
||||||
let response = self.handle_pull_requests(
|
let response =
|
||||||
recycler,
|
self.handle_pull_requests(recycler, requests, stakes, require_stake_for_gossip);
|
||||||
requests,
|
|
||||||
stakes,
|
|
||||||
feature_set,
|
|
||||||
require_stake_for_gossip,
|
|
||||||
);
|
|
||||||
if !response.is_empty() {
|
if !response.is_empty() {
|
||||||
self.stats
|
self.stats
|
||||||
.packets_sent_pull_responses_count
|
.packets_sent_pull_responses_count
|
||||||
|
@ -2132,13 +2126,10 @@ impl ClusterInfo {
|
||||||
now: Instant,
|
now: Instant,
|
||||||
mut rng: &'a mut R,
|
mut rng: &'a mut R,
|
||||||
packets: &'a mut Packets,
|
packets: &'a mut Packets,
|
||||||
feature_set: Option<&FeatureSet>,
|
|
||||||
) -> impl FnMut(&PullData) -> bool + 'a
|
) -> impl FnMut(&PullData) -> bool + 'a
|
||||||
where
|
where
|
||||||
R: Rng + CryptoRng,
|
R: Rng + CryptoRng,
|
||||||
{
|
{
|
||||||
let check_enabled = matches!(feature_set, Some(feature_set) if
|
|
||||||
feature_set.is_active(&feature_set::pull_request_ping_pong_check::id()));
|
|
||||||
let mut cache = HashMap::<(Pubkey, SocketAddr), bool>::new();
|
let mut cache = HashMap::<(Pubkey, SocketAddr), bool>::new();
|
||||||
let mut pingf = move || Ping::new_rand(&mut rng, &self.keypair).ok();
|
let mut pingf = move || Ping::new_rand(&mut rng, &self.keypair).ok();
|
||||||
let mut ping_cache = self.ping_cache.write().unwrap();
|
let mut ping_cache = self.ping_cache.write().unwrap();
|
||||||
|
@ -2156,7 +2147,7 @@ impl ClusterInfo {
|
||||||
.pull_request_ping_pong_check_failed_count
|
.pull_request_ping_pong_check_failed_count
|
||||||
.add_relaxed(1)
|
.add_relaxed(1)
|
||||||
}
|
}
|
||||||
check || !check_enabled
|
check
|
||||||
};
|
};
|
||||||
// Because pull-responses are sent back to packet.meta.addr() of
|
// Because pull-responses are sent back to packet.meta.addr() of
|
||||||
// incoming pull-requests, pings are also sent to request.from_addr (as
|
// incoming pull-requests, pings are also sent to request.from_addr (as
|
||||||
|
@ -2176,7 +2167,6 @@ impl ClusterInfo {
|
||||||
recycler: &PacketsRecycler,
|
recycler: &PacketsRecycler,
|
||||||
requests: Vec<PullData>,
|
requests: Vec<PullData>,
|
||||||
stakes: &HashMap<Pubkey, u64>,
|
stakes: &HashMap<Pubkey, u64>,
|
||||||
feature_set: Option<&FeatureSet>,
|
|
||||||
require_stake_for_gossip: bool,
|
require_stake_for_gossip: bool,
|
||||||
) -> Packets {
|
) -> Packets {
|
||||||
let mut time = Measure::start("handle_pull_requests");
|
let mut time = Measure::start("handle_pull_requests");
|
||||||
|
@ -2189,7 +2179,7 @@ impl ClusterInfo {
|
||||||
let (caller_and_filters, addrs): (Vec<_>, Vec<_>) = {
|
let (caller_and_filters, addrs): (Vec<_>, Vec<_>) = {
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
let check_pull_request =
|
let check_pull_request =
|
||||||
self.check_pull_request(Instant::now(), &mut rng, &mut packets, feature_set);
|
self.check_pull_request(Instant::now(), &mut rng, &mut packets);
|
||||||
requests
|
requests
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter(check_pull_request)
|
.filter(check_pull_request)
|
||||||
|
@ -2786,7 +2776,6 @@ impl ClusterInfo {
|
||||||
recycler,
|
recycler,
|
||||||
&stakes,
|
&stakes,
|
||||||
response_sender,
|
response_sender,
|
||||||
feature_set,
|
|
||||||
require_stake_for_gossip,
|
require_stake_for_gossip,
|
||||||
);
|
);
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -28,9 +28,7 @@ use solana_measure::measure::Measure;
|
||||||
use solana_metrics::inc_new_counter_error;
|
use solana_metrics::inc_new_counter_error;
|
||||||
use solana_perf::packet::{Packet, Packets};
|
use solana_perf::packet::{Packet, Packets};
|
||||||
use solana_runtime::{bank::Bank, bank_forks::BankForks};
|
use solana_runtime::{bank::Bank, bank_forks::BankForks};
|
||||||
use solana_sdk::{
|
use solana_sdk::{clock::Slot, epoch_schedule::EpochSchedule, pubkey::Pubkey, timing::timestamp};
|
||||||
clock::Slot, epoch_schedule::EpochSchedule, feature_set, pubkey::Pubkey, timing::timestamp,
|
|
||||||
};
|
|
||||||
use solana_streamer::streamer::PacketReceiver;
|
use solana_streamer::streamer::PacketReceiver;
|
||||||
use std::{
|
use std::{
|
||||||
cmp,
|
cmp,
|
||||||
|
@ -273,22 +271,6 @@ fn check_if_first_shred_received(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if turbine retransmit peers patch (#14565) is enabled.
|
|
||||||
fn enable_turbine_retransmit_peers_patch(shred_slot: Slot, root_bank: &Bank) -> bool {
|
|
||||||
let feature_slot = root_bank
|
|
||||||
.feature_set
|
|
||||||
.activated_slot(&feature_set::turbine_retransmit_peers_patch::id());
|
|
||||||
match feature_slot {
|
|
||||||
None => false,
|
|
||||||
Some(feature_slot) => {
|
|
||||||
let epoch_schedule = root_bank.epoch_schedule();
|
|
||||||
let feature_epoch = epoch_schedule.get_epoch(feature_slot);
|
|
||||||
let shred_epoch = epoch_schedule.get_epoch(shred_slot);
|
|
||||||
feature_epoch < shred_epoch
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Drops shred slot leader from retransmit peers.
|
// Drops shred slot leader from retransmit peers.
|
||||||
// TODO: decide which bank should be used here.
|
// TODO: decide which bank should be used here.
|
||||||
fn get_retransmit_peers(
|
fn get_retransmit_peers(
|
||||||
|
@ -424,17 +406,13 @@ fn retransmit(
|
||||||
r_bank.deref(),
|
r_bank.deref(),
|
||||||
r_epoch_stakes_cache.deref(),
|
r_epoch_stakes_cache.deref(),
|
||||||
);
|
);
|
||||||
let (my_index, mut shuffled_stakes_and_index) = ClusterInfo::shuffle_peers_and_index(
|
let (my_index, shuffled_stakes_and_index) = ClusterInfo::shuffle_peers_and_index(
|
||||||
&my_id,
|
&my_id,
|
||||||
&r_epoch_stakes_cache.peers,
|
&r_epoch_stakes_cache.peers,
|
||||||
&stakes_and_index,
|
&stakes_and_index,
|
||||||
packet.meta.seed,
|
packet.meta.seed,
|
||||||
);
|
);
|
||||||
peers_len = cmp::max(peers_len, shuffled_stakes_and_index.len());
|
peers_len = cmp::max(peers_len, shuffled_stakes_and_index.len());
|
||||||
// Until the patch is activated, do the old buggy thing.
|
|
||||||
if !enable_turbine_retransmit_peers_patch(shred_slot, root_bank.deref()) {
|
|
||||||
shuffled_stakes_and_index.remove(my_index);
|
|
||||||
}
|
|
||||||
// split off the indexes, we don't need the stakes anymore
|
// split off the indexes, we don't need the stakes anymore
|
||||||
let indexes: Vec<_> = shuffled_stakes_and_index
|
let indexes: Vec<_> = shuffled_stakes_and_index
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|
|
@ -51,10 +51,6 @@ pub mod no_overflow_rent_distribution {
|
||||||
solana_sdk::declare_id!("4kpdyrcj5jS47CZb2oJGfVxjYbsMm2Kx97gFyZrxxwXz");
|
solana_sdk::declare_id!("4kpdyrcj5jS47CZb2oJGfVxjYbsMm2Kx97gFyZrxxwXz");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod pull_request_ping_pong_check {
|
|
||||||
solana_sdk::declare_id!("5RzEHTnf6D7JPZCvwEzjM19kzBsyjSU3HoMfXaQmVgnZ");
|
|
||||||
}
|
|
||||||
|
|
||||||
pub mod stake_program_v2 {
|
pub mod stake_program_v2 {
|
||||||
solana_sdk::declare_id!("Gvd9gGJZDHGMNf1b3jkxrfBQSR5etrfTQSBNKCvLSFJN");
|
solana_sdk::declare_id!("Gvd9gGJZDHGMNf1b3jkxrfBQSR5etrfTQSBNKCvLSFJN");
|
||||||
}
|
}
|
||||||
|
@ -75,10 +71,6 @@ pub mod stake_program_v3 {
|
||||||
solana_sdk::declare_id!("Ego6nTu7WsBcZBvVqJQKp6Yku2N3mrfG8oYCfaLZkAeK");
|
solana_sdk::declare_id!("Ego6nTu7WsBcZBvVqJQKp6Yku2N3mrfG8oYCfaLZkAeK");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod turbine_retransmit_peers_patch {
|
|
||||||
solana_sdk::declare_id!("5Lu3JnWSFwRYpXzwDMkanWSk6XqSuF2i5fpnVhzB5CTc");
|
|
||||||
}
|
|
||||||
|
|
||||||
pub mod require_custodian_for_locked_stake_authorize {
|
pub mod require_custodian_for_locked_stake_authorize {
|
||||||
solana_sdk::declare_id!("D4jsDcXaqdW8tDAWn8H4R25Cdns2YwLneujSL1zvjW6R");
|
solana_sdk::declare_id!("D4jsDcXaqdW8tDAWn8H4R25Cdns2YwLneujSL1zvjW6R");
|
||||||
}
|
}
|
||||||
|
@ -149,13 +141,11 @@ lazy_static! {
|
||||||
(full_inflation::devnet_and_testnet::id(), "full inflation on devnet and testnet"),
|
(full_inflation::devnet_and_testnet::id(), "full inflation on devnet and testnet"),
|
||||||
(spl_token_v2_multisig_fix::id(), "spl-token multisig fix"),
|
(spl_token_v2_multisig_fix::id(), "spl-token multisig fix"),
|
||||||
(no_overflow_rent_distribution::id(), "no overflow rent distribution"),
|
(no_overflow_rent_distribution::id(), "no overflow rent distribution"),
|
||||||
(pull_request_ping_pong_check::id(), "ping-pong packet check #12794"),
|
|
||||||
(stake_program_v2::id(), "solana_stake_program v2"),
|
(stake_program_v2::id(), "solana_stake_program v2"),
|
||||||
(rewrite_stake::id(), "rewrite stake"),
|
(rewrite_stake::id(), "rewrite stake"),
|
||||||
(filter_stake_delegation_accounts::id(), "filter stake_delegation_accounts #14062"),
|
(filter_stake_delegation_accounts::id(), "filter stake_delegation_accounts #14062"),
|
||||||
(bpf_loader_upgradeable_program::id(), "upgradeable bpf loader"),
|
(bpf_loader_upgradeable_program::id(), "upgradeable bpf loader"),
|
||||||
(stake_program_v3::id(), "solana_stake_program v3"),
|
(stake_program_v3::id(), "solana_stake_program v3"),
|
||||||
(turbine_retransmit_peers_patch::id(), "turbine retransmit peers patch #14631"),
|
|
||||||
(require_custodian_for_locked_stake_authorize::id(), "require custodian to authorize withdrawer change for locked stake"),
|
(require_custodian_for_locked_stake_authorize::id(), "require custodian to authorize withdrawer change for locked stake"),
|
||||||
(spl_token_v2_self_transfer_fix::id(), "spl-token self-transfer fix"),
|
(spl_token_v2_self_transfer_fix::id(), "spl-token self-transfer fix"),
|
||||||
(full_inflation::mainnet::certusone::enable::id(), "full inflation enabled by Certus One"),
|
(full_inflation::mainnet::certusone::enable::id(), "full inflation enabled by Certus One"),
|
||||||
|
|
Loading…
Reference in New Issue