You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2025/09/05 03:39:07 UTC
(skywalking-banyandb) branch main updated: feat: optimize gRPC message size limits for better time-series data handling (#752)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
The following commit(s) were added to refs/heads/main by this push:
new 7e6ac87d feat: optimize gRPC message size limits for better time-series data handling (#752)
7e6ac87d is described below
commit 7e6ac87dc0bab86bd4c08def720be5a4fc9a41e2
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Fri Sep 5 11:39:02 2025 +0800
feat: optimize gRPC message size limits for better time-series data handling (#752)
- Increase server max receive message size from 10MB to 16MB
- Increase client max receive message size from 10MB to 32MB
---
CHANGES.md | 1 +
banyand/liaison/grpc/server.go | 2 +-
banyand/queue/pub/client.go | 10 ++++++++--
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index e45678c6..a83a2283 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -39,6 +39,7 @@ Release Notes.
- Merge memory data and disk data.
- Enhance access log functionality with sampling option.
- Implement a resilient publisher with circuit breaker and retry logic with exponential backoff.
+- Optimize gRPC message size limits: increase server max receive message size to 16MB and client max receive message size to 32MB for better handling of large time-series data blocks.
### Bug Fixes
diff --git a/banyand/liaison/grpc/server.go b/banyand/liaison/grpc/server.go
index f8d0c704..762ecdb9 100644
--- a/banyand/liaison/grpc/server.go
+++ b/banyand/liaison/grpc/server.go
@@ -52,7 +52,7 @@ import (
pkgtls "github.com/apache/skywalking-banyandb/pkg/tls"
)
-const defaultRecvSize = 10 << 20
+const defaultRecvSize = 16 << 20
var (
errServerCert = errors.New("invalid server cert file")
diff --git a/banyand/queue/pub/client.go b/banyand/queue/pub/client.go
index ddd5e02d..104bbbdd 100644
--- a/banyand/queue/pub/client.go
+++ b/banyand/queue/pub/client.go
@@ -37,6 +37,8 @@ import (
const (
rpcTimeout = 2 * time.Second
+ // maxReceiveMessageSize sets the maximum message size the client can receive (32MB).
+ maxReceiveMessageSize = 32 << 20
)
// The timeout is set by each RPC.
@@ -167,7 +169,9 @@ func (p *pub) OnAddOrUpdate(md schema.Metadata) {
p.log.Error().Err(err).Msg("failed to load client TLS credentials")
return
}
- conn, err := grpc.NewClient(address, append(credOpts, grpc.WithDefaultServiceConfig(p.retryPolicy))...)
+ conn, err := grpc.NewClient(address, append(credOpts,
+ grpc.WithDefaultServiceConfig(p.retryPolicy),
+ grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxReceiveMessageSize)))...)
if err != nil {
p.log.Error().Err(err).Msg("failed to connect to grpc server")
return
@@ -316,7 +320,9 @@ func (p *pub) checkClientHealthAndReconnect(conn *grpc.ClientConn, md schema.Met
p.log.Error().Err(errEvict).Msg("failed to load client TLS credentials (evict)")
return
}
- connEvict, errEvict := grpc.NewClient(node.GrpcAddress, append(credOpts, grpc.WithDefaultServiceConfig(p.retryPolicy))...)
+ connEvict, errEvict := grpc.NewClient(node.GrpcAddress, append(credOpts,
+ grpc.WithDefaultServiceConfig(p.retryPolicy),
+ grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxReceiveMessageSize)))...)
if errEvict == nil && p.healthCheck(en.n.String(), connEvict) {
func() {
p.mu.Lock()