Skip to content

server: remove hot-path disconnect monitor#68685

Open
King-Dylan wants to merge 1 commit into
pingcap:masterfrom
King-Dylan:codex/fix-68633-autocommit-monitor
Open

server: remove hot-path disconnect monitor#68685
King-Dylan wants to merge 1 commit into
pingcap:masterfrom
King-Dylan:codex/fix-68633-autocommit-monitor

Conversation

@King-Dylan

@King-Dylan King-Dylan commented May 27, 2026

Copy link
Copy Markdown
Member

What problem does this PR solve?

Issue Number: close #68633

Problem Summary:

PR #68237 added active connection-liveness monitoring for autocommit INSERT/UPDATE/DELETE so TiDB can notice some client disconnects before commit. That put fixed work on every eligible autocommit DML statement, including per-statement monitor goroutine/ticker/channel setup and an eager pre-commit socket probe. In the high-QPS sysbench oltp_delete case, that hot-path cost caused the 3.7% regression reported in #68633.

What changed and how does it work?

  • Remove the background disconnect monitor from the autocommit DML execution path. TiDB now only installs SQLKiller.IsConnectionAlive while the statement is executing, so existing interruption checkpoints can probe the socket synchronously with SQLKiller's normal throttle.
  • Keep result-set statements covered by installing the same callback while the result set is being drained.
  • Keep the pre-commit liveness check only as a slow-statement backstop for statements that have already run for at least 1 second, avoiding socket probes on fast OLTP DML.
  • Preserve the INSERT ... SLEEP() disconnect regression coverage by keeping the kill signal for write statements when SLEEP() observes the interruption; the statement then aborts and rolls back instead of committing partial rows.
  • Scope note: this PR does not add active liveness hooks inside client-go backoff, lock-wait, or prewrite waits. Covering those wait points without polling the TiDB hot path should be handled separately by passing a liveness/cancel callback into the relevant client-go wait points.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
  • No need to test
    • I checked and no code files have been changed.

Manual test commands:

./tools/check/failpoint-go-test.sh pkg/server/tests/commontest -run TestClientDisconnectKillsAutocommitInsert -count=1
./tools/check/failpoint-go-test.sh pkg/expression -run 'TestSleep(Vectorized)?$' -count=1
./tools/check/failpoint-go-test.sh pkg/server -run '^$' -count=1
./tools/check/failpoint-go-test.sh pkg/session -run '^$' -count=1
make bazel_prepare
make lint
git diff --check

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Documentation

  • Affects user behaviors
  • Contains syntax changes
  • Contains variable changes
  • Contains experimental features
  • Changes MySQL compatibility

Release note

Please refer to Release Notes Language Style Guide to write a quality release note.

Fix a performance regression in autocommit DML caused by hot-path disconnect monitoring overhead.

Summary by CodeRabbit

  • Bug Fixes

    • Refined connection liveness checking behavior during statement execution and improved handling of SLEEP function interruption during data modification operations.
  • Performance

    • Optimized pre-commit connection checks for fast autocommit sessions using elapsed-time thresholds.
  • Tests

    • Added test coverage for SLEEP function interruption during insert statement execution.

Review Change Stack

@ti-chi-bot

ti-chi-bot Bot commented May 27, 2026

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@ti-chi-bot ti-chi-bot Bot added do-not-merge/needs-linked-issue do-not-merge/needs-tests-checked do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels May 27, 2026
@coderabbitai

coderabbitai Bot commented May 27, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 44a87d45-4106-4c8b-8ad0-3080ba2997c8

📥 Commits

Reviewing files that changed from the base of the PR and between 8b9c82f and 0a6b80b.

📒 Files selected for processing (6)
  • pkg/expression/builtin_miscellaneous_vec.go
  • pkg/expression/evaluator_test.go
  • pkg/server/conn.go
  • pkg/server/conn_stmt.go
  • pkg/server/tests/commontest/tidb_test.go
  • pkg/session/tidb.go
