diff --git a/internal/gitaly/config/config.go b/internal/gitaly/config/config.go index 8b775f39b892ecebe3ff76667df3815b56431f2d..934dadf9b4f7128e6a032413932fd329dd42cc1a 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 b49490bde7d5c984a02457109efff6f1fd0af1f3..fda8a220645d22b6b3f5f692419a95aee489a567 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 3c28d64f06cef04c4123191c3b7f53f8020598b4..6a48bd60081785e5a90f88b5b9f07de8cbeeda61 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