[master] add sanity check consistency of chekcsum scn and checksum value

This commit is contained in:
chinaxing 2024-02-08 07:28:16 +00:00 committed by ob-robot
parent cda996a664
commit 8ae531d696

View File

@ -702,17 +702,23 @@ void ObTxCallbackList::get_checksum_and_scn(uint64_t &checksum, SCN &checksum_sc
checksum = batch_checksum_.calc();
checksum_scn = checksum_scn_;
}
if (checksum_scn.is_max() && checksum == 0) {
TRANS_LOG_RET(ERROR, OB_ERR_UNEXPECTED, "checksum should not be 0 if checksum_scn is max", KPC(this));
}
TRANS_LOG(INFO, "get checksum and checksum_scn", KPC(this), K(checksum), K(checksum_scn));
}
void ObTxCallbackList::update_checksum(const uint64_t checksum, const SCN checksum_scn)
{
LockGuard guard(*this, LOCK_MODE::LOCK_ITERATE);
batch_checksum_.set_base(checksum);
checksum_scn_.atomic_set(checksum_scn);
if (checksum_scn.is_max()) {
if (checksum == 0) {
TRANS_LOG_RET(ERROR, OB_ERR_UNEXPECTED, "checksum should not be 0 if checksum_scn is max", KPC(this));
}
checksum_ = checksum;
}
batch_checksum_.set_base(checksum);
checksum_scn_.atomic_set(checksum_scn);
TRANS_LOG(INFO, "update checksum and checksum_scn", KPC(this), K(checksum), K(checksum_scn));
}