Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion pkg/sessionctx/vardef/tidb_vars.go
Original file line number Diff line number Diff line change
Expand Up @@ -1658,7 +1658,7 @@ const (
DefOptEnableProjectionPushDown = true
DefTiDBEnableSharedLockPromotion = false
DefTiDBTSOClientRPCMode = TSOClientRPCModeDefault
DefTiDBCircuitBreakerPDMetaErrorRatePct = 0
DefTiDBCircuitBreakerPDMetaErrorRatePct = 0.0
DefTiDBAccelerateUserCreationUpdate = false
DefTiDBEnableTSValidation = true
)
Expand Down Expand Up @@ -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 {
Expand Down
14 changes: 12 additions & 2 deletions pkg/sessionctx/variable/sysvar.go
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
12 changes: 8 additions & 4 deletions pkg/sessionctx/variable/sysvar_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down