@@ -2704,3 +2704,59 @@ func TestGetFuncName(t *testing.T) {
27042704 }
27052705 })
27062706}
2707+
2708+ func TestWriteClusterIDToMySQLTiDBWhenUpgradingTo242 (t * testing.T ) {
2709+ ctx := context .Background ()
2710+ store , dom := CreateStoreAndBootstrap (t )
2711+ defer func () { require .NoError (t , store .Close ()) }()
2712+
2713+ // `cluster_id` is inserted for a new TiDB cluster.
2714+ se := CreateSessionAndSetID (t , store )
2715+ r := MustExecToRecodeSet (t , se , `select VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME='cluster_id'` )
2716+ req := r .NewChunk (nil )
2717+ err := r .Next (ctx , req )
2718+ require .NoError (t , err )
2719+ require .Equal (t , 1 , req .NumRows ())
2720+ require .NotEmpty (t , req .GetRow (0 ).GetBytes (0 ))
2721+ require .NoError (t , r .Close ())
2722+ se .Close ()
2723+
2724+ // bootstrap as version241
2725+ ver241 := version241
2726+ seV241 := CreateSessionAndSetID (t , store )
2727+ txn , err := store .Begin ()
2728+ require .NoError (t , err )
2729+ m := meta .NewMutator (txn )
2730+ err = m .FinishBootstrap (int64 (ver241 ))
2731+ require .NoError (t , err )
2732+ revertVersionAndVariables (t , seV241 , ver241 )
2733+ // remove the cluster_id entry from mysql.tidb table
2734+ MustExec (t , seV241 , "delete from mysql.tidb where variable_name='cluster_id'" )
2735+ err = txn .Commit (ctx )
2736+ require .NoError (t , err )
2737+ store .SetOption (StoreBootstrappedKey , nil )
2738+ ver , err := getBootstrapVersion (seV241 )
2739+ require .NoError (t , err )
2740+ require .Equal (t , int64 (ver241 ), ver )
2741+ seV241 .Close ()
2742+
2743+ // upgrade to current version
2744+ dom .Close ()
2745+ domCurVer , err := BootstrapSession (store )
2746+ require .NoError (t , err )
2747+ defer domCurVer .Close ()
2748+ seCurVer := CreateSessionAndSetID (t , store )
2749+ ver , err = getBootstrapVersion (seCurVer )
2750+ require .NoError (t , err )
2751+ require .Equal (t , currentBootstrapVersion , ver )
2752+
2753+ // check if the cluster_id has been set in the `mysql.tidb` table during upgrade
2754+ r = MustExecToRecodeSet (t , seCurVer , `select VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME='cluster_id'` )
2755+ req = r .NewChunk (nil )
2756+ err = r .Next (ctx , req )
2757+ require .NoError (t , err )
2758+ require .Equal (t , 1 , req .NumRows ())
2759+ require .NotEmpty (t , req .GetRow (0 ).GetBytes (0 ))
2760+ require .NoError (t , r .Close ())
2761+ seCurVer .Close ()
2762+ }
0 commit comments