scan getData 陷入了死循环,直到 GC life time

Bug 反馈

tikv pd 版本 v4.0.2
client 版本 github.com/pingcap/tidb v1.1.0-beta.0.20200731004449-a63fa79d90c5

scan getData 陷入了死循环,直到 [tikv:9006]GC life time is shorter than transaction duration

相关日志:

[2021/09/14 16:31:29.994 +08:00] [DEBUG] [scan.go:157] ["txn getData"] [nextStartKey=] [nextEndKey=00646f6e6779696e672f7e4d4438383033394537453944362f7e446174612f40234d4438383033394537453944365f313631353534353630305f4d44502e786d6c2e677a] [reverse=true] [txnStartTS=427716323047637140]
[2021/09/14 16:31:29.966 +08:00] [DEBUG] [scan.go:157] ["txn getData"] [nextStartKey=] [nextEndKey=00646f6e6779696e672f7e4d4438383033394537453944362f7e446174612f40234d4438383033394537453944365f313631353534353630305f4d44502e786d6c2e677a] [reverse=true] [txnStartTS=427716323047637140]
[2021/09/14 16:31:29.973 +08:00] [DEBUG] [scan.go:157] ["txn getData"] [nextStartKey=] [nextEndKey=00646f6e6779696e672f7e4d4438383033394537453944362f7e446174612f40234d4438383033394537453944365f313631353534353630305f4d44502e786d6c2e677a] [reverse=true] [txnStartTS=427716323047637140]

添加 debug 日志发现, loadRegion 的时候 GetRegion GetPrevRegion 获取的一直是同一个 region

[2021/09/14 16:31:29.995 +08:00] [DEBUG] [region_cache.go:967] [GetRegion][region-id=1384954] 
[2021/09/14 16:31:29.997 +08:00] [DEBUG] [region_cache.go:958] [GetPrevRegion][region-id=1384954]

【问题复现步骤】

IterReverse 通过 Next 方法遍历,直到这个 key 是某个 region 的 StartKey 的时候, 出现死循环

这个问题是否在后续的版本中修复,应该更新到哪个版本?

v4.0.2 版本比较早期了,可以考虑升级到 v4.0.14 然后再测试下。

v4.0.14 对应的 client 是什么版本, 我现在使用的是 github.com/pingcap/tidb v1.1.0-beta.0.20200731004449-a63fa79d90c5

需要更新吗?

你这里的 client 指的是 tidb-server 吗?这个需要和集群保持一致。

没有使用 tidb-server, 直接通过上面版本的 tikv client 库直接访问 tikv

IterReverse 通过 Next 方法遍历,直到这个 key 是某个 region 的 StartKey 的时候, 出现死循环

这个 region 的 start key 是什么?

region 相关信息如下

  "id": 1384954,
  "start_key": "00646F6E6779696EFF672F7E4D44383830FF3339453745394436FF2F7E446174612F40FF234D443838303339FF4537453944365F31FF3631353534353630FF305F4D44502E786DFF6C2E677A00000000FB",
  "end_key": "00646F6E6779696EFF672F7E4D44383830FF3339453746413741FF2F7E446174612F40FF234D443838303339FF4537464137415F31FF3630373731343130FF305F4D44502E786DFF6C2E677A00000000FB",