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 <hanahm...@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()

Reply via email to