pingcap / pingcap/tidb

`ALTER USER / SET PASSWORD` pollute sys session pool by persisting `tx_isolation=READ-COMMITTED`

Open
#66,238 0 comments 0 reactions 1 assignee Claimed by @fzzf678 View on GitHub
severity/moderate sig/sql-infra type/bug
Dominant language
Go
Stars
40.5k
Forks
6.2k
PR merge metrics
PR metrics pending

Description

## Bug Report

Please answer these questions before submitting your issue. Thanks!

### 1. Minimal reproduce step (Required)
The sys session is internal and not directly observable from SQL. Root cause is that `ALTER USER` / `SET PASSWORD` execute `SET tx_isolation = 'READ-COMMITTED'` (session-scope, persistent) on a reusable sys session, while `ReleaseSysSession()` only does `ROLLBACK` and does not reset sysvars.

https://github.com/pingcap/tidb/blob/cbb1898ccfebaac674438927157df8cc8e9247fa/pkg/executor/simple.go#L2507

https://github.com/pingcap/tidb/blob/cbb1898ccfebaac674438927157df8cc8e9247fa/pkg/executor/simple.go#L1739

### 2. What did you expect to see? (Required)
The reusable sys session returned to `SysSessionPool` should not carry persistent session-scope sysvar changes.

### 3. What did you see instead (Required)
After `ALTER USER` / `SET PASSWORD`, the borrowed sys session is returned to `SysSessionPool` with `@@session.tx_isolation = 'READ-COMMITTED'`.
Because the session is reused, this causes cross-request/session-pool pollution and makes subsequent internal SQL executed on that session unexpectedly run under RC.

### 4. What is your TiDB version? (Required)
master fcef7113f0100cd70f8685223479151e335d721c

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.