mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 00:17:56 +00:00
warp-sync: Return an error when trying to enable it for archive nodes. (#11086)
* warp-sync: Return an error when trying to enable it for archive nodes. * Fix checks * Ups * FMT
This commit is contained in:
@@ -377,8 +377,8 @@ impl From<multiaddr::Error> for ParseErr {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
/// Sync operation mode.
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
pub enum SyncMode {
|
||||
/// Full block download and verification.
|
||||
Full,
|
||||
@@ -393,6 +393,18 @@ pub enum SyncMode {
|
||||
Warp,
|
||||
}
|
||||
|
||||
impl SyncMode {
|
||||
/// Returns if `self` is [`Self::Warp`].
|
||||
pub fn is_warp(&self) -> bool {
|
||||
matches!(self, Self::Warp)
|
||||
}
|
||||
|
||||
/// Returns if `self` is [`Self::Fast`].
|
||||
pub fn is_fast(&self) -> bool {
|
||||
matches!(self, Self::Fast { .. })
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for SyncMode {
|
||||
fn default() -> Self {
|
||||
Self::Full
|
||||
|
||||
@@ -39,7 +39,7 @@ use sc_executor::RuntimeVersionOf;
|
||||
use sc_keystore::LocalKeystore;
|
||||
use sc_network::{
|
||||
block_request_handler::{self, BlockRequestHandler},
|
||||
config::Role,
|
||||
config::{Role, SyncMode},
|
||||
light_client_requests::{self, handler::LightClientRequestHandler},
|
||||
state_request_handler::{self, StateRequestHandler},
|
||||
warp_request_handler::{self, RequestHandler as WarpSyncRequestHandler, WarpSyncProvider},
|
||||
@@ -767,6 +767,18 @@ where
|
||||
warp_sync,
|
||||
} = params;
|
||||
|
||||
if warp_sync.is_none() && config.network.sync_mode.is_warp() {
|
||||
return Err("Warp sync enabled, but no warp sync provider configured.".into())
|
||||
}
|
||||
|
||||
if config.state_pruning.is_archive() {
|
||||
match config.network.sync_mode {
|
||||
SyncMode::Fast { .. } => return Err("Fast sync doesn't work for archive nodes".into()),
|
||||
SyncMode::Warp => return Err("Warp sync doesn't work for archive nodes".into()),
|
||||
SyncMode::Full => {},
|
||||
};
|
||||
}
|
||||
|
||||
let transaction_pool_adapter = Arc::new(TransactionPoolAdapter {
|
||||
imports_external_transactions: !matches!(config.role, Role::Light),
|
||||
pool: transaction_pool,
|
||||
|
||||
Reference in New Issue
Block a user