Skip to content

Commit 6931dbf

Browse files
authored
refactor: unify gRPC message size into single config value (#19397)
* refactor: unify gRPC message size into single config value Consolidate `grpc_max_encoding_size` and `grpc_max_decoding_size` into a single `grpc_max_message_size` parameter since they are always set together. Also change the parameter type from `Option<usize>` to `usize` to require explicit values at construction time. Changes: - Unify encoding/decoding size into `grpc_max_message_size` in `RaftConfig` and `GrpcConfig` - Change `RpcClientConf.grpc_max_message_size` from `Option<usize>` to `usize` - Change `MetaGrpcClient::try_create()` and `try_create_with_features()` params to `usize` - Export `DEFAULT_GRPC_MESSAGE_SIZE` from `databend-common-meta-client` - Update all call sites to use `DEFAULT_GRPC_MESSAGE_SIZE` explicitly - Remove unused dependencies: `chrono`, `chrono-tz` from `databend-common-io`, `databend-common-column` from `databend-common-hashtable`, `chrono-tz` from `databend-common-formats` Config example (databend-meta): ```toml # MetaService gRPC message size (default: 32MB) grpc_api_max_message_size = 67108864 # 64MB [raft_config] # Raft gRPC message size (default: 32MB) raft_grpc_max_message_size = 67108864 # 64MB ``` Config example (databend-query): ```toml [meta] # Meta client gRPC message size (default: 32MB) grpc_max_message_size = 67108864 # 64MB ``` * M src/query/service/tests/it/storages/testdata/configs_table_basic.txt
1 parent 3fdfa42 commit 6931dbf

File tree

38 files changed

+170
-70
lines changed

38 files changed

+170
-70
lines changed

Cargo.lock

Lines changed: 0 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/common/hashtable/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ edition = { workspace = true }
88

99
[dependencies]
1010
databend-common-base = { workspace = true }
11-
databend-common-column = { workspace = true }
1211
## Must disable feature "runtime-rng", it will make the hash results unstable in cluster
1312
ahash = { workspace = true, features = ["no-rng"] }
1413
bumpalo = { workspace = true }

src/common/io/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ bincode = { workspace = true }
1212
borsh = { workspace = true }
1313
byteorder = { workspace = true }
1414
bytes = { workspace = true }
15-
chrono = { workspace = true }
16-
chrono-tz = { workspace = true }
1715
databend-common-base = { workspace = true }
1816
databend-common-exception = { workspace = true }
1917
databend-common-timezone = { workspace = true }

src/meta/binaries/meta/entry.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,11 @@ pub async fn entry<RT: RuntimeApi>(conf: MetaConfig) -> anyhow::Result<()> {
143143
println!(" Status: {}", single_or_join);
144144
println!();
145145
let grpc_listen = conf.service.grpc.api_address().unwrap_or_else(|| "-".to_string());
146+
let max_message = r.raft_grpc_max_message_size();
146147
println!("HTTP API listen at: {}", conf.admin.api_address);
147148
println!("gRPC API listen at: {} advertise: {}", grpc_listen, grpc_advertise);
148-
println!("Raft API listen at: {} advertise: {}", raft_listen, raft_advertise,);
149+
println!("Raft API listen at: {} advertise: {}", raft_listen, raft_advertise);
150+
println!("Raft API max message: {}MB", max_message / (1024 * 1024));
149151
println!();
150152
}
151153

src/meta/binaries/metabench/main.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ use databend_common_meta_app::schema::TableNameIdent;
4343
use databend_common_meta_app::schema::UpsertTableOptionReq;
4444
use databend_common_meta_app::schema::database_name_ident::DatabaseNameIdent;
4545
use databend_common_meta_app::tenant::Tenant;
46+
use databend_common_meta_client::DEFAULT_GRPC_MESSAGE_SIZE;
4647
use databend_common_meta_client::MetaGrpcClient;
4748
use databend_common_meta_client::required;
4849
use databend_common_meta_kvapi::kvapi::KVApi;
@@ -138,6 +139,7 @@ async fn main() {
138139
None,
139140
None,
140141
required::read_write(),
142+
DEFAULT_GRPC_MESSAGE_SIZE,
141143
)
142144
.unwrap();
143145
let client = MetaStore::R(client_handle);

src/meta/binaries/metactl/main.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ use clap::CommandFactory;
2323
use clap::Parser;
2424
use clap::Subcommand;
2525
use databend_common_meta_client::ClientHandle;
26+
use databend_common_meta_client::DEFAULT_GRPC_MESSAGE_SIZE;
2627
use databend_common_meta_client::MetaGrpcClient;
2728
use databend_common_meta_client::errors::CreationError;
2829
use databend_common_meta_control::admin::MetaAdminClient;
@@ -89,6 +90,7 @@ impl App {
8990
None,
9091
None,
9192
None,
93+
DEFAULT_GRPC_MESSAGE_SIZE,
9294
)?;
9395

9496
let res = client.get_cluster_status().await?;
@@ -171,6 +173,7 @@ impl App {
171173
None,
172174
None,
173175
None,
176+
DEFAULT_GRPC_MESSAGE_SIZE,
174177
)?;
175178
let res = client.get_kv("foo").await;
176179
println!("{}-th: get_kv(foo): {:?}", i, res);

src/meta/binaries/metaverifier/main.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use anyhow::Result;
2727
use anyhow::bail;
2828
use clap::Parser;
2929
use databend_common_meta_client::ClientHandle;
30+
use databend_common_meta_client::DEFAULT_GRPC_MESSAGE_SIZE;
3031
use databend_common_meta_client::MetaGrpcClient;
3132
use databend_common_meta_runtime_api::SpawnApi;
3233
use databend_common_meta_types::MatchSeq;
@@ -136,6 +137,7 @@ async fn main() -> Result<()> {
136137
None,
137138
None,
138139
None,
140+
DEFAULT_GRPC_MESSAGE_SIZE,
139141
);
140142

141143
let client = match client {

src/meta/cli-config/src/lib.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,11 @@ pub struct Config {
133133
#[clap(long, default_value = "")]
134134
pub grpc_tls_server_key: String,
135135

136+
/// Maximum message size for MetaService gRPC communication (in bytes).
137+
/// Default: 32MB (33554432).
138+
#[clap(long)]
139+
pub grpc_api_max_message_size: Option<usize>,
140+
136141
#[clap(flatten)]
137142
pub raft_config: RaftConfig,
138143
}
@@ -218,6 +223,7 @@ impl TryFrom<Config> for MetaConfig {
218223
cert: outer.grpc_tls_server_cert,
219224
key: outer.grpc_tls_server_key,
220225
},
226+
max_message_size: outer.grpc_api_max_message_size,
221227
},
222228
raft_config: outer.raft_config.into(),
223229
},
@@ -246,6 +252,7 @@ impl From<MetaConfig> for Config {
246252
grpc_api_advertise_host: inner.service.grpc.advertise_host,
247253
grpc_tls_server_cert: inner.service.grpc.tls.cert,
248254
grpc_tls_server_key: inner.service.grpc.tls.key,
255+
grpc_api_max_message_size: inner.service.grpc.max_message_size,
249256
raft_config: inner.service.raft_config.into(),
250257
}
251258
}
@@ -444,6 +451,11 @@ pub struct RaftConfig {
444451
/// Max timeout(in milliseconds) when waiting a cluster leader.
445452
#[clap(long, default_value = "180000")]
446453
pub wait_leader_timeout: u64,
454+
455+
/// Maximum message size for Raft gRPC communication (in bytes).
456+
/// Default: 32MB (33554432).
457+
#[clap(long)]
458+
pub raft_grpc_max_message_size: Option<usize>,
447459
}
448460

