mirror of https://github.com/grpc/grpc-go.git
Cap min and max ring size to 4K (#5801)
This commit is contained in:
parent
0238b6e1ce
commit
ff146806d2
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue