`ALTER USER / SET PASSWORD` pollute sys session pool by persisting `tx_isolation=READ-COMMITTED`
- 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
Assessment
This issue has not been assessed yet.