2021-12-03 09:00:31 -08:00
|
|
|
use {
|
|
|
|
solana_core::validator::ValidatorConfig,
|
|
|
|
solana_sdk::exit::Exit,
|
|
|
|
std::sync::{Arc, RwLock},
|
|
|
|
};
|
2021-03-02 20:21:30 -08:00
|
|
|
|
|
|
|
pub fn safe_clone_config(config: &ValidatorConfig) -> ValidatorConfig {
|
|
|
|
ValidatorConfig {
|
2022-04-19 15:06:30 -07:00
|
|
|
halt_at_slot: config.halt_at_slot,
|
2021-03-02 20:21:30 -08:00
|
|
|
expected_genesis_hash: config.expected_genesis_hash,
|
|
|
|
expected_bank_hash: config.expected_bank_hash,
|
|
|
|
expected_shred_version: config.expected_shred_version,
|
|
|
|
voting_disabled: config.voting_disabled,
|
|
|
|
account_paths: config.account_paths.clone(),
|
|
|
|
account_shrink_paths: config.account_shrink_paths.clone(),
|
|
|
|
rpc_config: config.rpc_config.clone(),
|
2022-03-14 18:18:46 -07:00
|
|
|
geyser_plugin_config_files: config.geyser_plugin_config_files.clone(),
|
2021-03-02 20:21:30 -08:00
|
|
|
rpc_addrs: config.rpc_addrs,
|
|
|
|
pubsub_config: config.pubsub_config.clone(),
|
|
|
|
snapshot_config: config.snapshot_config.clone(),
|
|
|
|
max_ledger_shreds: config.max_ledger_shreds,
|
|
|
|
broadcast_stage_type: config.broadcast_stage_type.clone(),
|
2022-04-21 21:14:07 -07:00
|
|
|
turbine_disabled: config.turbine_disabled.clone(),
|
2021-03-02 20:21:30 -08:00
|
|
|
enforce_ulimit_nofile: config.enforce_ulimit_nofile,
|
|
|
|
fixed_leader_schedule: config.fixed_leader_schedule.clone(),
|
|
|
|
wait_for_supermajority: config.wait_for_supermajority,
|
|
|
|
new_hard_forks: config.new_hard_forks.clone(),
|
2021-11-12 10:57:55 -08:00
|
|
|
known_validators: config.known_validators.clone(),
|
2021-03-02 20:21:30 -08:00
|
|
|
repair_validators: config.repair_validators.clone(),
|
|
|
|
gossip_validators: config.gossip_validators.clone(),
|
2021-11-12 10:57:55 -08:00
|
|
|
halt_on_known_validators_accounts_hash_mismatch: config
|
|
|
|
.halt_on_known_validators_accounts_hash_mismatch,
|
2021-03-02 20:21:30 -08:00
|
|
|
accounts_hash_fault_injection_slots: config.accounts_hash_fault_injection_slots,
|
|
|
|
accounts_hash_interval_slots: config.accounts_hash_interval_slots,
|
|
|
|
max_genesis_archive_unpacked_size: config.max_genesis_archive_unpacked_size,
|
|
|
|
wal_recovery_mode: config.wal_recovery_mode.clone(),
|
|
|
|
poh_verify: config.poh_verify,
|
|
|
|
require_tower: config.require_tower,
|
2021-07-20 22:25:13 -07:00
|
|
|
tower_storage: config.tower_storage.clone(),
|
2021-03-02 20:21:30 -08:00
|
|
|
debug_keys: config.debug_keys.clone(),
|
|
|
|
contact_debug_interval: config.contact_debug_interval,
|
|
|
|
contact_save_interval: config.contact_save_interval,
|
2021-10-19 16:11:46 -07:00
|
|
|
send_transaction_service_config: config.send_transaction_service_config.clone(),
|
2021-03-02 20:21:30 -08:00
|
|
|
no_poh_speed_test: config.no_poh_speed_test,
|
2022-03-14 19:38:04 -07:00
|
|
|
no_os_memory_stats_reporting: config.no_os_memory_stats_reporting,
|
2021-11-16 10:26:03 -08:00
|
|
|
no_os_network_stats_reporting: config.no_os_network_stats_reporting,
|
2022-06-07 11:34:25 -07:00
|
|
|
no_os_cpu_stats_reporting: config.no_os_cpu_stats_reporting,
|
2022-08-02 14:29:53 -07:00
|
|
|
no_os_disk_stats_reporting: config.no_os_disk_stats_reporting,
|
2021-03-02 20:21:30 -08:00
|
|
|
poh_pinned_cpu_core: config.poh_pinned_cpu_core,
|
|
|
|
account_indexes: config.account_indexes.clone(),
|
|
|
|
accounts_db_caching_enabled: config.accounts_db_caching_enabled,
|
|
|
|
warp_slot: config.warp_slot,
|
|
|
|
accounts_db_test_hash_calculation: config.accounts_db_test_hash_calculation,
|
2021-08-04 15:28:33 -07:00
|
|
|
accounts_db_skip_shrink: config.accounts_db_skip_shrink,
|
2021-03-02 20:21:30 -08:00
|
|
|
tpu_coalesce_ms: config.tpu_coalesce_ms,
|
2022-08-11 14:34:04 -07:00
|
|
|
staked_nodes_overrides: config.staked_nodes_overrides.clone(),
|
2021-06-03 20:06:13 -07:00
|
|
|
validator_exit: Arc::new(RwLock::new(Exit::default())),
|
2021-03-05 16:01:21 -08:00
|
|
|
poh_hashes_per_batch: config.poh_hashes_per_batch,
|
2022-09-11 05:40:49 -07:00
|
|
|
process_ledger_before_services: config.process_ledger_before_services,
|
2021-03-25 18:54:51 -07:00
|
|
|
no_wait_for_vote_to_start_leader: config.no_wait_for_vote_to_start_leader,
|
2021-06-09 21:21:32 -07:00
|
|
|
accounts_shrink_ratio: config.accounts_shrink_ratio,
|
2021-09-07 21:30:38 -07:00
|
|
|
accounts_db_config: config.accounts_db_config.clone(),
|
2022-02-15 12:19:34 -08:00
|
|
|
wait_to_vote_slot: config.wait_to_vote_slot,
|
2022-03-18 11:13:35 -07:00
|
|
|
ledger_column_options: config.ledger_column_options.clone(),
|
2022-04-11 17:28:10 -07:00
|
|
|
runtime_config: config.runtime_config.clone(),
|
2022-08-26 12:36:02 -07:00
|
|
|
replay_slots_concurrently: config.replay_slots_concurrently,
|
2021-03-02 20:21:30 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn make_identical_validator_configs(
|
|
|
|
config: &ValidatorConfig,
|
|
|
|
num: usize,
|
|
|
|
) -> Vec<ValidatorConfig> {
|
|
|
|
let mut configs = vec![];
|
|
|
|
for _ in 0..num {
|
|
|
|
configs.push(safe_clone_config(config));
|
|
|
|
}
|
|
|
|
configs
|
|
|
|
}
|