💤 Files with no reviewable changes (1)
  • pkg/server/tests/commontest/tidb_test.go

📝 Walkthrough

Walkthrough

This PR refactors connection liveness monitoring from a background goroutine architecture to a simpler probe-function model. The core mechanism now installs a reusable probe into sessVars.SQLKiller.IsConnectionAlive with idempotent cleanup, updates statement-execution gating logic to reflect the new "checking" terminology, adds DML guards to prevent SQLKiller reset during active statements, optimizes pre-commit checks for short-lived sessions, and removes obsolete failpoint mocking.

Changes

Connection Liveness Probe Architecture

Layer / File(s) Summary
Probe-only architecture
pkg/server/conn.go
Rewrites setSQLKillerConnectionAlive to store a reusable isConnectionAlive probe function into sessVars.SQLKiller.IsConnectionAlive with idempotent cleanup via sync.Once and CompareAndSwap. Removes background monitor goroutine logic and the sqlkiller import.
Statement execution gating
pkg/server/conn.go, pkg/server/conn_stmt.go
Renames liveness gating helper to shouldInstallConnectionAliveDuringExecute and refactors handleStmt and executePreparedStmtAndWriteResult to use checkingConnectionAlive flag for consistent probe installation and SQLKiller-wrapped result execution decisions.
Sleep interruption DML guards
pkg/expression/builtin_miscellaneous_vec.go, pkg/expression/evaluator_test.go
Adds statement-context guards so SQLKiller.Reset() during sleep only executes when there are no TableIDs and the session is not in insert/update/delete mode. Includes test coverage for sleep interruption with StmtCtx.InInsertStmt set.
Pre-commit timing optimization
pkg/session/tidb.go
Introduces minConnectionAliveCheckBeforeCommitDuration (1 second) and extends shouldCheckConnectionAliveBeforeCommit to skip pre-commit liveness checks for sessions that started less than 1 second ago.
Test infrastructure cleanup
pkg/server/tests/commontest/tidb_test.go
Removes the enableFastConnectionAliveMonitor failpoint helper and its test call, as the new probe-based architecture no longer requires mock interval injection.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • pingcap/tidb#68201: Both PRs modify the SQLKiller connection-liveness mechanism by setting/using SQLKiller.IsConnectionAlive during statement execution and updating surrounding health-check paths.

Suggested reviewers

  • Defined2014
  • bb7133

Poem

🐰 A probe once was born with a goroutine friend,
But now it stands solo, a function to send—
No background chatter, just clean, idle flow,
Per-session and nimble, with timing in tow! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.11% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'server: remove hot-path disconnect monitor' accurately and concisely describes the main change: removing the background disconnect monitor from the autocommit DML execution hot path.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

Tools execution failed with the following error:

Failed to run tools: 13 INTERNAL: Received RST_STREAM with code 2 (Internal server error)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ti-chi-bot ti-chi-bot Bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label May 27, 2026
@tiprow

tiprow Bot commented May 27, 2026

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@King-Dylan King-Dylan marked this pull request as ready for review May 28, 2026 00:35
@ti-chi-bot ti-chi-bot Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 28, 2026
@pantheon-ai

pantheon-ai Bot commented May 28, 2026

Copy link
Copy Markdown

@King-Dylan I've received your pull request and will start the review. I'll conduct a thorough review covering code quality, potential issues, and implementation details.

⏳ This process typically takes 10-30 minutes depending on the complexity of the changes.

ℹ️ Learn more details on Pantheon AI.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
pkg/server/conn.go (1)

2212-2246: ⚡ Quick win

Add a stale-tick regression test for the generation gate.

