refactor core to create consensus module (#32282)

This commit is contained in:
Jeff Biseda 2023-06-27 17:25:08 -07:00 committed by GitHub
parent 9fb105c801
commit 87c1b67d53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 90 additions and 71 deletions

View File

@ -5,7 +5,8 @@ extern crate test;
use {
solana_core::{
consensus::Tower, tower_storage::FileTowerStorage, vote_simulator::VoteSimulator,
consensus::{tower_storage::FileTowerStorage, Tower},
vote_simulator::VoteSimulator,
},
solana_runtime::{bank::Bank, bank_forks::BankForks},
solana_sdk::{

View File

@ -1,6 +1,7 @@
use {
crate::{
banking_trace::{BankingPacketBatch, BankingPacketSender},
consensus::vote_stake_tracker::VoteStakeTracker,
optimistic_confirmation_verifier::OptimisticConfirmationVerifier,
replay_stage::DUPLICATE_THRESHOLD,
result::{Error, Result},
@ -8,7 +9,6 @@ use {
verified_vote_packets::{
ValidatorGossipVotesIterator, VerifiedVoteMetadata, VerifiedVotePackets,
},
vote_stake_tracker::VoteStakeTracker,
},
crossbeam_channel::{unbounded, Receiver, RecvTimeoutError, Select, Sender},
log::*,

View File

@ -1,8 +1,9 @@
use {
crate::{
ancestor_hashes_service::{AncestorHashesReplayUpdate, AncestorHashesReplayUpdateSender},
fork_choice::ForkChoice,
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
consensus::{
fork_choice::ForkChoice, heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
},
},
solana_ledger::blockstore::Blockstore,
solana_sdk::{clock::Slot, hash::Hash},
@ -946,7 +947,7 @@ pub(crate) fn check_slot_agrees_with_cluster(
mod test {
use {
super::*,
crate::{progress_map::ProgressMap, replay_stage::tests::setup_forks_from_tree},
crate::{consensus::progress_map::ProgressMap, replay_stage::tests::setup_forks_from_tree},
crossbeam_channel::unbounded,
solana_runtime::bank_forks::BankForks,
std::{

View File

@ -1,5 +1,15 @@
pub mod fork_choice;
pub mod heaviest_subtree_fork_choice;
pub(crate) mod latest_validator_votes_for_frozen_banks;
pub mod progress_map;
mod tower1_14_11;
mod tower1_7_14;
pub mod tower_storage;
pub mod tree_diff;
pub mod vote_stake_tracker;
use {
crate::{
self::{
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::{LockoutIntervals, ProgressMap},
@ -1535,8 +1545,11 @@ pub mod test {
use {
super::*,
crate::{
fork_choice::ForkChoice, heaviest_subtree_fork_choice::SlotHashKey,
replay_stage::HeaviestForkFailures, tower_storage::FileTowerStorage,
consensus::{
fork_choice::ForkChoice, heaviest_subtree_fork_choice::SlotHashKey,
tower_storage::FileTowerStorage,
},
replay_stage::HeaviestForkFailures,
vote_simulator::VoteSimulator,
},
itertools::Itertools,

View File

@ -1,8 +1,9 @@
use {
crate::{
consensus::{SwitchForkDecision, Tower},
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::ProgressMap,
consensus::{
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::ProgressMap, SwitchForkDecision, Tower,
},
replay_stage::HeaviestForkFailures,
},
solana_runtime::{bank::Bank, bank_forks::BankForks},

View File

@ -1,10 +1,10 @@
#[cfg(test)]
use trees::{Tree, TreeWalk};
use {
crate::{
consensus::Tower, fork_choice::ForkChoice,
crate::consensus::{
fork_choice::ForkChoice,
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::ProgressMap, tree_diff::TreeDiff,
progress_map::ProgressMap, tree_diff::TreeDiff, Tower,
},
solana_measure::measure::Measure,
solana_runtime::{bank::Bank, bank_forks::BankForks, epoch_stakes::EpochStakes},

View File

@ -1,5 +1,5 @@
use {
crate::heaviest_subtree_fork_choice::SlotHashKey,
crate::consensus::heaviest_subtree_fork_choice::SlotHashKey,
solana_sdk::{clock::Slot, hash::Hash, pubkey::Pubkey},
std::collections::{hash_map::Entry, HashMap},
};

View File

@ -1,8 +1,7 @@
use {
crate::{
consensus::{Result, Tower, TowerError, TowerVersions},
tower1_14_11::Tower1_14_11,
tower1_7_14::SavedTower1_7_14,
crate::consensus::{
tower1_14_11::Tower1_14_11, tower1_7_14::SavedTower1_7_14, Result, Tower, TowerError,
TowerVersions,
},
solana_sdk::{
pubkey::Pubkey,
@ -371,9 +370,9 @@ impl TowerStorage for EtcdTowerStorage {
pub mod test {
use {
super::*,
crate::{
consensus::Tower,
crate::consensus::{
tower1_7_14::{SavedTower1_7_14, Tower1_7_14},
Tower,
},
solana_sdk::{hash::Hash, signature::Keypair},
solana_vote_program::vote_state::{

View File

@ -24,10 +24,7 @@ pub mod cost_update_service;
pub mod drop_bank_service;
pub mod duplicate_repair_status;
pub mod fetch_stage;
pub mod fork_choice;
pub mod gen_keys;
pub mod heaviest_subtree_fork_choice;
pub mod latest_validator_votes_for_frozen_banks;
pub mod ledger_cleanup_service;
pub mod ledger_metric_report_service;
pub mod next_leader;
@ -36,7 +33,6 @@ pub mod outstanding_requests;
pub mod packet_threshold;
pub mod poh_timing_report_service;
pub mod poh_timing_reporter;
pub mod progress_map;
pub mod repair_generic_traversal;
pub mod repair_response;
pub mod repair_service;
@ -56,19 +52,14 @@ pub mod snapshot_packager_service;
pub mod staked_nodes_updater_service;
pub mod stats_reporter_service;
pub mod system_monitor_service;
mod tower1_14_11;
mod tower1_7_14;
pub mod tower_storage;
pub mod tpu;
mod tpu_entry_notifier;
pub mod tracer_packet_stats;
pub mod tree_diff;
pub mod tvu;
pub mod unfrozen_gossip_verified_vote_hashes;
pub mod validator;
pub mod verified_vote_packets;
pub mod vote_simulator;
pub mod vote_stake_tracker;
pub mod voting_service;
pub mod warm_quic_cache_service;
pub mod window_service;

View File

@ -1,7 +1,8 @@
use {
crate::{
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice, repair_service::RepairService,
serve_repair::ShredRepairType, tree_diff::TreeDiff,
consensus::{heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice, tree_diff::TreeDiff},
repair_service::RepairService,
serve_repair::ShredRepairType,
},
solana_ledger::{blockstore::Blockstore, blockstore_meta::SlotMeta},
solana_sdk::{clock::Slot, hash::Hash},

View File

@ -1,12 +1,11 @@
use {
crate::{
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
consensus::{heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice, tree_diff::TreeDiff},
repair_generic_traversal::{get_closest_completion, get_unknown_last_index},
repair_service::{BestRepairsStats, RepairTiming},
repair_weighted_traversal,
replay_stage::DUPLICATE_THRESHOLD,
serve_repair::ShredRepairType,
tree_diff::TreeDiff,
},
solana_ledger::{
ancestor_iterator::AncestorIterator, blockstore::Blockstore, blockstore_meta::SlotMeta,

View File

@ -1,7 +1,8 @@
use {
crate::{
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice, repair_service::RepairService,
serve_repair::ShredRepairType, tree_diff::TreeDiff,
consensus::{heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice, tree_diff::TreeDiff},
repair_service::RepairService,
serve_repair::ShredRepairType,
},
solana_ledger::{blockstore::Blockstore, blockstore_meta::SlotMeta},
solana_sdk::{clock::Slot, hash::Hash},

View File

@ -12,20 +12,20 @@ use {
cluster_slots_service::{cluster_slots::ClusterSlots, ClusterSlotsUpdateSender},
commitment_service::{AggregateCommitmentService, CommitmentAggregationData},
consensus::{
fork_choice::{ForkChoice, SelectVoteAndResetForkResult},
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::{ForkProgress, ProgressMap, PropagatedStats, ReplaySlotStats},
tower_storage::{SavedTower, SavedTowerVersions, TowerStorage},
ComputedBankState, Stake, SwitchForkDecision, ThresholdDecision, Tower, VotedStakes,
SWITCH_FORK_THRESHOLD,
},
cost_update_service::CostUpdate,
duplicate_repair_status::AncestorDuplicateSlotsToRepair,
fork_choice::{ForkChoice, SelectVoteAndResetForkResult},
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::{ForkProgress, ProgressMap, PropagatedStats, ReplaySlotStats},
repair_service::{
AncestorDuplicateSlotsReceiver, DumpedSlotsSender, PopularPrunedForksReceiver,
},
rewards_recorder_service::{RewardsMessage, RewardsRecorderSender},
tower_storage::{SavedTower, SavedTowerVersions, TowerStorage},
unfrozen_gossip_verified_vote_hashes::UnfrozenGossipVerifiedVoteHashes,
validator::ProcessBlockStore,
voting_service::VoteOp,
@ -3898,10 +3898,13 @@ pub(crate) mod tests {
use {
super::*,
crate::{
consensus::Tower,
progress_map::{ValidatorStakeInfo, RETRANSMIT_BASE_DELAY_MS},
consensus::{
progress_map::{ValidatorStakeInfo, RETRANSMIT_BASE_DELAY_MS},
tower_storage::NullTowerStorage,
tree_diff::TreeDiff,
Tower,
},
replay_stage::ReplayStage,
tree_diff::TreeDiff,
vote_simulator::{self, VoteSimulator},
},
crossbeam_channel::unbounded,
@ -7003,7 +7006,7 @@ pub(crate) mod tests {
vote_simulator,
..
} = replay_blockstore_components(None, 10, None::<GenerateVotes>);
let tower_storage = crate::tower_storage::NullTowerStorage::default();
let tower_storage = NullTowerStorage::default();
let VoteSimulator {
mut validator_keypairs,
@ -7350,7 +7353,7 @@ pub(crate) mod tests {
vote_simulator,
..
} = replay_blockstore_components(None, 10, None::<GenerateVotes>);
let tower_storage = crate::tower_storage::NullTowerStorage::default();
let tower_storage = NullTowerStorage::default();
let VoteSimulator {
mut validator_keypairs,

View File

@ -11,6 +11,7 @@ use {
},
cluster_slots_service::{cluster_slots::ClusterSlots, ClusterSlotsService},
completed_data_sets_service::CompletedDataSetsSender,
consensus::tower_storage::TowerStorage,
cost_update_service::CostUpdateService,
drop_bank_service::DropBankService,
ledger_cleanup_service::LedgerCleanupService,
@ -18,7 +19,6 @@ use {
replay_stage::{ReplayStage, ReplayStageConfig},
rewards_recorder_service::RewardsRecorderSender,
shred_fetch_stage::ShredFetchStage,
tower_storage::TowerStorage,
validator::ProcessBlockStore,
voting_service::VotingService,
warm_quic_cache_service::WarmQuicCacheService,
@ -369,7 +369,10 @@ impl Tvu {
pub mod tests {
use {
super::*,
crate::validator::TURBINE_QUIC_CONNECTION_POOL_SIZE,
crate::{
consensus::tower_storage::FileTowerStorage,
validator::TURBINE_QUIC_CONNECTION_POOL_SIZE,
},
serial_test::serial,
solana_gossip::cluster_info::{ClusterInfo, Node},
solana_ledger::{
@ -470,7 +473,7 @@ pub mod tests {
)),
&poh_recorder,
None,
Arc::new(crate::tower_storage::FileTowerStorage::default()),
Arc::new(FileTowerStorage::default()),
&leader_schedule_cache,
exit.clone(),
block_commitment_cache,

View File

@ -1,5 +1,5 @@
use {
crate::latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
crate::consensus::latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
solana_sdk::{clock::Slot, hash::Hash, pubkey::Pubkey},
std::collections::{BTreeMap, HashMap},
};

View File

@ -9,7 +9,11 @@ use {
cache_block_meta_service::{CacheBlockMetaSender, CacheBlockMetaService},
cluster_info_vote_listener::VoteTracker,
completed_data_sets_service::CompletedDataSetsService,
consensus::{reconcile_blockstore_roots_with_external_source, ExternalRootSource, Tower},
consensus::{
reconcile_blockstore_roots_with_external_source,
tower_storage::{NullTowerStorage, TowerStorage},
ExternalRootSource, Tower,
},
ledger_metric_report_service::LedgerMetricReportService,
poh_timing_report_service::PohTimingReportService,
rewards_recorder_service::{RewardsRecorderSender, RewardsRecorderService},
@ -22,7 +26,6 @@ use {
system_monitor_service::{
verify_net_stats_access, SystemMonitorService, SystemMonitorStatsReportConfig,
},
tower_storage::TowerStorage,
tpu::{Tpu, TpuSockets, DEFAULT_TPU_COALESCE},
tvu::{Tvu, TvuConfig, TvuSockets},
},
@ -289,7 +292,7 @@ impl Default for ValidatorConfig {
wal_recovery_mode: None,
run_verification: true,
require_tower: false,
tower_storage: Arc::new(crate::tower_storage::NullTowerStorage::default()),
tower_storage: Arc::new(NullTowerStorage::default()),
debug_keys: None,
contact_debug_interval: DEFAULT_CONTACT_DEBUG_INTERVAL_MILLIS,
contact_save_interval: DEFAULT_CONTACT_SAVE_INTERVAL_MILLIS,

View File

@ -5,11 +5,13 @@ use {
DuplicateSlotsTracker, EpochSlotsFrozenSlots, GossipDuplicateConfirmedSlots,
},
cluster_slots_service::cluster_slots::ClusterSlots,
consensus::Tower,
fork_choice::SelectVoteAndResetForkResult,
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::{ForkProgress, ProgressMap},
consensus::{
fork_choice::SelectVoteAndResetForkResult,
heaviest_subtree_fork_choice::HeaviestSubtreeForkChoice,
latest_validator_votes_for_frozen_banks::LatestValidatorVotesForFrozenBanks,
progress_map::{ForkProgress, ProgressMap},
Tower,
},
replay_stage::{HeaviestForkFailures, ReplayStage},
unfrozen_gossip_verified_vote_hashes::UnfrozenGossipVerifiedVoteHashes,
},

View File

@ -1,7 +1,7 @@
use {
crate::{
consensus::tower_storage::{SavedTowerVersions, TowerStorage},
next_leader::next_leader_tpu_vote,
tower_storage::{SavedTowerVersions, TowerStorage},
},
crossbeam_channel::Receiver,
solana_gossip::cluster_info::ClusterInfo,

View File

@ -8,7 +8,7 @@ use {
log::*,
solana_client::{connection_cache::ConnectionCache, thin_client::ThinClient},
solana_core::{
tower_storage::FileTowerStorage,
consensus::tower_storage::FileTowerStorage,
validator::{Validator, ValidatorConfig, ValidatorStartProgress},
},
solana_gossip::{

View File

@ -2,8 +2,7 @@
use {
log::*,
solana_core::{
consensus::{Tower, SWITCH_FORK_THRESHOLD},
tower_storage::FileTowerStorage,
consensus::{tower_storage::FileTowerStorage, Tower, SWITCH_FORK_THRESHOLD},
validator::{is_snapshot_config_valid, ValidatorConfig},
},
solana_gossip::gossip_service::discover_cluster,

View File

@ -8,10 +8,11 @@ use {
serial_test::serial,
solana_client::thin_client::ThinClient,
solana_core::{
consensus::{Tower, SWITCH_FORK_THRESHOLD, VOTE_THRESHOLD_DEPTH},
consensus::{
tower_storage::FileTowerStorage, Tower, SWITCH_FORK_THRESHOLD, VOTE_THRESHOLD_DEPTH,
},
optimistic_confirmation_verifier::OptimisticConfirmationVerifier,
replay_stage::DUPLICATE_THRESHOLD,
tower_storage::FileTowerStorage,
validator::ValidatorConfig,
},
solana_download_utils::download_snapshot_archive,

View File

@ -7,7 +7,7 @@ use {
solana_client::rpc_request::MAX_MULTIPLE_ACCOUNTS,
solana_core::{
admin_rpc_post_init::AdminRpcRequestMetadataPostInit,
tower_storage::TowerStorage,
consensus::tower_storage::TowerStorage,
validator::{Validator, ValidatorConfig, ValidatorStartProgress},
},
solana_geyser_plugin_manager::{

View File

@ -10,8 +10,9 @@ use {
log::*,
serde::{de::Deserializer, Deserialize, Serialize},
solana_core::{
admin_rpc_post_init::AdminRpcRequestMetadataPostInit, consensus::Tower,
tower_storage::TowerStorage, validator::ValidatorStartProgress,
admin_rpc_post_init::AdminRpcRequestMetadataPostInit,
consensus::{tower_storage::TowerStorage, Tower},
validator::ValidatorStartProgress,
},
solana_geyser_plugin_manager::GeyserPluginManagerRequest,
solana_gossip::contact_info::{ContactInfo, Protocol, SOCKET_ADDR_UNSPECIFIED},
@ -864,7 +865,7 @@ mod tests {
super::*,
rand::{distributions::Uniform, thread_rng, Rng},
serde_json::Value,
solana_core::tower_storage::NullTowerStorage,
solana_core::consensus::tower_storage::NullTowerStorage,
solana_gossip::cluster_info::ClusterInfo,
solana_ledger::genesis_utils::{create_genesis_config, GenesisConfigInfo},
solana_rpc::rpc::create_validator_exit,

View File

@ -7,7 +7,7 @@ use {
input_parsers::{pubkey_of, pubkeys_of, value_of},
input_validators::normalize_to_url_if_moniker,
},
solana_core::tower_storage::FileTowerStorage,
solana_core::consensus::tower_storage::FileTowerStorage,
solana_faucet::faucet::run_local_faucet_with_port,
solana_rpc::{
rpc::{JsonRpcConfig, RpcBigtableConfig},

View File

@ -10,9 +10,9 @@ use {
solana_clap_utils::input_parsers::{keypair_of, keypairs_of, pubkey_of, value_of},
solana_core::{
banking_trace::DISABLED_BAKING_TRACE_DIR,
consensus::tower_storage,
ledger_cleanup_service::{DEFAULT_MAX_LEDGER_SHREDS, DEFAULT_MIN_MAX_LEDGER_SHREDS},
system_monitor_service::SystemMonitorService,
tower_storage,
tpu::DEFAULT_TPU_COALESCE,
validator::{
is_snapshot_config_valid, BlockProductionMethod, BlockVerificationMethod, Validator,
@ -1078,7 +1078,7 @@ pub fn main() {
.ok()
.or_else(|| get_cluster_shred_version(&entrypoint_addrs));
let tower_storage: Arc<dyn solana_core::tower_storage::TowerStorage> =
let tower_storage: Arc<dyn tower_storage::TowerStorage> =
match value_t_or_exit!(matches, "tower_storage", String).as_str() {
"file" => {
let tower_path = value_t!(matches, "tower", PathBuf)