From 1cf03bcc813cfe310213a5e071fa62b171454c5a Mon Sep 17 00:00:00 2001 From: Timothy Schumacher Date: Tue, 28 Jan 2025 11:53:21 -0700 Subject: [PATCH] Add a config option to enable gRPC SharedWriteBuffer server option. Why isn't this a feature flag? This option is applied to the gRPC server when it is created. Feature flags are request scoped, and as such cannot be used at the gitaly startup time. So a config option seems like the best option here. --- internal/gitaly/config/config.go | 5 +++++ internal/gitaly/config/config_test.go | 9 +++++++++ internal/gitaly/server/server.go | 1 + 3 files changed, 15 insertions(+) diff --git a/internal/gitaly/config/config.go b/internal/gitaly/config/config.go index 8b775f39b8..934dadf9b4 100644 --- a/internal/gitaly/config/config.go +++ b/internal/gitaly/config/config.go @@ -145,6 +145,11 @@ type Cfg struct { Transactions Transactions `json:"transactions,omitempty" toml:"transactions,omitempty"` AdaptiveLimiting AdaptiveLimiting `json:"adaptive_limiting,omitempty" toml:"adaptive_limiting,omitempty"` Raft Raft `json:"raft,omitempty" toml:"raft,omitempty"` + GRPCOptions GRPCOptions `json:"grpc_options" toml:"grpc_options,omitempty"` +} + +type GRPCOptions struct { + SharedWriteBuffer bool `json:"shared_write_buffer" toml:"shared_write_buffer,omitempty"` } // Transactions configures transaction related options. diff --git a/internal/gitaly/config/config_test.go b/internal/gitaly/config/config_test.go index b49490bde7..fda8a22064 100644 --- a/internal/gitaly/config/config_test.go +++ b/internal/gitaly/config/config_test.go @@ -51,6 +51,15 @@ enabled = true require.True(t, cfg.Transactions.Enabled) } +func TestLoadSharedWriteBuffer(t *testing.T) { + cfg, err := Load(strings.NewReader(` +[grpc_options] +shared_write_buffer = true + `)) + require.NoError(t, err) + require.True(t, cfg.GRPCOptions.SharedWriteBuffer) +} + func TestLoadEmptyConfig(t *testing.T) { cfg, err := Load(strings.NewReader(``)) require.NoError(t, err) diff --git a/internal/gitaly/server/server.go b/internal/gitaly/server/server.go index 3c28d64f06..6a48bd6008 100644 --- a/internal/gitaly/server/server.go +++ b/internal/gitaly/server/server.go @@ -189,6 +189,7 @@ func (s *GitalyServerFactory) New(external, secure bool, opts ...Option) (*grpc. Time: 5 * time.Minute, }), grpc.WaitForHandlers(true), + grpc.SharedWriteBuffer(s.cfg.GRPCOptions.SharedWriteBuffer), } return grpc.NewServer(serverOptions...), nil -- GitLab