session: set tidb_server_memory_limit to defValue during bootstrap (#41438)
This commit is contained in:
@ -794,16 +794,21 @@ const (
|
||||
version111 = 111
|
||||
// version112 modifies the view tidb_mdl_view
|
||||
version112 = 112
|
||||
// version113 modifies the following global variables default value:
|
||||
// ...
|
||||
// [version113, version119] is the version range reserved for patches of 6.5.x
|
||||
// ...
|
||||
// version113 sets tidb_server_memory_limit to "80%"
|
||||
version113 = 113
|
||||
// version120 modifies the following global variables default value:
|
||||
// - foreign_key_checks: off -> on
|
||||
// - tidb_enable_foreign_key: off -> on
|
||||
// - tidb_store_batch_size: 0 -> 4
|
||||
version113 = 113
|
||||
version120 = 120
|
||||
)
|
||||
|
||||
// currentBootstrapVersion is defined as a variable, so we can modify its value for testing.
|
||||
// please make sure this is the largest version
|
||||
var currentBootstrapVersion int64 = version113
|
||||
var currentBootstrapVersion int64 = version120
|
||||
|
||||
// DDL owner key's expired time is ManagerSessionTTL seconds, we should wait the time and give more time to have a chance to finish it.
|
||||
var internalSQLTimeout = owner.ManagerSessionTTL + 15
|
||||
@ -924,6 +929,7 @@ var (
|
||||
upgradeToVer111,
|
||||
upgradeToVer112,
|
||||
upgradeToVer113,
|
||||
upgradeToVer120,
|
||||
}
|
||||
)
|
||||
|
||||
@ -2295,7 +2301,14 @@ func upgradeToVer113(s Session, ver int64) {
|
||||
if ver >= version113 {
|
||||
return
|
||||
}
|
||||
mustExecute(s, "UPDATE HIGH_PRIORITY %n.%n set VARIABLE_VALUE = %? where VARIABLE_NAME = %? and VARIABLE_VALUE = %?;",
|
||||
mysql.SystemDB, mysql.GlobalVariablesTable, variable.DefTiDBServerMemoryLimit, variable.TiDBServerMemoryLimit, "0")
|
||||
}
|
||||
|
||||
func upgradeToVer120(s Session, ver int64) {
|
||||
if ver >= version120 {
|
||||
return
|
||||
}
|
||||
mustExecute(s, "REPLACE HIGH_PRIORITY INTO %n.%n VALUES (%?, %?);", mysql.SystemDB, mysql.GlobalVariablesTable, variable.ForeignKeyChecks, variable.On)
|
||||
mustExecute(s, "REPLACE HIGH_PRIORITY INTO %n.%n VALUES (%?, %?);", mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBEnableForeignKey, variable.On)
|
||||
mustExecute(s, "REPLACE HIGH_PRIORITY INTO %n.%n VALUES (%?, %?);", mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBEnableHistoricalStats, variable.On)
|
||||
|
||||
@ -1418,6 +1418,112 @@ func TestTiDBGCAwareUpgradeFrom630To650(t *testing.T) {
|
||||
require.Equal(t, "0", row.GetString(1))
|
||||
}
|
||||
|
||||
func TestTiDBServerMemoryLimitUpgradeTo651_1(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
store, _ := createStoreAndBootstrap(t)
|
||||
defer func() { require.NoError(t, store.Close()) }()
|
||||
|
||||
// upgrade from 6.5.0 to 6.5.1+.
|
||||
ver112 := version112
|
||||
seV112 := createSessionAndSetID(t, store)
|
||||
txn, err := store.Begin()
|
||||
require.NoError(t, err)
|
||||
m := meta.NewMeta(txn)
|
||||
err = m.FinishBootstrap(int64(ver112))
|
||||
require.NoError(t, err)
|
||||
err = txn.Commit(context.Background())
|
||||
require.NoError(t, err)
|
||||
mustExec(t, seV112, fmt.Sprintf("update mysql.tidb set variable_value=%d where variable_name='tidb_server_version'", ver112))
|
||||
mustExec(t, seV112, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "0", variable.TiDBServerMemoryLimit))
|
||||
mustExec(t, seV112, "commit")
|
||||
unsetStoreBootstrapped(store.UUID())
|
||||
ver, err := getBootstrapVersion(seV112)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(ver112), ver)
|
||||
|
||||
// We are now in 6.5.0, tidb_server_memory_limit is 0.
|
||||
res := mustExecToRecodeSet(t, seV112, fmt.Sprintf("select * from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBServerMemoryLimit))
|
||||
chk := res.NewChunk(nil)
|
||||
err = res.Next(ctx, chk)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, chk.NumRows())
|
||||
row := chk.GetRow(0)
|
||||
require.Equal(t, 2, row.Len())
|
||||
require.Equal(t, "0", row.GetString(1))
|
||||
|
||||
// Upgrade to 6.5.1+.
|
||||
domCurVer, err := BootstrapSession(store)
|
||||
require.NoError(t, err)
|
||||
defer domCurVer.Close()
|
||||
seCurVer := createSessionAndSetID(t, store)
|
||||
ver, err = getBootstrapVersion(seCurVer)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, currentBootstrapVersion, ver)
|
||||
|
||||
// We are now in 6.5.1+.
|
||||
res = mustExecToRecodeSet(t, seCurVer, fmt.Sprintf("select * from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBServerMemoryLimit))
|
||||
chk = res.NewChunk(nil)
|
||||
err = res.Next(ctx, chk)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, chk.NumRows())
|
||||
row = chk.GetRow(0)
|
||||
require.Equal(t, 2, row.Len())
|
||||
require.Equal(t, variable.DefTiDBServerMemoryLimit, row.GetString(1))
|
||||
}
|
||||
|
||||
func TestTiDBServerMemoryLimitUpgradeTo651_2(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
store, _ := createStoreAndBootstrap(t)
|
||||
defer func() { require.NoError(t, store.Close()) }()
|
||||
|
||||
// upgrade from 6.5.0 to 6.5.1+.
|
||||
ver112 := version112
|
||||
seV112 := createSessionAndSetID(t, store)
|
||||
txn, err := store.Begin()
|
||||
require.NoError(t, err)
|
||||
m := meta.NewMeta(txn)
|
||||
err = m.FinishBootstrap(int64(ver112))
|
||||
require.NoError(t, err)
|
||||
err = txn.Commit(context.Background())
|
||||
require.NoError(t, err)
|
||||
mustExec(t, seV112, fmt.Sprintf("update mysql.tidb set variable_value=%d where variable_name='tidb_server_version'", ver112))
|
||||
mustExec(t, seV112, fmt.Sprintf("update mysql.GLOBAL_VARIABLES set variable_value='%s' where variable_name='%s'", "70%", variable.TiDBServerMemoryLimit))
|
||||
mustExec(t, seV112, "commit")
|
||||
unsetStoreBootstrapped(store.UUID())
|
||||
ver, err := getBootstrapVersion(seV112)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(ver112), ver)
|
||||
|
||||
// We are now in 6.5.0, tidb_server_memory_limit is "70%".
|
||||
res := mustExecToRecodeSet(t, seV112, fmt.Sprintf("select * from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBServerMemoryLimit))
|
||||
chk := res.NewChunk(nil)
|
||||
err = res.Next(ctx, chk)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, chk.NumRows())
|
||||
row := chk.GetRow(0)
|
||||
require.Equal(t, 2, row.Len())
|
||||
require.Equal(t, "70%", row.GetString(1))
|
||||
|
||||
// Upgrade to 6.5.1+.
|
||||
domCurVer, err := BootstrapSession(store)
|
||||
require.NoError(t, err)
|
||||
defer domCurVer.Close()
|
||||
seCurVer := createSessionAndSetID(t, store)
|
||||
ver, err = getBootstrapVersion(seCurVer)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, currentBootstrapVersion, ver)
|
||||
|
||||
// We are now in 6.5.1+.
|
||||
res = mustExecToRecodeSet(t, seCurVer, fmt.Sprintf("select * from mysql.GLOBAL_VARIABLES where variable_name='%s'", variable.TiDBServerMemoryLimit))
|
||||
chk = res.NewChunk(nil)
|
||||
err = res.Next(ctx, chk)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, chk.NumRows())
|
||||
row = chk.GetRow(0)
|
||||
require.Equal(t, 2, row.Len())
|
||||
require.Equal(t, "70%", row.GetString(1))
|
||||
}
|
||||
|
||||
func TestTiDBGlobalVariablesDefaultValueUpgradeFrom630To660(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
store, _ := createStoreAndBootstrap(t)
|
||||
|
||||
Reference in New Issue
Block a user