THSS-DB / TDB

Educational Database Management System for Software School of Tsinghua University
Mulan Permissive Software License, Version 2
13 stars 17 forks source link

fix(mvcc): fix commit xid may be accidentally reused #26

Closed hotwords123 closed 2 months ago

hotwords123 commented 3 months ago

问题: 在事务恢复阶段,MTR_BEGIN 日志对应的 trx id 会在 MvccTrxManager 类的 create_trx(int32_t trx_id) 方法中更新 current_trx_id 以避免重复使用,符合预期。但是 MTR_COMMIT 日志所使用的 commit xid 没有更新,可能会被重用而导致错误的结果。

解决方案: 增加 update_trx_id 方法用于确保 current_trx_id 不小于给定的参数。在 recover 阶段,MvccTrx 提交时应当调用该方法更新 current_trx_id

RkGrit commented 2 months ago

这个问题确认存在,你的解决方案是对的~