* Refactor validator bigtable config (cherry picked from commit63ee00e647
) * bigtable: add a config ctor for `LedgerStorage` (cherry picked from commitf513195468
) * bigtable: allow custom instance names (cherry picked from commit9b32b72990
) # Conflicts: # validator/Cargo.toml * Add ability to query bigtable via solana-test-validator, with hidden params (cherry picked from commit9c60991cd3
) * Fix conflicts Co-authored-by: Tyera Eulberg <tyera@solana.com> Co-authored-by: Trent Nelson <trent@solana.com>
This commit is contained in:
@ -146,13 +146,11 @@ pub struct JsonRpcConfig {
|
||||
pub enable_cpi_and_log_storage: bool,
|
||||
pub faucet_addr: Option<SocketAddr>,
|
||||
pub health_check_slot_distance: u64,
|
||||
pub enable_bigtable_ledger_storage: bool,
|
||||
pub enable_bigtable_ledger_upload: bool,
|
||||
pub rpc_bigtable_config: Option<RpcBigtableConfig>,
|
||||
pub max_multiple_accounts: Option<usize>,
|
||||
pub account_indexes: AccountSecondaryIndexes,
|
||||
pub rpc_threads: usize,
|
||||
pub rpc_niceness_adj: i8,
|
||||
pub rpc_bigtable_timeout: Option<Duration>,
|
||||
pub full_api: bool,
|
||||
pub obsolete_v1_7_api: bool,
|
||||
pub rpc_scan_and_fix_roots: bool,
|
||||
@ -167,6 +165,24 @@ impl JsonRpcConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct RpcBigtableConfig {
|
||||
pub enable_bigtable_ledger_upload: bool,
|
||||
pub bigtable_instance_name: String,
|
||||
pub timeout: Option<Duration>,
|
||||
}
|
||||
|
||||
impl Default for RpcBigtableConfig {
|
||||
fn default() -> Self {
|
||||
let bigtable_instance_name = solana_storage_bigtable::DEFAULT_INSTANCE_NAME.to_string();
|
||||
Self {
|
||||
enable_bigtable_ledger_upload: false,
|
||||
bigtable_instance_name,
|
||||
timeout: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct JsonRpcRequestProcessor {
|
||||
bank_forks: Arc<RwLock<BankForks>>,
|
||||
|
@ -376,18 +376,26 @@ impl JsonRpcService {
|
||||
let exit_bigtable_ledger_upload_service = Arc::new(AtomicBool::new(false));
|
||||
|
||||
let (bigtable_ledger_storage, _bigtable_ledger_upload_service) =
|
||||
if config.enable_bigtable_ledger_storage || config.enable_bigtable_ledger_upload {
|
||||
if let Some(RpcBigtableConfig {
|
||||
enable_bigtable_ledger_upload,
|
||||
ref bigtable_instance_name,
|
||||
timeout,
|
||||
}) = config.rpc_bigtable_config
|
||||
{
|
||||
let bigtable_config = solana_storage_bigtable::LedgerStorageConfig {
|
||||
read_only: !enable_bigtable_ledger_upload,
|
||||
timeout,
|
||||
credential_path: None,
|
||||
instance_name: bigtable_instance_name.clone(),
|
||||
};
|
||||
runtime
|
||||
.block_on(solana_storage_bigtable::LedgerStorage::new(
|
||||
!config.enable_bigtable_ledger_upload,
|
||||
config.rpc_bigtable_timeout,
|
||||
None,
|
||||
.block_on(solana_storage_bigtable::LedgerStorage::new_with_config(
|
||||
bigtable_config,
|
||||
))
|
||||
.map(|bigtable_ledger_storage| {
|
||||
info!("BigTable ledger storage initialized");
|
||||
|
||||
let bigtable_ledger_upload_service = if config.enable_bigtable_ledger_upload
|
||||
{
|
||||
let bigtable_ledger_upload_service = if enable_bigtable_ledger_upload {
|
||||
Some(Arc::new(BigTableUploadService::new(
|
||||
runtime.clone(),
|
||||
bigtable_ledger_storage.clone(),
|
||||
|
Reference in New Issue
Block a user