disable gossip publish of snapshots when using filler accts (#20824)
This commit is contained in:
parent
451aac7f7f
commit
95e91a4863
|
@ -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();
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue