Skip to content

Commit

Permalink
refactor: consolidate DatanodeClientOptions
Browse files Browse the repository at this point in the history
  • Loading branch information
linyihai committed Nov 10, 2024
1 parent ac387bd commit 981b3c0
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 93 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/cmd/src/frontend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -343,8 +343,8 @@ impl StartCommand {
// Some queries are expected to take long time.
let channel_config = ChannelConfig {
timeout: None,
tcp_nodelay: opts.datanode.client.tcp_nodelay,
connect_timeout: Some(opts.datanode.client.connect_timeout),
tcp_nodelay: opts.datanode.channel.tcp_nodelay,
connect_timeout: Some(opts.datanode.channel.connect_timeout),
..Default::default()
};
let client = NodeClients::new(channel_config);
Expand Down
18 changes: 10 additions & 8 deletions src/cmd/tests/load_config_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,11 @@ use common_grpc::channel_manager::{
use common_telemetry::logging::{LoggingOptions, SlowQueryOptions, DEFAULT_OTLP_ENDPOINT};
use common_wal::config::raft_engine::RaftEngineConfig;
use common_wal::config::DatanodeWalConfig;
use datanode::config::{DatanodeOptions, RegionEngineConfig, StorageConfig};
use datanode::config::{
ChannelOptions, DatanodeClientOptions, DatanodeOptions, RegionEngineConfig, StorageConfig,
};
use file_engine::config::EngineConfig;
use frontend::frontend::FrontendOptions;
use frontend::service_config::datanode::DatanodeClientOptions;
use meta_client::MetaClientOptions;
use meta_srv::metasrv::MetasrvOptions;
use meta_srv::selector::SelectorType;
Expand Down Expand Up @@ -126,10 +127,11 @@ fn test_load_frontend_example_config() {
tracing_sample_ratio: Some(Default::default()),
..Default::default()
},
datanode: frontend::service_config::DatanodeOptions {
client: DatanodeClientOptions {
connect_timeout: Duration::from_secs(10),
datanode: datanode::config::DatanodeClientOptions {
channel: datanode::config::ChannelOptions {
connect_timeout: Duration::from_secs(1),
tcp_nodelay: true,
..Default::default()
},
},
export_metrics: ExportMetricsOption {
Expand Down Expand Up @@ -166,10 +168,10 @@ fn test_load_metasrv_example_config() {
},
..Default::default()
},
datanode: meta_srv::metasrv::DatanodeOptions {
client: meta_srv::metasrv::DatanodeClientOptions {
datanode: DatanodeClientOptions {
channel: ChannelOptions {
timeout: Duration::from_secs(10),
connect_timeout: Duration::from_secs(10),
connect_timeout: Duration::from_secs(1),
tcp_nodelay: true,
},
},
Expand Down
29 changes: 29 additions & 0 deletions src/datanode/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@

//! Datanode configurations
use std::time::Duration;

use common_base::readable_size::ReadableSize;
use common_base::secrets::{ExposeSecret, SecretString};
use common_config::Configurable;
use common_grpc::channel_manager;
pub use common_procedure::options::ProcedureConfig;
use common_telemetry::logging::{LoggingOptions, TracingOptions};
use common_wal::config::DatanodeWalConfig;
Expand Down Expand Up @@ -376,6 +379,32 @@ pub enum RegionEngineConfig {
File(FileEngineConfig),
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct DatanodeClientOptions {
pub channel: ChannelOptions,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ChannelOptions {
#[serde(with = "humantime_serde")]
pub timeout: Duration,
#[serde(with = "humantime_serde")]
pub connect_timeout: Duration,
pub tcp_nodelay: bool,
}

impl Default for ChannelOptions {
fn default() -> Self {
Self {
timeout: Duration::from_secs(channel_manager::DEFAULT_GRPC_REQUEST_TIMEOUT_SECS),
connect_timeout: Duration::from_secs(
channel_manager::DEFAULT_GRPC_CONNECT_TIMEOUT_SECS,
),
tcp_nodelay: true,
}
}
}

#[cfg(test)]
mod tests {
use common_base::secrets::ExposeSecret;
Expand Down
8 changes: 4 additions & 4 deletions src/frontend/src/frontend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

use common_config::config::Configurable;
use common_telemetry::logging::{LoggingOptions, TracingOptions};
use datanode::config::DatanodeClientOptions;
use meta_client::MetaClientOptions;
use serde::{Deserialize, Serialize};
use servers::export_metrics::ExportMetricsOption;
Expand All @@ -22,8 +23,7 @@ use servers::heartbeat_options::HeartbeatOptions;
use servers::http::HttpOptions;

use crate::service_config::{
DatanodeOptions, InfluxdbOptions, MysqlOptions, OpentsdbOptions, OtlpOptions, PostgresOptions,
PromStoreOptions,
InfluxdbOptions, MysqlOptions, OpentsdbOptions, OtlpOptions, PostgresOptions, PromStoreOptions,
};

#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
Expand All @@ -42,7 +42,7 @@ pub struct FrontendOptions {
pub otlp: OtlpOptions,
pub meta_client: Option<MetaClientOptions>,
pub logging: LoggingOptions,
pub datanode: DatanodeOptions,
pub datanode: DatanodeClientOptions,
pub user_provider: Option<String>,
pub export_metrics: ExportMetricsOption,
pub tracing: TracingOptions,
Expand All @@ -64,7 +64,7 @@ impl Default for FrontendOptions {
otlp: OtlpOptions::default(),
meta_client: None,
logging: LoggingOptions::default(),
datanode: DatanodeOptions::default(),
datanode: DatanodeClientOptions::default(),
user_provider: None,
export_metrics: ExportMetricsOption::default(),
tracing: TracingOptions::default(),
Expand Down
3 changes: 0 additions & 3 deletions src/frontend/src/service_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.

pub mod datanode;
pub mod influxdb;
pub mod mysql;
pub mod opentsdb;
Expand All @@ -26,5 +25,3 @@ pub use opentsdb::OpentsdbOptions;
pub use otlp::OtlpOptions;
pub use postgres::PostgresOptions;
pub use prom_store::PromStoreOptions;

pub use self::datanode::DatanodeOptions;
41 changes: 0 additions & 41 deletions src/frontend/src/service_config/datanode.rs

This file was deleted.

1 change: 1 addition & 0 deletions src/meta-srv/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ common-time.workspace = true
common-version.workspace = true
common-wal.workspace = true
dashmap.workspace = true
datanode.workspace = true
datatypes.workspace = true
derive_builder.workspace = true
etcd-client.workspace = true
Expand Down
35 changes: 3 additions & 32 deletions src/meta-srv/src/metasrv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ use common_base::readable_size::ReadableSize;
use common_base::Plugins;
use common_config::Configurable;
use common_greptimedb_telemetry::GreptimeDBTelemetryTask;
use common_grpc::channel_manager;
use common_meta::cache_invalidator::CacheInvalidatorRef;
use common_meta::ddl::ProcedureExecutorRef;
use common_meta::key::TableMetadataManagerRef;
Expand All @@ -41,6 +40,7 @@ use common_procedure::ProcedureManagerRef;
use common_telemetry::logging::{LoggingOptions, TracingOptions};
use common_telemetry::{error, info, warn};
use common_wal::config::MetasrvWalConfig;
use datanode::config::DatanodeClientOptions;
use serde::{Deserialize, Serialize};
use servers::export_metrics::ExportMetricsOption;
use servers::http::HttpOptions;
Expand Down Expand Up @@ -107,7 +107,7 @@ pub struct MetasrvOptions {
/// The failure detector options.
pub failure_detector: PhiAccrualFailureDetectorOptions,
/// The datanode options.
pub datanode: DatanodeOptions,
pub datanode: DatanodeClientOptions,
/// Whether to enable telemetry.
pub enable_telemetry: bool,
/// The data home directory.
Expand Down Expand Up @@ -162,7 +162,7 @@ impl Default for MetasrvOptions {
max_metadata_value_size: Some(ReadableSize::kb(1500)),
},
failure_detector: PhiAccrualFailureDetectorOptions::default(),
datanode: DatanodeOptions::default(),
datanode: DatanodeClientOptions::default(),
enable_telemetry: true,
data_home: METASRV_HOME.to_string(),
wal: MetasrvWalConfig::default(),
Expand All @@ -185,35 +185,6 @@ impl Configurable for MetasrvOptions {
pub struct MetasrvInfo {
pub server_addr: String,
}

// Options for datanode.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct DatanodeOptions {
pub client: DatanodeClientOptions,
}

// Options for datanode client.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DatanodeClientOptions {
#[serde(with = "humantime_serde")]
pub timeout: Duration,
#[serde(with = "humantime_serde")]
pub connect_timeout: Duration,
pub tcp_nodelay: bool,
}

impl Default for DatanodeClientOptions {
fn default() -> Self {
Self {
timeout: Duration::from_secs(channel_manager::DEFAULT_GRPC_REQUEST_TIMEOUT_SECS),
connect_timeout: Duration::from_secs(
channel_manager::DEFAULT_GRPC_CONNECT_TIMEOUT_SECS,
),
tcp_nodelay: true,
}
}
}

#[derive(Clone)]
pub struct Context {
pub server_addr: String,
Expand Down
6 changes: 3 additions & 3 deletions src/meta-srv/src/metasrv/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,9 @@ impl MetasrvBuilder {
let memory_region_keeper = Arc::new(MemoryRegionKeeper::default());
let node_manager = node_manager.unwrap_or_else(|| {
let datanode_client_channel_config = ChannelConfig::new()
.timeout(options.datanode.client.timeout)
.connect_timeout(options.datanode.client.connect_timeout)
.tcp_nodelay(options.datanode.client.tcp_nodelay);
.timeout(options.datanode.channel.timeout)
.connect_timeout(options.datanode.channel.connect_timeout)
.tcp_nodelay(options.datanode.channel.tcp_nodelay);
Arc::new(NodeClients::new(datanode_client_channel_config))
});
let cache_invalidator = Arc::new(MetasrvCacheInvalidator::new(
Expand Down

0 comments on commit 981b3c0

Please sign in to comment.