Cap min and max ring size to 4K (#5801)
This commit is contained in:
@ -249,7 +249,7 @@ func TestParseConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
XDSLBPolicy: &internalserviceconfig.BalancerConfig{
|
XDSLBPolicy: &internalserviceconfig.BalancerConfig{
|
||||||
Name: ringhash.Name,
|
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,
|
wantErr: false,
|
||||||
|
@ -35,7 +35,9 @@ type LBConfig struct {
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
defaultMinSize = 1024
|
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) {
|
func parseConfig(c json.RawMessage) (*LBConfig, error) {
|
||||||
@ -49,6 +51,12 @@ func parseConfig(c json.RawMessage) (*LBConfig, error) {
|
|||||||
if cfg.MaxRingSize == 0 {
|
if cfg.MaxRingSize == 0 {
|
||||||
cfg.MaxRingSize = defaultMaxSize
|
cfg.MaxRingSize = defaultMaxSize
|
||||||
}
|
}
|
||||||
|
if cfg.MinRingSize > maxRingSizeCap {
|
||||||
|
cfg.MinRingSize = maxRingSizeCap
|
||||||
|
}
|
||||||
|
if cfg.MaxRingSize > maxRingSizeCap {
|
||||||
|
cfg.MaxRingSize = maxRingSizeCap
|
||||||
|
}
|
||||||
if cfg.MinRingSize > cfg.MaxRingSize {
|
if cfg.MinRingSize > cfg.MaxRingSize {
|
||||||
return nil, fmt.Errorf("min %v is greater than max %v", cfg.MinRingSize, cfg.MaxRingSize)
|
return nil, fmt.Errorf("min %v is greater than max %v", cfg.MinRingSize, cfg.MaxRingSize)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user