Skip to content

Commit 17a1ba1

Browse files
authored
Add custom search GRPC message size (#31)
1 parent 33cc394 commit 17a1ba1

3 files changed

Lines changed: 14 additions & 3 deletions

File tree

quickwit/quickwit-config/src/node_config/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ pub struct RestConfig {
5959
pub struct GrpcConfig {
6060
#[serde(default = "GrpcConfig::default_max_message_size")]
6161
pub max_message_size: ByteSize,
62+
/// Search server responses can be larger when returning many hits.
63+
#[serde(default = "GrpcConfig::default_max_search_message_size")]
64+
pub max_search_message_size: ByteSize,
6265
#[serde(default)]
6366
pub tls: Option<TlsConfig>,
6467
// If set, keeps idle connection alive by periodically perform a
@@ -104,6 +107,10 @@ impl GrpcConfig {
104107
ByteSize::mib(20)
105108
}
106109

110+
fn default_max_search_message_size() -> ByteSize {
111+
ByteSize::mib(60)
112+
}
113+
107114
pub fn validate(&self) -> anyhow::Result<()> {
108115
ensure!(
109116
self.max_message_size >= ByteSize::mb(1),
@@ -118,6 +125,7 @@ impl Default for GrpcConfig {
118125
fn default() -> Self {
119126
Self {
120127
max_message_size: Self::default_max_message_size(),
128+
max_search_message_size: Self::default_max_search_message_size(),
121129
tls: None,
122130
keep_alive: None,
123131
}
@@ -846,13 +854,15 @@ mod tests {
846854
fn test_grpc_config_validate() {
847855
let grpc_config = GrpcConfig {
848856
max_message_size: ByteSize::mb(1),
857+
max_search_message_size: ByteSize::mb(1),
849858
tls: None,
850859
keep_alive: None,
851860
};
852861
assert!(grpc_config.validate().is_ok());
853862

854863
let grpc_config = GrpcConfig {
855864
max_message_size: ByteSize::kb(1),
865+
max_search_message_size: ByteSize::kb(1),
856866
tls: None,
857867
keep_alive: None,
858868
};

quickwit/quickwit-serve/src/grpc.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,11 @@ pub(crate) async fn start_grpc_server(
188188

189189
let search_service = services.search_service.clone();
190190
let grpc_search_service = GrpcSearchAdapter::from(search_service);
191+
let max_message_size_bytes = grpc_config.max_search_message_size.0 as usize;
191192
Some(
192193
SearchServiceServer::new(grpc_search_service)
193-
.max_decoding_message_size(grpc_config.max_message_size.0 as usize)
194-
.max_encoding_message_size(grpc_config.max_message_size.0 as usize),
194+
.max_decoding_message_size(max_message_size_bytes)
195+
.max_encoding_message_size(max_message_size_bytes),
195196
)
196197
} else {
197198
None

quickwit/quickwit-serve/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@ async fn setup_searcher(
10261026
)
10271027
.await?;
10281028
let search_service_clone = search_service.clone();
1029-
let max_message_size = node_config.grpc_config.max_message_size;
1029+
let max_message_size = node_config.grpc_config.max_search_message_size;
10301030
let searcher_change_stream = cluster_change_stream.filter_map(move |cluster_change| {
10311031
let search_service_clone = search_service_clone.clone();
10321032
Box::pin(async move {

0 commit comments

Comments
 (0)