From d8e2038dda12db533bccaafafa6dfc77d0bb73a5 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Thu, 3 Sep 2020 11:30:21 -0700 Subject: [PATCH] Add --enable-bigtable-ledger-upload flag --- core/src/rpc.rs | 1 + core/src/rpc_service.rs | 31 +++++++++++++++++-------------- validator/src/main.rs | 8 ++++++++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/core/src/rpc.rs b/core/src/rpc.rs index 18f66fc01d..69986179e1 100644 --- a/core/src/rpc.rs +++ b/core/src/rpc.rs @@ -99,6 +99,7 @@ pub struct JsonRpcConfig { pub faucet_addr: Option, pub health_check_slot_distance: u64, pub enable_bigtable_ledger_storage: bool, + pub enable_bigtable_ledger_upload: bool, } #[derive(Clone)] diff --git a/core/src/rpc_service.rs b/core/src/rpc_service.rs index 629416ae01..178228af18 100644 --- a/core/src/rpc_service.rs +++ b/core/src/rpc_service.rs @@ -260,20 +260,23 @@ impl JsonRpcService { .build() .expect("Runtime"); - let bigtable_ledger_storage = if config.enable_bigtable_ledger_storage { - runtime - .block_on(solana_storage_bigtable::LedgerStorage::new(false)) - .map(|x| { - info!("BigTable ledger storage initialized"); - Some(x) - }) - .unwrap_or_else(|err| { - error!("Failed to initialize BigTable ledger storage: {:?}", err); - None - }) - } else { - None - }; + let bigtable_ledger_storage = + if config.enable_bigtable_ledger_storage || config.enable_bigtable_ledger_upload { + runtime + .block_on(solana_storage_bigtable::LedgerStorage::new( + config.enable_bigtable_ledger_upload, + )) + .map(|x| { + info!("BigTable ledger storage initialized"); + Some(x) + }) + .unwrap_or_else(|err| { + error!("Failed to initialize BigTable ledger storage: {:?}", err); + None + }) + } else { + None + }; let (request_processor, receiver) = JsonRpcRequestProcessor::new( config, diff --git a/validator/src/main.rs b/validator/src/main.rs index deaa899cff..2b07bc2cb6 100644 --- a/validator/src/main.rs +++ b/validator/src/main.rs @@ -659,6 +659,13 @@ pub fn main() { .help("Fetch historical transaction info from a BigTable instance \ as a fallback to local ledger data"), ) + .arg( + Arg::with_name("enable_bigtable_ledger_upload") + .long("enable-bigtable-ledger-upload") + .requires("enable_rpc_transaction_history") + .takes_value(false) + .help("Upload new confirmed blocks into a BigTable instance"), + ) .arg( Arg::with_name("health_check_slot_distance") .long("health-check-slot-distance") @@ -976,6 +983,7 @@ pub fn main() { enable_rpc_transaction_history: matches.is_present("enable_rpc_transaction_history"), enable_bigtable_ledger_storage: matches .is_present("enable_rpc_bigtable_ledger_storage"), + enable_bigtable_ledger_upload: matches.is_present("enable_bigtable_ledger_upload"), identity_pubkey: identity_keypair.pubkey(), faucet_addr: matches.value_of("rpc_faucet_addr").map(|address| { solana_net_utils::parse_host_port(address).expect("failed to parse faucet address")