fix(mvcc): fix commit xid may be accidentally reused #26
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
问题: 在事务恢复阶段,
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
。