disable gossip publish of snapshots when using filler accts (#20824)

This commit is contained in:
Jeff Washington (jwash) 2021-10-20 13:07:29 -05:00 committed by GitHub
parent 451aac7f7f
commit 95e91a4863
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 11 deletions

View File

@ -32,6 +32,7 @@ impl SnapshotPackagerService {
exit: &Arc<AtomicBool>, exit: &Arc<AtomicBool>,
cluster_info: &Arc<ClusterInfo>, cluster_info: &Arc<ClusterInfo>,
snapshot_config: SnapshotConfig, snapshot_config: SnapshotConfig,
enable_gossip_push: bool,
) -> Self { ) -> Self {
let exit = exit.clone(); let exit = exit.clone();
let cluster_info = cluster_info.clone(); let cluster_info = cluster_info.clone();
@ -47,14 +48,20 @@ impl SnapshotPackagerService {
let t_snapshot_packager = Builder::new() let t_snapshot_packager = Builder::new()
.name("snapshot-packager".to_string()) .name("snapshot-packager".to_string())
.spawn(move || { .spawn(move || {
let mut snapshot_gossip_manager = SnapshotGossipManager { let mut snapshot_gossip_manager = if enable_gossip_push {
cluster_info, Some(SnapshotGossipManager {
max_full_snapshot_hashes, cluster_info,
max_incremental_snapshot_hashes, max_full_snapshot_hashes,
full_snapshot_hashes: FullSnapshotHashes::default(), max_incremental_snapshot_hashes,
incremental_snapshot_hashes: IncrementalSnapshotHashes::default(), full_snapshot_hashes: FullSnapshotHashes::default(),
incremental_snapshot_hashes: IncrementalSnapshotHashes::default(),
})
} else {
None
}; };
snapshot_gossip_manager.push_starting_snapshot_hashes(starting_snapshot_hashes); if let Some(snapshot_gossip_manager) = snapshot_gossip_manager.as_mut() {
snapshot_gossip_manager.push_starting_snapshot_hashes(starting_snapshot_hashes);
}
loop { loop {
if exit.load(Ordering::Relaxed) { if exit.load(Ordering::Relaxed) {
@ -78,10 +85,12 @@ impl SnapshotPackagerService {
) )
.expect("failed to archive snapshot package"); .expect("failed to archive snapshot package");
snapshot_gossip_manager.push_snapshot_hash( if let Some(snapshot_gossip_manager) = snapshot_gossip_manager.as_mut() {
snapshot_package.snapshot_type, snapshot_gossip_manager.push_snapshot_hash(
(snapshot_package.slot(), *snapshot_package.hash()), snapshot_package.snapshot_type,
); (snapshot_package.slot(), *snapshot_package.hash()),
);
}
} }
}) })
.unwrap(); .unwrap();

View File

@ -703,12 +703,22 @@ impl Validator {
// Start a snapshot packaging service // Start a snapshot packaging service
let pending_snapshot_package = PendingSnapshotPackage::default(); let pending_snapshot_package = PendingSnapshotPackage::default();
// filler accounts make snapshots invalid for use
// so, do not publish that we have snapshots
let enable_gossip_push = config
.accounts_db_config
.as_ref()
.and_then(|config| config.filler_account_count)
.map(|count| count == 0)
.unwrap_or(true);
let snapshot_packager_service = SnapshotPackagerService::new( let snapshot_packager_service = SnapshotPackagerService::new(
pending_snapshot_package.clone(), pending_snapshot_package.clone(),
starting_snapshot_hashes, starting_snapshot_hashes,
&exit, &exit,
&cluster_info, &cluster_info,
snapshot_config.clone(), snapshot_config.clone(),
enable_gossip_push,
); );
( (
Some(snapshot_packager_service), Some(snapshot_packager_service),

View File

@ -501,6 +501,7 @@ mod tests {
&exit, &exit,
&cluster_info, &cluster_info,
snapshot_config.clone(), snapshot_config.clone(),
true,
); );
let _package_receiver = std::thread::Builder::new() let _package_receiver = std::thread::Builder::new()
@ -928,6 +929,7 @@ mod tests {
&exit, &exit,
&cluster_info, &cluster_info,
snapshot_test_config.snapshot_config.clone(), snapshot_test_config.snapshot_config.clone(),
true,
); );
let tmpdir = TempDir::new().unwrap(); let tmpdir = TempDir::new().unwrap();