This loop now carries the key correctness contract of the refactor. A failpoint-backed test using mockConnectionAliveMonitorInterval that lets statement N's tick arrive after statement N+1 becomes active would lock in that generation really prevents the older tick from cancelling the newer statement.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/server/conn.go` around lines 2212 - 2246, Add a failpoint-backed
regression test that exercises monitorConnectionAlive's generation gate: use the
failpoint "mockConnectionAliveMonitorInterval" to make the ticker tick slowly so
a tick from statement N can arrive after statement N+1 becomes active, then
drive connectionAliveMonitor.active and connectionAliveMonitor.generation across
two sequenced statements (via methods that call cc.getCtx and mutate
sessVars.SQLKiller.IsConnectionAlive) and assert that an older tick (captured
using SQLKiller.IsConnectionAlive returning false) does not call
sessVars.SQLKiller.SendKillSignal or cc.cancelDispatch for the newer generation;
the test should explicitly toggle connectionAliveMonitor.generation between
statements and verify only the matching-generation tick triggers cancelDispatch.
pkg/session/tidb.go (1)

277-287: ⚡ Quick win

Add a boundary test for the 10ms fast path.

Please cover both sides of this cutoff: one case that stays below 10ms and skips the probe, and one that crosses it and still performs the pre-commit check. This threshold is now part of the performance contract.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/session/tidb.go` around lines 277 - 287, Add two unit tests for
shouldCheckConnectionAliveBeforeCommit that assert behavior on both sides of
minConnectionAliveCheckBeforeCommitDuration: (1) "fast path" test: create a
variable.SessionVars with autocommit=true, not in txn, set StartTime to
time.Now() or time.Now().Add(-5*time.Millisecond) (i.e. <
minConnectionAliveCheckBeforeCommitDuration) and verify
shouldCheckConnectionAliveBeforeCommit returns false; (2) "slow path" test: same
session vars but set StartTime to
time.Now().Add(-minConnectionAliveCheckBeforeCommitDuration -
1*time.Millisecond) (i.e. > minConnectionAliveCheckBeforeCommitDuration) and
verify the function returns true. Ensure tests call
shouldCheckConnectionAliveBeforeCommit (and pass a minimal sqlexec.Statement or
nil as appropriate) and use the exact symbols
minConnectionAliveCheckBeforeCommitDuration and
shouldCheckConnectionAliveBeforeCommit so they remain robust to line changes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@pkg/server/conn.go`:
- Around line 2212-2246: Add a failpoint-backed regression test that exercises
monitorConnectionAlive's generation gate: use the failpoint
"mockConnectionAliveMonitorInterval" to make the ticker tick slowly so a tick
from statement N can arrive after statement N+1 becomes active, then drive
connectionAliveMonitor.active and connectionAliveMonitor.generation across two
sequenced statements (via methods that call cc.getCtx and mutate
sessVars.SQLKiller.IsConnectionAlive) and assert that an older tick (captured
using SQLKiller.IsConnectionAlive returning false) does not call
sessVars.SQLKiller.SendKillSignal or cc.cancelDispatch for the newer generation;
the test should explicitly toggle connectionAliveMonitor.generation between
statements and verify only the matching-generation tick triggers cancelDispatch.

In `@pkg/session/tidb.go`:
- Around line 277-287: Add two unit tests for
shouldCheckConnectionAliveBeforeCommit that assert behavior on both sides of
minConnectionAliveCheckBeforeCommitDuration: (1) "fast path" test: create a
variable.SessionVars with autocommit=true, not in txn, set StartTime to
time.Now() or time.Now().Add(-5*time.Millisecond) (i.e. <
minConnectionAliveCheckBeforeCommitDuration) and verify
shouldCheckConnectionAliveBeforeCommit returns false; (2) "slow path" test: same
session vars but set StartTime to
time.Now().Add(-minConnectionAliveCheckBeforeCommitDuration -
1*time.Millisecond) (i.e. > minConnectionAliveCheckBeforeCommitDuration) and
verify the function returns true. Ensure tests call
shouldCheckConnectionAliveBeforeCommit (and pass a minimal sqlexec.Statement or
nil as appropriate) and use the exact symbols
minConnectionAliveCheckBeforeCommitDuration and
shouldCheckConnectionAliveBeforeCommit so they remain robust to line changes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d2084ec8-9421-426a-9333-d7795f8cc871

