Deadlock found when trying to get lock

  1. 我不太懂 flink,不过我就把它理解为 datapipline(kafka) → data compute module → tidb;
  2. 既然 data compute module 可以确定相同 user 在相同 slot 中,那么这个 slot 的向下同步的时候存在并发 sink 吗?比如,每次是100条记录,为了加快同步效率,可能同一个 solt 开 10 个 tidb connection(pool),这就回造成虽然相同 solt,但是如果相同 solt 拆到 connection 的时候也可能会存在兵法冲突;
  3. data compute module → tidb table 的过程中,只有 data compute module 对这个表操作吗?有没有可能是,dead lock 由 2 个 txn 产生,1 产生自 flink sink,另一个产生自其他同步流造成的死锁?
  4. 既然 user_id=xx and reg_date=xx and game_version=xx 也可以保证唯一吗?因为少了 batch_sn 会不会产生更新干扰? 感觉更像是这块有更新干扰🤔,因为 tidb 底下是 si 取数据,也就是说这条数据的 tso 已经写下去了并且 commit 了。之后才有同一行数据 2 txn 的死锁
  5. 死锁的时候,日志中有 死锁 key 的相关信息吗?也可以顺着这个思路,往下追一下。
  6. 常见死锁,如下图