From 5456acbef87a7c3d6d26f0fbb54378116b57b363 Mon Sep 17 00:00:00 2001 From: Yurii Koba Date: Mon, 18 Aug 2025 12:08:25 +0300 Subject: [PATCH] fix parse config.toml --- configuration/src/configs/general.rs | 7 +++---- configuration/src/configs/mod.rs | 4 ---- configuration/src/default_env_configs.rs | 10 +++++----- rpc-server/src/config.rs | 2 +- tx-indexer/src/main.rs | 4 ++-- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/configuration/src/configs/general.rs b/configuration/src/configs/general.rs index 836badf9..b4c05233 100644 --- a/configuration/src/configs/general.rs +++ b/configuration/src/configs/general.rs @@ -21,6 +21,7 @@ pub struct GeneralRpcServerConfig { pub block_cache_size: f64, pub shadow_data_consistency_rate: f64, pub prefetch_state_size_limit: u64, + pub tx_details_storage_provider: StorageProvider, } #[derive(Debug, Clone)] @@ -68,7 +69,7 @@ pub struct CommonGeneralConfig { pub tx_indexer: CommonGeneralTxIndexerConfig, #[serde(default)] pub state_indexer: CommonGeneralStateIndexerConfig, - #[serde(default)] + #[serde(deserialize_with = "deserialize_data_or_env")] pub tx_details_storage_provider: StorageProvider, } @@ -194,8 +195,6 @@ pub struct CommonGeneralTxIndexerConfig { pub indexer_id: Option, #[serde(deserialize_with = "deserialize_optional_data_or_env", default)] pub metrics_server_port: Option, - #[serde(deserialize_with = "deserialize_optional_data_or_env", default)] - pub tx_details_storage_provider: Option, } impl CommonGeneralTxIndexerConfig { @@ -213,7 +212,6 @@ impl Default for CommonGeneralTxIndexerConfig { Self { indexer_id: Some(Self::default_indexer_id()), metrics_server_port: Some(Self::default_metrics_server_port()), - tx_details_storage_provider: Some(StorageProvider::Postgres), } } } @@ -292,6 +290,7 @@ impl From for GeneralRpcServerConfig { .rpc_server .prefetch_state_size_limit .unwrap_or_else(CommonGeneralRpcServerConfig::default_prefetch_state_size_limit), + tx_details_storage_provider: common_config.tx_details_storage_provider, } } } diff --git a/configuration/src/configs/mod.rs b/configuration/src/configs/mod.rs index 299fd499..0467efe2 100644 --- a/configuration/src/configs/mod.rs +++ b/configuration/src/configs/mod.rs @@ -120,13 +120,11 @@ pub struct RpcServerConfig { pub lake_config: lake::LakeConfig, pub database: database::DatabaseConfig, pub tx_details_storage: tx_details_storage::TxDetailsStorageConfig, - pub tx_details_storage_provider: general::StorageProvider, } impl Config for RpcServerConfig { fn from_common_config(common_config: CommonConfig) -> Self { Self { - tx_details_storage_provider: common_config.general.tx_details_storage_provider.clone(), general: common_config.general.into(), lake_config: common_config.lake_config.into(), database: database::DatabaseConfig::from(common_config.database).to_read_only(), @@ -144,7 +142,6 @@ pub struct TxIndexerConfig { pub lake_config: lake::LakeConfig, pub database: database::DatabaseConfig, pub tx_details_storage: tx_details_storage::TxDetailsStorageConfig, - pub tx_details_storage_provider: general::StorageProvider, } impl TxIndexerConfig { @@ -159,7 +156,6 @@ impl TxIndexerConfig { impl Config for TxIndexerConfig { fn from_common_config(common_config: CommonConfig) -> Self { Self { - tx_details_storage_provider: common_config.general.tx_details_storage_provider.clone(), general: common_config.general.into(), rightsizing: common_config.rightsizing.into(), lake_config: common_config.lake_config.into(), diff --git a/configuration/src/default_env_configs.rs b/configuration/src/default_env_configs.rs index 8e514515..ca217de1 100644 --- a/configuration/src/default_env_configs.rs +++ b/configuration/src/default_env_configs.rs @@ -30,6 +30,11 @@ rpc_auth_token = "${RPC_AUTH_TOKEN}" ## Default value is redis://127.0.0.1/ redis_url = "${REDIS_URL}" +## Transaction details storage provider +## Options: "scylladb", "postgres" +## Default value is "postgres" +tx_details_storage_provider = "${TX_DETAILS_STORAGE_PROVIDER}" + ### Rpc server general configuration [general.rpc_server] @@ -78,11 +83,6 @@ indexer_id = "${TX_INDEXER_ID}" ## By default it 8080 for tx-indexer and 8081 for state-indexer metrics_server_port = "${TX_SERVER_PORT}" -## Transaction details storage provider -## Options: "scylla", "postgres" -## Default value is "postgres" -#tx_details_storage_provider = "${TX_DETAILS_STORAGE_PROVIDER}" - ### State indexer general configuration [general.state_indexer] diff --git a/rpc-server/src/config.rs b/rpc-server/src/config.rs index a16fd025..85bb2993 100644 --- a/rpc-server/src/config.rs +++ b/rpc-server/src/config.rs @@ -141,7 +141,7 @@ impl ServerContext { .await?; let tx_details_storage: std::sync::Arc = - match rpc_server_config.tx_details_storage_provider { + match rpc_server_config.general.tx_details_storage_provider { configuration::StorageProvider::ScyllaDb => { let scylla_session = rpc_server_config .tx_details_storage diff --git a/tx-indexer/src/main.rs b/tx-indexer/src/main.rs index bed9751d..91fa4c4e 100644 --- a/tx-indexer/src/main.rs +++ b/tx-indexer/src/main.rs @@ -30,9 +30,9 @@ async fn main() -> anyhow::Result<()> { .lake_client(indexer_config.general.chain_id.clone()) .await?; - tracing::info!(target: INDEXER, "Instantiating the tx_details storage client with {:?} provider...", &indexer_config.tx_details_storage_provider); + tracing::info!(target: INDEXER, "Instantiating the tx_details storage client with {:?} provider...", &indexer_config.general.tx_details_storage_provider); let tx_details_storage: std::sync::Arc = - match indexer_config.tx_details_storage_provider { + match indexer_config.general.tx_details_storage_provider { configuration::StorageProvider::ScyllaDb => { let scylla_session = indexer_config .tx_details_storage