add sanity check for cluster_version in TxCtx's checkpoint

This commit is contained in:
chinaxing 2024-01-23 04:12:42 +00:00 committed by ob-robot
parent 0268dd0c6b
commit 8055fda7a9
3 changed files with 11 additions and 2 deletions

View File

@ -6333,7 +6333,11 @@ int ObPartTransCtx::get_tx_ctx_table_info_(ObTxCtxTableInfo &info)
info.tx_id_ = trans_id_;
info.ls_id_ = ls_id_;
info.cluster_id_ = cluster_id_;
info.cluster_version_ = cluster_version_;
if (cluster_version_accurate_) {
info.cluster_version_ = cluster_version_;
} else {
info.cluster_version_ = 0;
}
if (OB_FAIL(mt_ctx_.get_table_lock_store_info(info.table_lock_info_))) {
TRANS_LOG(WARN, "get_table_lock_store_info failed", K(ret), K(info));
} else {

View File

@ -161,6 +161,10 @@ int ObTxCtxTableInfo::deserialize_(const char *buf,
if (OB_SUCC(ret) && buf_len > pos) { // has remains, continue to deserialize new members
if (OB_FAIL(serialization::decode_vi64(buf, buf_len, pos, &cluster_version_))) {
TRANS_LOG(WARN, "dencode cluster_version fail", K(buf_len), K(pos), K(ret));
} else if (cluster_version_ && cluster_version_ < CLUSTER_VERSION_4_2_0_0) {
ret = OB_ERR_UNEXPECTED;
TRANS_LOG(ERROR, "cluster version malformed", K(cluster_version_), KPC(this));
ob_abort();
}
}

View File

@ -97,7 +97,8 @@ public:
table_lock_info_.reset();
}
void destroy() { reset(); }
TO_STRING_KV(K_(tx_id), K_(ls_id), K_(cluster_id), K_(tx_data_guard), K_(exec_info), K_(cluster_version));
TO_STRING_KV(K_(tx_id), K_(ls_id), K_(cluster_id), K_(tx_data_guard),
K_(exec_info), K_(table_lock_info), K_(cluster_version));
transaction::ObTransID tx_id_;
share::ObLSID ls_id_;
int64_t cluster_id_;