📥 Commits

Reviewing files that changed from the base of the PR and between beb12a7 and 7b5560d.

📒 Files selected for processing (2)
  • pkg/server/conn.go
  • pkg/session/tidb.go

@codecov

codecov Bot commented May 28, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 80.76923% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 75.2870%. Comparing base (a09db00) to head (0a6b80b).
⚠️ Report is 57 commits behind head on master.

Additional details and impacted files
@@               Coverage Diff                @@
##             master     #68685        +/-   ##
================================================
- Coverage   76.3086%   75.2870%   -1.0216%     
================================================
  Files          2041       2023        -18     
  Lines        563504     568013      +4509     
================================================
- Hits         430002     427640      -2362     
- Misses       132586     140316      +7730     
+ Partials        916         57       -859     
Flag Coverage Δ
integration 41.3006% <80.7692%> (+1.5215%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
dumpling 60.4679% <ø> (ø)
parser ∅ <ø> (∅)
br 49.5158% <ø> (-13.2995%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@King-Dylan

Copy link
Copy Markdown
Member Author

/retest-required

@ti-chi-bot ti-chi-bot Bot added release-note Denotes a PR that will be considered when it comes time to generate release notes. do-not-merge/needs-triage-completed and removed do-not-merge/needs-linked-issue do-not-merge/needs-tests-checked do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. do-not-merge/needs-triage-completed labels May 28, 2026
@King-Dylan King-Dylan force-pushed the codex/fix-68633-autocommit-monitor branch from 7b5560d to c1af698 Compare May 28, 2026 05:10
@ti-chi-bot ti-chi-bot Bot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels May 28, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
pkg/server/conn.go (2)

2242-2301: ⚡ Quick win

Add a regression test for the idle-timeout restart window.

The started/notify state machine is the riskiest part of this refactor. A targeted test for “statement activates monitoring while the idle timer is trying to exit” would make future cleanup here much safer.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/server/conn.go` around lines 2242 - 2301, Add a regression test that
reproduces the "idle-timeout restart window" race between the idleTimer exit
path and a concurrent statement activation: create a test that constructs a conn
(cc) with a connectionAliveMonitor, sets active=false and started=true, starts
the monitor goroutine (the loop that reads
cc.connectionAliveMonitor.notify/started/active and uses
connectionAliveMonitorIdleTimeout), then orchestrate timing so the idleTimer
expiry branch runs while another goroutine sends on
cc.connectionAliveMonitor.notify and flips active to true (or performs the same
steps a statement would) right during the idle exit checks; assert that the
monitor does not stop (started remains true or monitor goroutine continues) and
that no unintended return occurs. Use the concrete symbols
cc.connectionAliveMonitor, cc.connectionAliveMonitor.notify,
cc.connectionAliveMonitor.started, cc.connectionAliveMonitor.active, and the
monitor goroutine entry (the loop in conn.go) to locate code; make the test
deterministic by controlling time (use a short timeout constant or a fake clock
if available) and explicit synchronization between goroutines to reliably
exercise the race window.

2242-2257: ⚡ Quick win

Document the started/active handoff here.

This idle-timeout exit path relies on a subtle CAS protocol to avoid losing wake-ups when a new statement arrives while the goroutine is trying to stop. Please spell that invariant out inline; otherwise this is hard to safely maintain.

As per coding guidelines "Comments SHOULD explain non-obvious intent, constraints, invariants, concurrency guarantees, SQL/compatibility contracts, or important performance trade-offs; SHOULD NOT restate what the code already makes clear".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/server/conn.go` around lines 2242 - 2257, Add an inline comment at the
idle-timeout exit path inside connectionAliveMonitor's goroutine (the block
using idleTimer, connectionAliveMonitor.active, and
connectionAliveMonitor.started.CompareAndSwap) that documents the CAS-based
handoff invariant: explain that "started" is used to indicate the goroutine is
running and that we must CAS it from true→false only if "active" remains false
to avoid losing a concurrent wake-up; detail that a concurrent waiter will set
active=true then set started true (or restart the loop) and therefore the
sequence of active checks plus CompareAndSwap ensures no wake-up is missed —
i.e., describe the exact ordering guarantees the code relies on so future
maintainers understand why we check active before/after the CompareAndSwap and
why we return or continue accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@pkg/server/conn.go`:
- Around line 2242-2301: Add a regression test that reproduces the "idle-timeout
restart window" race between the idleTimer exit path and a concurrent statement
activation: create a test that constructs a conn (cc) with a
connectionAliveMonitor, sets active=false and started=true, starts the monitor
goroutine (the loop that reads cc.connectionAliveMonitor.notify/started/active
and uses connectionAliveMonitorIdleTimeout), then orchestrate timing so the
idleTimer expiry branch runs while another goroutine sends on
cc.connectionAliveMonitor.notify and flips active to true (or performs the same
steps a statement would) right during the idle exit checks; assert that the
monitor does not stop (started remains true or monitor goroutine continues) and
that no unintended return occurs. Use the concrete symbols
cc.connectionAliveMonitor, cc.connectionAliveMonitor.notify,
cc.connectionAliveMonitor.started, cc.connectionAliveMonitor.active, and the
monitor goroutine entry (the loop in conn.go) to locate code; make the test
deterministic by controlling time (use a short timeout constant or a fake clock
if available) and explicit synchronization between goroutines to reliably
exercise the race window.
- Around line 2242-2257: Add an inline comment at the idle-timeout exit path
inside connectionAliveMonitor's goroutine (the block using idleTimer,
connectionAliveMonitor.active, and
connectionAliveMonitor.started.CompareAndSwap) that documents the CAS-based
handoff invariant: explain that "started" is used to indicate the goroutine is
running and that we must CAS it from true→false only if "active" remains false
to avoid losing a concurrent wake-up; detail that a concurrent waiter will set
active=true then set started true (or restart the loop) and therefore the
sequence of active checks plus CompareAndSwap ensures no wake-up is missed —
i.e., describe the exact ordering guarantees the code relies on so future
maintainers understand why we check active before/after the CompareAndSwap and
why we return or continue accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 065c2485-3779-4a0a-b90c-13fc58b43228

📥 Commits

Reviewing files that changed from the base of the PR and between 7b5560d and c1af698.

📒 Files selected for processing (2)
  • pkg/server/conn.go
  • pkg/session/tidb.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/session/tidb.go

@King-Dylan King-Dylan force-pushed the codex/fix-68633-autocommit-monitor branch 2 times, most recently from c32b8c9 to 8b9c82f Compare May 28, 2026 05:56
@King-Dylan King-Dylan marked this pull request as draft May 28, 2026 06:43
@ti-chi-bot ti-chi-bot Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 28, 2026
@King-Dylan King-Dylan force-pushed the codex/fix-68633-autocommit-monitor branch from 8b9c82f to 0a6b80b Compare May 28, 2026 18:50
@King-Dylan King-Dylan changed the title server: reduce disconnect monitor overhead server: remove hot-path disconnect monitor May 28, 2026
@King-Dylan King-Dylan marked this pull request as ready for review May 28, 2026 19:01
@ti-chi-bot ti-chi-bot Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 28, 2026
@pantheon-ai

pantheon-ai Bot commented May 28, 2026

Copy link
Copy Markdown

@King-Dylan I've received your updated pull request and will continue the review. I'll update this comment when I have something to share.

ℹ️ Learn more details on Pantheon AI.

@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown

Actionable comments posted: 0

@King-Dylan

Copy link
Copy Markdown
Member Author

/test fast_test_tiprow

@ti-chi-bot

ti-chi-bot Bot commented May 28, 2026

Copy link
Copy Markdown

@King-Dylan: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test build
/test check-dev
/test check-dev2
/test mysql-test
/test pull-br-integration-test
/test pull-build-next-gen
/test pull-integration-e2e-test
/test pull-integration-realcluster-test-next-gen
/test pull-lightning-integration-test
/test pull-mysql-client-test
/test pull-mysql-client-test-next-gen
/test pull-unit-test-ddlv1
/test pull-unit-test-next-gen
/test unit-test

The following commands are available to trigger optional jobs:

/test pingcap/tidb/canary_ghpr_unit_test
/test pull-br-integration-test-next-gen
/test pull-check-deps
/test pull-common-test
/test pull-e2e-test
/test pull-error-log-review
/test pull-integration-common-test
/test pull-integration-copr-test
/test pull-integration-ddl-test
/test pull-integration-ddl-test-next-gen
/test pull-integration-e2e-test-next-gen
/test pull-integration-jdbc-test
/test pull-integration-mysql-test
/test pull-integration-nodejs-test
/test pull-integration-python-orm-test
/test pull-mysql-test-next-gen
/test pull-sqllogic-test
/test pull-tiflash-integration-test

Use /test all to run the following jobs that were automatically triggered:

pingcap/tidb/ghpr_build
pingcap/tidb/ghpr_check
pingcap/tidb/ghpr_check2
pingcap/tidb/ghpr_mysql_test
pingcap/tidb/ghpr_unit_test
pingcap/tidb/pull_build_next_gen
pingcap/tidb/pull_integration_e2e_test
pingcap/tidb/pull_integration_realcluster_test_next_gen
pingcap/tidb/pull_mysql_client_test
pingcap/tidb/pull_mysql_client_test_next_gen
pingcap/tidb/pull_unit_test_next_gen
pull-check-deps
pull-error-log-review
Details

In response to this:

/test fast_test_tiprow

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@King-Dylan

Copy link
Copy Markdown
Member Author

/test fast_test_tiprow

@ti-chi-bot

ti-chi-bot Bot commented May 28, 2026

Copy link
Copy Markdown

@King-Dylan: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test build
/test check-dev
/test check-dev2
/test mysql-test
/test pull-br-integration-test
/test pull-build-next-gen
/test pull-integration-e2e-test
/test pull-integration-realcluster-test-next-gen
/test pull-lightning-integration-test
/test pull-mysql-client-test
/test pull-mysql-client-test-next-gen
/test pull-unit-test-ddlv1
/test pull-unit-test-next-gen
/test unit-test

The following commands are available to trigger optional jobs:

/test pingcap/tidb/canary_ghpr_unit_test
/test pull-br-integration-test-next-gen
/test pull-check-deps
/test pull-common-test
/test pull-e2e-test
/test pull-error-log-review
/test pull-integration-common-test
/test pull-integration-copr-test
/test pull-integration-ddl-test
/test pull-integration-ddl-test-next-gen
/test pull-integration-e2e-test-next-gen
/test pull-integration-jdbc-test
/test pull-integration-mysql-test
/test pull-integration-nodejs-test
/test pull-integration-python-orm-test
/test pull-mysql-test-next-gen
/test pull-sqllogic-test
/test pull-tiflash-integration-test

Use /test all to run the following jobs that were automatically triggered:

pingcap/tidb/ghpr_build
pingcap/tidb/ghpr_check
pingcap/tidb/ghpr_check2
pingcap/tidb/ghpr_mysql_test
pingcap/tidb/ghpr_unit_test
pingcap/tidb/pull_build_next_gen
pingcap/tidb/pull_integration_e2e_test
pingcap/tidb/pull_integration_realcluster_test_next_gen
pingcap/tidb/pull_mysql_client_test
pingcap/tidb/pull_mysql_client_test_next_gen
pingcap/tidb/pull_unit_test_next_gen
pull-check-deps
pull-error-log-review
Details

In response to this:

/test fast_test_tiprow

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@King-Dylan

Copy link
Copy Markdown
Member Author

/test fast_test_tiprow

@ti-chi-bot

ti-chi-bot Bot commented May 28, 2026

Copy link
Copy Markdown

@King-Dylan: The specified target(s) for /test were not found.
The following commands are available to trigger required jobs:

/test build
/test check-dev
/test check-dev2
/test mysql-test
/test pull-br-integration-test
/test pull-build-next-gen
/test pull-integration-e2e-test
/test pull-integration-realcluster-test-next-gen
/test pull-lightning-integration-test
/test pull-mysql-client-test
/test pull-mysql-client-test-next-gen
/test pull-unit-test-ddlv1
/test pull-unit-test-next-gen
/test unit-test

The following commands are available to trigger optional jobs:

/test pingcap/tidb/canary_ghpr_unit_test
/test pull-br-integration-test-next-gen
/test pull-check-deps
/test pull-common-test
/test pull-e2e-test
/test pull-error-log-review
/test pull-integration-common-test
/test pull-integration-copr-test
/test pull-integration-ddl-test
/test pull-integration-ddl-test-next-gen
/test pull-integration-e2e-test-next-gen
/test pull-integration-jdbc-test
/test pull-integration-mysql-test
/test pull-integration-nodejs-test
/test pull-integration-python-orm-test
/test pull-mysql-test-next-gen
/test pull-sqllogic-test
/test pull-tiflash-integration-test

Use /test all to run the following jobs that were automatically triggered:

pingcap/tidb/ghpr_build
pingcap/tidb/ghpr_check
pingcap/tidb/ghpr_check2
pingcap/tidb/ghpr_mysql_test
pingcap/tidb/ghpr_unit_test
pingcap/tidb/pull_build_next_gen
pingcap/tidb/pull_integration_e2e_test
pingcap/tidb/pull_integration_realcluster_test_next_gen
pingcap/tidb/pull_mysql_client_test
pingcap/tidb/pull_mysql_client_test_next_gen
pingcap/tidb/pull_unit_test_next_gen
pull-check-deps
pull-error-log-review
Details

In response to this:

/test fast_test_tiprow

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@King-Dylan

Copy link
Copy Markdown
Member Author

/retest

@King-Dylan

Copy link
Copy Markdown
Member Author

/retest-required

@bb7133 bb7133 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ti-chi-bot ti-chi-bot Bot added the needs-1-more-lgtm Indicates a PR needs 1 more LGTM. label Jun 3, 2026
@King-Dylan King-Dylan requested a review from Defined2014 June 4, 2026 04:11
@ti-chi-bot

ti-chi-bot Bot commented Jun 4, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: bb7133, Defined2014
Once this PR has been reviewed and has the lgtm label, please assign xuhuaiyu for approval. For more information see the Code Review Process.
Please ensure that each of them provides their approval before proceeding.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot Bot added lgtm and removed needs-1-more-lgtm Indicates a PR needs 1 more LGTM. labels Jun 4, 2026
@ti-chi-bot

ti-chi-bot Bot commented Jun 4, 2026

Copy link
Copy Markdown

[LGTM Timeline notifier]

Timeline:

  • 2026-06-03 21:14:33.2758059 +0000 UTC m=+389774.346123290: ☑️ agreed by bb7133.
  • 2026-06-04 04:18:57.819646886 +0000 UTC m=+415238.889964276: ☑️ agreed by Defined2014.

@King-Dylan King-Dylan added the needs-cherry-pick-release-8.5 Should cherry pick this PR to release-8.5 branch. label Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm needs-cherry-pick-release-8.5 Should cherry pick this PR to release-8.5 branch. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

There is a 3.7% performance regression in sysbench after PR#68237

3 participants