From 177589a0a876fae5aa4d1d8868c36a8496e626b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20M=C3=B6hlmann?= Date: Wed, 15 Apr 2026 15:04:22 +0200 Subject: [PATCH] fix(grpc): increase MaxSendMsgSize (#12066) # Which Problems Are Solved Users exporting larger orgsanizations were facing grpc message size limits of 4 MiB, while trying to export 6.3 MiB of data. Other export methods like S3 aren't implemented. # How the Problems Are Solved Set MaxSendMsgSize to 10 MiB (allow some overhead). This is not a long-term solution and we should investigate better ways of export. # Additional Changes - none # Additional Context - Support ticket --- internal/api/grpc/server/gateway.go | 2 ++ internal/api/grpc/server/server.go | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/internal/api/grpc/server/gateway.go b/internal/api/grpc/server/gateway.go index 83be0d927..b15ec6791 100644 --- a/internal/api/grpc/server/gateway.go +++ b/internal/api/grpc/server/gateway.go @@ -132,6 +132,7 @@ func CreateGatewayWithPrefix( client_middleware.UnaryActivityClientInterceptor(), ), grpc.WithStatsHandler(client_middleware.DefaultTracingClient()), + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(MaxSendMsgSize)), } connection, err := dial(ctx, port, opts) if err != nil { @@ -159,6 +160,7 @@ func CreateGateway( client_middleware.UnaryActivityClientInterceptor(), ), grpc.WithStatsHandler(client_middleware.DefaultTracingClient()), + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(MaxSendMsgSize)), }) if err != nil { return nil, err diff --git a/internal/api/grpc/server/server.go b/internal/api/grpc/server/server.go index 5d6b4f317..a3719551e 100644 --- a/internal/api/grpc/server/server.go +++ b/internal/api/grpc/server/server.go @@ -24,6 +24,10 @@ import ( system_pb "github.com/zitadel/zitadel/pkg/grpc/system" ) +const ( + MaxSendMsgSize = 10 * 1024 * 1024 // 10MiB, global value required for exports. +) + type Server interface { AppName() string MethodPrefix() string @@ -90,6 +94,7 @@ func CreateServer( ), ), grpc.StatsHandler(middleware.DefaultTracingServer()), + grpc.MaxSendMsgSize(MaxSendMsgSize), } if tlsConfig != nil { serverOptions = append(serverOptions, grpc.Creds(credentials.NewTLS(tlsConfig)))