From 6816df87af4642c1b4ab95eb0e546f665935d4b5 Mon Sep 17 00:00:00 2001 From: Alexander Polcyn Date: Fri, 18 Nov 2022 01:17:55 +0000 Subject: [PATCH 1/2] Cap min and max ring size to 4K --- xds/internal/balancer/ringhash/config.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/xds/internal/balancer/ringhash/config.go b/xds/internal/balancer/ringhash/config.go index 5cb4aab3d9c..4278b0636c7 100644 --- a/xds/internal/balancer/ringhash/config.go +++ b/xds/internal/balancer/ringhash/config.go @@ -35,7 +35,9 @@ type LBConfig struct { const ( defaultMinSize = 1024 - defaultMaxSize = 8 * 1024 * 1024 // 8M + defaultMaxSize = 4096 + // TODO(apolcyn): make makeRingSizeCap configurable, with either a dial option or global setting + maxRingSizeCap = 4096 ) func parseConfig(c json.RawMessage) (*LBConfig, error) { @@ -49,6 +51,12 @@ func parseConfig(c json.RawMessage) (*LBConfig, error) { if cfg.MaxRingSize == 0 { cfg.MaxRingSize = defaultMaxSize } + if cfg.MinRingSize > maxRingSizeCap { + cfg.MinRingSize = maxRingSizeCap + } + if cfg.MaxRingSize > maxRingSizeCap { + cfg.MaxRingSize = maxRingSizeCap + } if cfg.MinRingSize > cfg.MaxRingSize { return nil, fmt.Errorf("min %v is greater than max %v", cfg.MinRingSize, cfg.MaxRingSize) } From bfb16f75cd35f993993e0cd970badb8d5666a332 Mon Sep 17 00:00:00 2001 From: Alexander Polcyn Date: Fri, 18 Nov 2022 02:18:21 +0000 Subject: [PATCH 2/2] fix test --- xds/internal/balancer/clusterresolver/config_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xds/internal/balancer/clusterresolver/config_test.go b/xds/internal/balancer/clusterresolver/config_test.go index 6e2d8624050..cca1bd8eadc 100644 --- a/xds/internal/balancer/clusterresolver/config_test.go +++ b/xds/internal/balancer/clusterresolver/config_test.go @@ -249,7 +249,7 @@ func TestParseConfig(t *testing.T) { }, XDSLBPolicy: &internalserviceconfig.BalancerConfig{ Name: ringhash.Name, - Config: &ringhash.LBConfig{MinRingSize: 1024, MaxRingSize: 8388608}, // Ringhash LB config with default min and max. + Config: &ringhash.LBConfig{MinRingSize: 1024, MaxRingSize: 4096}, // Ringhash LB config with default min and max. }, }, wantErr: false,