session: change the variable range of circuit breaker (#61613)
close pingcap/tidb#61614
This commit is contained in:
@ -1658,7 +1658,7 @@ const (
|
||||
DefOptEnableProjectionPushDown = true
|
||||
DefTiDBEnableSharedLockPromotion = false
|
||||
DefTiDBTSOClientRPCMode = TSOClientRPCModeDefault
|
||||
DefTiDBCircuitBreakerPDMetaErrorRatePct = 0
|
||||
DefTiDBCircuitBreakerPDMetaErrorRatePct = 0.0
|
||||
DefTiDBAccelerateUserCreationUpdate = false
|
||||
DefTiDBEnableTSValidation = true
|
||||
)
|
||||
@ -1788,6 +1788,8 @@ var (
|
||||
SchemaCacheSize = atomic.NewUint64(DefTiDBSchemaCacheSize)
|
||||
SchemaCacheSizeOriginText = atomic.NewString(strconv.Itoa(DefTiDBSchemaCacheSize))
|
||||
AccelerateUserCreationUpdate = atomic.NewBool(DefTiDBAccelerateUserCreationUpdate)
|
||||
|
||||
CircuitBreakerPDMetadataErrorRateThresholdPct = atomic.NewFloat64(0.0)
|
||||
)
|
||||
|
||||
func serverMemoryLimitDefaultValue() string {
|
||||
|
||||
@ -3563,14 +3563,24 @@ var defaultSysVars = []*SysVar{
|
||||
return (*SetPDClientDynamicOption.Load())(vardef.TiDBTSOClientRPCMode, val)
|
||||
},
|
||||
},
|
||||
{Scope: vardef.ScopeGlobal, Name: vardef.TiDBCircuitBreakerPDMetadataErrorRateThresholdPct, Value: strconv.Itoa(vardef.DefTiDBCircuitBreakerPDMetaErrorRatePct), Type: vardef.TypeUnsigned, MinValue: 0, MaxValue: 100,
|
||||
{Scope: vardef.ScopeGlobal, Name: vardef.TiDBCircuitBreakerPDMetadataErrorRateThresholdPct, Value: strconv.FormatFloat(vardef.DefTiDBCircuitBreakerPDMetaErrorRatePct, 'f', -1, 64),
|
||||
Type: vardef.TypeFloat, MinValue: 0, MaxValue: 1,
|
||||
GetGlobal: func(_ context.Context, s *SessionVars) (string, error) {
|
||||
return strconv.FormatFloat(vardef.CircuitBreakerPDMetadataErrorRateThresholdPct.Load(), 'f', -1, 64), nil
|
||||
},
|
||||
SetGlobal: func(_ context.Context, s *SessionVars, val string) error {
|
||||
v := tidbOptFloat64(val, vardef.DefTiDBCircuitBreakerPDMetaErrorRatePct)
|
||||
if v < 0 || v > 1 {
|
||||
return errors.Errorf("invalid tidb_cb_pd_metadata_error_rate_threshold_pct value %s", val)
|
||||
}
|
||||
vardef.CircuitBreakerPDMetadataErrorRateThresholdPct.Store(v)
|
||||
if ChangePDMetadataCircuitBreakerErrorRateThresholdPct != nil {
|
||||
ChangePDMetadataCircuitBreakerErrorRateThresholdPct(uint32(tidbOptPositiveInt32(val, vardef.DefTiDBCircuitBreakerPDMetaErrorRatePct)))
|
||||
ChangePDMetadataCircuitBreakerErrorRateThresholdPct(uint32(v * 100))
|
||||
}
|
||||
return nil
|
||||
},
|
||||
},
|
||||
|
||||
{Scope: vardef.ScopeGlobal, Name: vardef.TiDBAccelerateUserCreationUpdate, Value: BoolToOnOff(vardef.DefTiDBAccelerateUserCreationUpdate), Type: vardef.TypeBool,
|
||||
SetGlobal: func(_ context.Context, s *SessionVars, val string) error {
|
||||
vardef.AccelerateUserCreationUpdate.Store(TiDBOptOn(val))
|
||||
|
||||
@ -1773,16 +1773,20 @@ func TestTiDBCircuitBreakerPDMetadataErrorRateThresholdPct(t *testing.T) {
|
||||
require.Equal(t, "[variable:1292]Truncated incorrect tidb_cb_pd_metadata_error_rate_threshold_pct value: '-1'", warn.Error())
|
||||
|
||||
// Too high, will get lowered to the max value
|
||||
val, err = sv.Validate(vars, "101", vardef.ScopeGlobal)
|
||||
val, err = sv.Validate(vars, "1.1", vardef.ScopeGlobal)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, strconv.FormatUint(GetSysVar(vardef.TiDBCircuitBreakerPDMetadataErrorRateThresholdPct).MaxValue, 10), val)
|
||||
warn = vars.StmtCtx.GetWarnings()[1].Err
|
||||
require.Equal(t, "[variable:1292]Truncated incorrect tidb_cb_pd_metadata_error_rate_threshold_pct value: '101'", warn.Error())
|
||||
require.Equal(t, "[variable:1292]Truncated incorrect tidb_cb_pd_metadata_error_rate_threshold_pct value: '1.1'", warn.Error())
|
||||
|
||||
// valid
|
||||
val, err = sv.Validate(vars, "10", vardef.ScopeGlobal)
|
||||
val, err = sv.Validate(vars, "0.9", vardef.ScopeGlobal)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "10", val)
|
||||
require.Equal(t, "0.9", val)
|
||||
|
||||
val, err = sv.Validate(vars, "0.0", vardef.ScopeGlobal)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "0.0", val)
|
||||
}
|
||||
|
||||
func TestEnableWindowFunction(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user