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

View File

@ -703,12 +703,22 @@ impl Validator {
// Start a snapshot packaging service
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(
pending_snapshot_package.clone(),
starting_snapshot_hashes,
&exit,
&cluster_info,
snapshot_config.clone(),
enable_gossip_push,
);
(
Some(snapshot_packager_service),

View File

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