Commit Graph

132 Commits

Author SHA1 Message Date
ekexium 6cbd7e4f97
feat: check max_execution_time for pessimistic lock requests (#1731)
ref pingcap/tidb#62960

Signed-off-by: ekexium <eke@fastmail.com>
2025-09-17 11:13:08 +00:00
you06 e0e4cda310
txn: check constraints for all keys in nextgen build (#1753)
ref tikv/tikv#11187

Signed-off-by: you06 <you1474600@gmail.com>
2025-09-11 06:28:27 +00:00
山岚 1a0daf3ee7
txn: Set "CommitRequest.UseAsyncCommit" for async commit (#1730)
Signed-off-by: Ping Yu <yuping@pingcap.com>
Signed-off-by: Juncen Yu <yujuncen@pingcap.com>

Co-authored-by: Ping Yu <yuping@pingcap.com>
2025-08-01 15:12:33 +00:00
zyguan b7e019d315
txnkv: prevent some actions from being interrupted by kill (#1665)
fix pingcap/tidb#61454

Signed-off-by: zyguan <zhongyangguan@gmail.com>
2025-06-27 07:41:09 +00:00
王超 1880726302
txn: fix the implemention of undetermined error (#1644)
close tikv/client-go#1641

Signed-off-by: Chao Wang <cclcwangchao@hotmail.com>
2025-05-20 11:30:40 +00:00
王超 d1ec4b4f67
txn: handle undetermined error in client go (#1642)
close tikv/client-go#1641

Signed-off-by: Chao Wang <cclcwangchao@hotmail.com>
2025-05-20 07:00:04 +00:00
王超 3150e385e3
txn: provide more information in commit RPC / log mvcc debug info when commit failed for `TxnLockNotFound` (#1640)
ref tikv/client-go#1631

Signed-off-by: Chao Wang <cclcwangchao@hotmail.com>
2025-05-12 11:19:20 +00:00
JT a65bf61bbe
Add txn write conflict metrics (#1551)
close tikv/client-go#1550

Signed-off-by: sujuntao <juntao.su@foxmail.com>

Co-authored-by: sujuntao <juntao.su@foxmail.com>
2025-04-29 09:08:46 +00:00
you06 183817ac81
memdb: introduce snapshot interface (#1623)
Signed-off-by: you06 <you1474600@gmail.com>

Co-authored-by: ekexium <eke@fastmail.com>
2025-04-15 14:17:37 +00:00
tangenta e53096d518
support redact key in logs (#1612)
ref pingcap/tidb#59279

Signed-off-by: tangenta <tangenta@126.com>

Co-authored-by: you06 <you1474600@gmail.com>
2025-04-01 07:17:12 +00:00
yibin 1906b778d7
Refine pessimistic lock related metrics and stats (#1620)
Signed-off-by: yibin87 <huyibin@pingcap.com>
2025-03-27 03:05:28 +00:00
ekexium ddec8237fd
memdb: prevent iterator invalidation (#1563)
ref pingcap/tidb#59153

Signed-off-by: ekexium <eke@fastmail.com>
2025-02-19 08:02:06 +00:00
you06 075b19f935
p-dml: resolve locks concurrently (#1584)
close tikv/client-go#1577

Signed-off-by: you06 <you1474600@gmail.com>
2025-02-19 01:46:31 +00:00
ekexium 405d444558
Allow setting concurrency for pipelined flush and resolveLocks (#1494)
Signed-off-by: ekexium <eke@fastmail.com>
2025-01-16 07:40:52 +00:00
Shirly d22ee9141d
txnkv/transaction/prewrite: tiny refactor HandleSingleBatch (#1529)
Signed-off-by: AndreMouche <AndreMouche@126.com>
2025-01-15 12:23:16 +00:00
ekexium 743aec19e4
Allow configuring the policy when prewrite encounters lock (#1501)
Signed-off-by: ekexium <eke@fastmail.com>
2025-01-02 05:53:15 +00:00
MyonKeminta 8e0275cc8d
Fix the problem that ttlManager may stop working if no need to lock after retry aggressive locking (#1522)
Signed-off-by: MyonKeminta <MyonKeminta@users.noreply.github.com>
2024-12-17 09:14:33 +00:00
MyonKeminta 06d7f4b923
Try to validate read ts for all RPC requests (#1513)
Signed-off-by: MyonKeminta <MyonKeminta@users.noreply.github.com>
2024-12-09 09:49:30 +00:00
Bin Zhang 89643b0e8c
Export commitTS of KVTxn (#1489)
Signed-off-by: Bin Zhang <b6g2021@gmail.com>
2024-11-27 07:15:26 +00:00
you06 8b0547ae39
clean up locks when p-dml is failed (#1486)
Signed-off-by: you06 <you1474600@gmail.com>
2024-11-18 07:21:14 +00:00
ekexium 983d7ff3d3
Fix the async broadcast & resolveFlushedLocks (#1493)
close pingcap/tidb#57213

Signed-off-by: ekexium <eke@fastmail.com>
2024-11-18 02:31:11 +00:00
ekexium bce97bbb3e
Do not broadcast txn status when heartbeat fail (#1471)
Signed-off-by: ekexium <eke@fastmail.com>
2024-10-10 05:27:19 +00:00
ekexium 527f80a186
feat: Broadcast min_commit_ts for pipelined transactions (#1458)
Signed-off-by: ekexium <eke@fastmail.com>
2024-09-25 01:34:14 +00:00
YangKeao f0ea917499
transaction: add hook for async commit to track the life cycle of the async-commit goroutine and secondary lock cleanup goroutine (#1432)
Signed-off-by: Yang Keao <yangkeao@chunibyo.icu>
2024-09-04 09:21:32 +00:00
you06 41d133b6b6
membuffer: refactor the memdb to support multi implementations (#1426)
ref pingcap/tidb#55287

Signed-off-by: you06 <you1474600@gmail.com>
2024-08-23 03:46:43 +00:00
ekexium aa8b33873f
Let memdb cache last traversed node (#1389)
* opt: let memdb cache last traversed node

Signed-off-by: ekexium <eke@fastmail.com>

* add a switch

Signed-off-by: ekexium <eke@fastmail.com>

* use atomic pointer

Signed-off-by: ekexium <eke@fastmail.com>

* fix: invalidate cache if the node is deleted

Signed-off-by: ekexium <eke@fastmail.com>

* feat: log flush_wait_duration (#1391)

Signed-off-by: ekexium <eke@fastmail.com>

* feat: add cache metrics

Signed-off-by: ekexium <eke@fastmail.com>

* opt: parent node tracking in traverse

Signed-off-by: ekexium <eke@fastmail.com>

* opt: isNull

Signed-off-by: ekexium <eke@fastmail.com>

* log: silence verbose failpoint log

Signed-off-by: ekexium <eke@fastmail.com>

* metrics: track traverse duration

Signed-off-by: ekexium <eke@fastmail.com>

* Revert "metrics: track traverse duration"

This reverts commit 05fc82bad51711c5f0fadf7936e118ed2c4990ab.

Signed-off-by: ekexium <eke@fastmail.com>

* fix: flush wait

Signed-off-by: ekexium <eke@fastmail.com>

* fix: duration logs

Signed-off-by: ekexium <eke@fastmail.com>

* refine log message

Signed-off-by: ekexium <eke@fastmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
Co-authored-by: cfzjywxk <lsswxrxr@163.com>
2024-08-08 17:20:52 +08:00
ekexium 3ac46e8171
fix: duration logs (#1405)
Signed-off-by: ekexium <eke@fastmail.com>
2024-07-31 13:12:27 +08:00
ekexium 88ce38492f
feat: log flush_wait_duration (#1391)
Signed-off-by: ekexium <eke@fastmail.com>
2024-07-23 09:16:43 +08:00
ekexium ac8fa1d73a
feat: introduce a new method MemHookSet (#1362)
Signed-off-by: ekexium <eke@fastmail.com>
2024-06-14 14:44:55 +08:00
MyonKeminta a6335a5aaf
Fix the problem that statement being oom-killed within DoneAggressiveLocking causing the transaction still in aggressive locking state (#1355)
* Quick fix the problem that statement being oom-killed within DoneAggressiveLocking causing the transaction still in aggressive locking state

Signed-off-by: MyonKeminta <MyonKeminta@users.noreply.github.com>

* Add comments to explain the change

Signed-off-by: MyonKeminta <MyonKeminta@users.noreply.github.com>

---------

Signed-off-by: MyonKeminta <MyonKeminta@users.noreply.github.com>
Co-authored-by: MyonKeminta <MyonKeminta@users.noreply.github.com>
2024-05-30 16:20:09 +08:00
ekexium c40432e3ab
feat: record flush_wait_ms in TxnInfo (#1342)
* feat: record flush_wait_ms in TxnInfo

Signed-off-by: ekexium <eke@fastmail.com>

* refactor: change FlushWaitDuration() to GetFlushMetrics()

Signed-off-by: ekexium <eke@fastmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
2024-05-15 11:13:15 +08:00
you06 6cb0704fce
fail pipelined dml when max ttl exceeded (#1329)
Signed-off-by: you06 <you1474600@gmail.com>
Co-authored-by: ekexium <eke@fastmail.com>
2024-04-30 22:52:41 +08:00
ekexium 8635acc840
feat: return error if commit ts expired is returned for a non-primary key (#1316)
Signed-off-by: ekexium <eke@fastmail.com>
Co-authored-by: cfzjywxk <lsswxrxr@163.com>
2024-04-24 19:16:26 +08:00
you06 edba2544d5
txn: abort pipelined dml when pk rollback (#1317)
* fail p-dml when ttl manager is closed

Signed-off-by: you06 <you1474600@gmail.com>

* close ttl manager when pk is rollbcked

Signed-off-by: you06 <you1474600@gmail.com>

* stablize test

Signed-off-by: you06 <you1474600@gmail.com>

* add test

Signed-off-by: you06 <you1474600@gmail.com>

* fix race

Signed-off-by: you06 <you1474600@gmail.com>

* fix leak in test

Signed-off-by: you06 <you1474600@gmail.com>

* remote testlog

Signed-off-by: you06 <you1474600@gmail.com>

* check error message

Signed-off-by: you06 <you1474600@gmail.com>

---------

Signed-off-by: you06 <you1474600@gmail.com>
2024-04-23 17:36:44 +08:00
ekexium e02b025475
log: only log the first lock in every flush or prewrite response (#1295)
* log: only log the first lock in every flush or prewrite response

Signed-off-by: ekexium <eke@fastmail.com>

* log each conflicting txn at most once

Signed-off-by: ekexium <eke@fastmail.com>

* log: ttlManager

Signed-off-by: ekexium <eke@fastmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
2024-04-18 16:47:21 +08:00
ekexium 5b3e266723
log: log the resolve progress of pipelined-dml every 30s (#1291)
Signed-off-by: ekexium <eke@fastmail.com>
2024-04-18 15:51:40 +08:00
ekexium 47891a931f
feat: stop flush when first error is met, like for prewrite (#1296)
Signed-off-by: ekexium <eke@fastmail.com>
2024-04-18 15:40:37 +08:00
ekexium a23f6cac0c
log: silence schema check log (#1290)
Signed-off-by: ekexium <eke@fastmail.com>
Co-authored-by: cfzjywxk <lsswxrxr@163.com>
2024-04-15 15:08:02 +08:00
you06 714958ccd4
implement rollback for pipelined dml (#1235)
* impl rollback for p-dml

Signed-off-by: you06 <you1474600@gmail.com>

* add test to ensure the rollback locks cannot be read

Signed-off-by: you06 <you1474600@gmail.com>

* remove TODO comment

Signed-off-by: you06 <you1474600@gmail.com>

* address comment

Signed-off-by: you06 <you1474600@gmail.com>

address comment

Signed-off-by: you06 <you1474600@gmail.com>

* resolve conflict

Signed-off-by: you06 <you1474600@gmail.com>

* lint

Signed-off-by: you06 <you1474600@gmail.com>

---------

Signed-off-by: you06 <you1474600@gmail.com>
Co-authored-by: cfzjywxk <lsswxrxr@163.com>
Co-authored-by: ekexium <eke@fastmail.com>
2024-04-09 10:27:18 +08:00
ekexium f800b05581
Distinguish identifier and name in task runner (#1271)
* refactor: distinguish identifier and name in task runner, to avoid messy metrics

Signed-off-by: ekexium <eke@fastmail.com>

* keep the original interface to avoid breaking compatibility

Signed-off-by: ekexium <eke@fastmail.com>

* log: use ctx logger

Signed-off-by: ekexium <eke@fastmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
2024-04-08 19:35:52 +08:00
ekexium 7c70c54016
Allow setting session id of KVTxn (#1270)
* allow setting session id

Signed-off-by: ekexium <eke@fastmail.com>

* comment: explain usage

Signed-off-by: ekexium <eke@fastmail.com>

* try using ctx logger as much as possible

Signed-off-by: ekexium <eke@fastmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
Co-authored-by: cfzjywxk <lsswxrxr@163.com>
2024-04-08 16:03:59 +08:00
ekexium 356eb45c5d
log: more items for diagnosing pipelined dml (#1252)
* log: more items for diagnosing pipelined dml

Signed-off-by: ekexium <eke@fastmail.com>

* log: flush duration

Signed-off-by: ekexium <eke@fastmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
Co-authored-by: cfzjywxk <lsswxrxr@163.com>
2024-04-01 10:16:58 +08:00
ekexium 87a984a72d
feat: introduce GetLocal() and BatchGet cache for PipelinedMemDB (#1212)
* feat: introduce GetLocal() for MemBuffer

Signed-off-by: ekexium <eke@fastmail.com>

* downgrade tools to 0.18.0

Signed-off-by: ekexium <eke@fastmail.com>

* fix: set flushingMemDB = nil when an error is returned from a flush

Signed-off-by: ekexium <eke@fastmail.com>

* impl BatchGet for MemBuffer

Signed-off-by: you06 <you1474600@gmail.com>

test membuffer batch get

Signed-off-by: you06 <you1474600@gmail.com>

* add Prefetch & GetPrefetchCache

Signed-off-by: you06 <you1474600@gmail.com>

* cache multi Prefetch call

Signed-off-by: you06 <you1474600@gmail.com>

* add tests

Signed-off-by: you06 <you1474600@gmail.com>

* workaround for golang ci lint failure

Signed-off-by: you06 <you1474600@gmail.com>

* replace assert with require

Signed-off-by: you06 <you1474600@gmail.com>

* workaround golangci lint

Signed-off-by: you06 <you1474600@gmail.com>

* lint

Signed-off-by: you06 <you1474600@gmail.com>

* remove prefetch interface, pipelined memdb will cache batch get result

Signed-off-by: you06 <you1474600@gmail.com>

* update tidb

Signed-off-by: you06 <you1474600@gmail.com>

* fix batch get cache when membuffer is empty

Signed-off-by: you06 <you1474600@gmail.com>

* fix returned delete value

Signed-off-by: you06 <you1474600@gmail.com>

* fix: handle resourceGroupTag of Flush

Signed-off-by: ekexium <eke@fastmail.com>

* fix: set resource group tag for committer if it's pipelined

Signed-off-by: ekexium <eke@fastmail.com>

* Update internal/unionstore/pipelined_memdb.go

Co-authored-by: ekexium <eke@fastmail.com>

* remove prefetch interface

Signed-off-by: you06 <you1474600@gmail.com>

* release mutex

Signed-off-by: you06 <you1474600@gmail.com>

* flush wait to avoid race

Signed-off-by: you06 <you1474600@gmail.com>

* fix unstopped test

Signed-off-by: you06 <you1474600@gmail.com>

* set resource group tags for committer

Signed-off-by: ekexium <eke@fastmail.com>

* skip test due to tikv image not updated yet

Signed-off-by: you06 <you1474600@gmail.com>

* skip more test

Signed-off-by: you06 <you1474600@gmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
Signed-off-by: you06 <you1474600@gmail.com>
Co-authored-by: you06 <you1474600@gmail.com>
2024-03-16 11:36:05 +08:00
ekexium 280cb0852e
feat: add pipeliend field in TxnInfo (#1228)
Signed-off-by: ekexium <eke@fastmail.com>
Co-authored-by: cfzjywxk <lsswxrxr@163.com>
2024-03-15 12:45:02 +08:00
ekexium d7000ea557
feat: pipelined dml has its own max-txn-ttl of 24 hours (#1224)
* feat: pipelined dml has its own max-txn-ttl of 24 hours

Signed-off-by: ekexium <eke@fastmail.com>

* fix gh actions

Signed-off-by: ekexium <eke@fastmail.com>

* style: fix lint

Signed-off-by: ekexium <eke@fastmail.com>

---------

Signed-off-by: ekexium <eke@fastmail.com>
2024-03-14 10:54:19 +08:00
you06 88fbc938cd
p-dml: fix unstopped resolve (#1210)
* fix unstopped resolve when the txn cross regions

Signed-off-by: you06 <you1474600@gmail.com>

* cancel context when flush done or abort

Signed-off-by: you06 <you1474600@gmail.com>

---------

Signed-off-by: you06 <you1474600@gmail.com>
Co-authored-by: ekexium <eke@fastmail.com>
2024-03-11 21:20:38 +08:00
you06 af4f9a9b6e
fix data race when collapsing ResolveLockRequest (#1209)
* fix data race when collapsing ResolveLockRequest

Signed-off-by: you06 <you1474600@gmail.com>

* comment

Signed-off-by: you06 <you1474600@gmail.com>

* sleep to wait goroutine finish

Signed-off-by: you06 <you1474600@gmail.com>

* update comment

Signed-off-by: you06 <you1474600@gmail.com>

---------

Signed-off-by: you06 <you1474600@gmail.com>
2024-03-08 13:24:15 +08:00
cfzjywxk 83ec5f2f33
add ts information in the pre split path (#1206)
Signed-off-by: cfzjywxk <cfzjywxk@gmail.com>
2024-03-06 14:46:42 +08:00
you06 8d28d3cd3a
txn: introduce pipelined memdb, Flush and BufferBatchGet for pipelined DML (#1114)
* Support pipelined memdb.

Signed-off-by: you06 <you1474600@gmail.com>

* fix mutex for pipelined memdb

Signed-off-by: you06 <you1474600@gmail.com>

---------

Signed-off-by: you06 <you1474600@gmail.com>
2024-02-23 10:24:44 +08:00
cfzjywxk 11cb7985f0
txn: enable pessimistic region rollback (#1149)
* enable pessimistic region rollback

Signed-off-by: cfzjywxk <cfzjywxk@gmail.com>

* add key range parameters

Signed-off-by: cfzjywxk <cfzjywxk@gmail.com>

* change interface to use start and end keys

Signed-off-by: cfzjywxk <cfzjywxk@gmail.com>

---------

Signed-off-by: cfzjywxk <cfzjywxk@gmail.com>
2024-02-05 15:11:26 +08:00