449461
// TODO(rotbl): should not be used.
@@ -487,6 +499,7 @@ impl From<RaftConfig> for InnerRaftConfig {
487499
id: x.id,
488500
cluster_name: x.cluster_name,
489501
wait_leader_timeout: x.wait_leader_timeout,
502+
raft_grpc_max_message_size: x.raft_grpc_max_message_size,
490503
}
491504
}
492505
}
@@ -524,6 +537,7 @@ impl From<InnerRaftConfig> for RaftConfig {
524537
id: inner.id,
525538
cluster_name: inner.cluster_name,
526539
wait_leader_timeout: inner.wait_leader_timeout,
540+
raft_grpc_max_message_size: inner.raft_grpc_max_message_size,
527541
}
528542
}
529543
}

src/meta/control/src/export_from_grpc.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use std::net::SocketAddr;
1919
use std::net::ToSocketAddrs;
2020

2121
use anyhow::anyhow;
22+
use databend_common_meta_client::DEFAULT_GRPC_MESSAGE_SIZE;
2223
use databend_common_meta_client::MetaGrpcClient;
2324
use databend_common_meta_client::required;
2425
use databend_common_meta_raft_store::key_spaces::RaftStoreEntry;
@@ -82,6 +83,7 @@ pub async fn export_from_grpc(
8283
None,
8384
None,
8485
required::export(),
86+
DEFAULT_GRPC_MESSAGE_SIZE,
8587
)?;
8688

8789
let mut grpc_client = client.make_established_client().await?;

src/meta/control/src/keys_layout_from_grpc.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use std::net::SocketAddr;
1717
use std::net::ToSocketAddrs;
1818

1919
use anyhow::anyhow;
20+
use databend_common_meta_client::DEFAULT_GRPC_MESSAGE_SIZE;
2021
use databend_common_meta_client::MetaGrpcClient;
2122
use databend_common_meta_types::protobuf;
2223
use databend_meta_runtime::DatabendRuntime;
@@ -75,6 +76,7 @@ pub async fn keys_layout_from_grpc(
7576
None,
7677
None,
7778
None,
79+
DEFAULT_GRPC_MESSAGE_SIZE,
7880
)?;
7981

8082
let mut grpc_client = client.make_established_client().await?;

0 commit comments

Comments
 (0)