Skip to content

initGlobalVariableIfNotExists function forget close rs #61884

Description

@Defined2014

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

tidb/pkg/session/bootstrap.go

Lines 1043 to 1058 in c597cb5

func initGlobalVariableIfNotExists(s sessiontypes.Session, name string, val any) {
ctx := kv.WithInternalSourceType(context.Background(), kv.InternalTxnBootstrap)
rs, err := s.ExecuteInternal(ctx, "SELECT VARIABLE_VALUE FROM %n.%n WHERE VARIABLE_NAME=%?;",
mysql.SystemDB, mysql.GlobalVariablesTable, name)
terror.MustNil(err)
req := rs.NewChunk(nil)
err = rs.Next(ctx, req)
terror.MustNil(err)
if req.NumRows() != 0 {
return
}
mustExecute(s, "INSERT HIGH_PRIORITY IGNORE INTO %n.%n VALUES (%?, %?);",
mysql.SystemDB, mysql.GlobalVariablesTable, name, val)
}

2. What did you expect to see? (Required)

call rs.Close before return

3. What did you see instead (Required)

forget call it and caused some states of s to not be cleaned up.

If mysql.GLOBAL_VARIABLES has a clustered index, it will report an error log like

[2025/06/20 16:07:36.838 +08:00] [FATAL] [bootstrap.go:3591] ["mustExecute error"] [error="try to commit with invalid txnStartTS: 18446744073709551615"] [stack="github.com/pingcap/tidb/pkg/session.mustExecute\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:3591\ngithub.com/pingcap/tidb/pkg/session.initGlobalVariableIfNotExists\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:3327\ngithub.com/pingcap/tidb/pkg/session.upgradeToVer209\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:3181\ngithub.com/pingcap/tidb/pkg/session.upgrade\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:1556\ngithub.com/pingcap/tidb/pkg/session.runInBootstrapSession\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/session.go:3732\ngithub.com/pingcap/tidb/pkg/session.bootstrapSessionImpl\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/session.go:3458\ngithub.com/pingcap/tidb/pkg/session.BootstrapSession\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/session.go:3404\nmain.createStoreDDLOwnerMgrAndDomain\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/cmd/tidb-server/main.go:416\nmain.main\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/cmd/tidb-server/main.go:320\nruntime.main\n\t/Users/pingcap/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.6.darwin-arm64/src/runtime/proc.go:272"] [stack="github.com/pingcap/tidb/pkg/session.mustExecute\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:3591\ngithub.com/pingcap/tidb/pkg/session.initGlobalVariableIfNotExists\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:3327\ngithub.com/pingcap/tidb/pkg/session.upgradeToVer209\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:3181\ngithub.com/pingcap/tidb/pkg/session.upgrade\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/bootstrap.go:1556\ngithub.com/pingcap/tidb/pkg/session.runInBootstrapSession\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/session.go:3732\ngithub.com/pingcap/tidb/pkg/session.bootstrapSessionImpl\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/session.go:3458\ngithub.com/pingcap/tidb/pkg/session.BootstrapSession\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/pkg/session/session.go:3404\nmain.createStoreDDLOwnerMgrAndDomain\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/cmd/tidb-server/main.go:416\nmain.main\n\t/Users/pingcap/workspace/bp-tidb-release-darwin-arm64-w2tsl-build-binaries/source/tidb/cmd/tidb-server/main.go:320\nruntime.main\n\t/Users/pingcap/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.6.darwin-arm64/src/runtime/proc.go:272"]

4. What is your TiDB version? (Required)

v8.5.2, master

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions