Fix transfer trans timeout return 4002 or 4016 bug.
This commit is contained in:
@ -601,6 +601,7 @@ class ObString;
|
|||||||
ACT(BEFORE_ALTER_TABLE_EXCHANGE_PARTITION,)\
|
ACT(BEFORE_ALTER_TABLE_EXCHANGE_PARTITION,)\
|
||||||
ACT(AFTER_REPORT_BACKUP_COMPL_LOG,)\
|
ACT(AFTER_REPORT_BACKUP_COMPL_LOG,)\
|
||||||
ACT(BEFORE_WRITE_TABLE_LIST_META_INFO,)\
|
ACT(BEFORE_WRITE_TABLE_LIST_META_INFO,)\
|
||||||
|
ACT(BEFORE_START_TRANSFER_GET_TABLET_META,)\
|
||||||
ACT(MAX_DEBUG_SYNC_POINT,)
|
ACT(MAX_DEBUG_SYNC_POINT,)
|
||||||
|
|
||||||
DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF);
|
DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF);
|
||||||
|
|||||||
@ -47,6 +47,7 @@ namespace oceanbase
|
|||||||
namespace storage
|
namespace storage
|
||||||
{
|
{
|
||||||
|
|
||||||
|
ERRSIM_POINT_DEF(EN_TRANSFER_ALLOW_RETRY);
|
||||||
int ObStorageHAUtils::get_ls_leader(const uint64_t tenant_id, const share::ObLSID &ls_id, common::ObAddr &leader)
|
int ObStorageHAUtils::get_ls_leader(const uint64_t tenant_id, const share::ObLSID &ls_id, common::ObAddr &leader)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
@ -461,6 +462,15 @@ bool ObTransferUtils::is_need_retry_error(const int err)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ERRSIM
|
||||||
|
int tmp_ret = OB_SUCCESS;
|
||||||
|
tmp_ret = EN_TRANSFER_ALLOW_RETRY ? : OB_SUCCESS;
|
||||||
|
if (OB_TMP_FAIL(tmp_ret)) {
|
||||||
|
bool_ret = false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return bool_ret;
|
return bool_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,7 @@ int ObTabletTransferInfo::init(
|
|||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
if (!ls_id.is_valid() || !transfer_start_scn.is_valid_and_not_min() || transfer_seq < 0) {
|
if (!ls_id.is_valid() || !transfer_start_scn.is_valid_and_not_min() || transfer_seq < 0) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("init transfer info get invalid agument", K(ret), K(ls_id), K(transfer_start_scn), K(transfer_seq));
|
LOG_WARN("init transfer info get invalid argument", K(ret), K(ls_id), K(transfer_start_scn), K(transfer_seq));
|
||||||
} else {
|
} else {
|
||||||
ls_id_ = ls_id;
|
ls_id_ = ls_id;
|
||||||
transfer_start_scn_ = transfer_start_scn;
|
transfer_start_scn_ = transfer_start_scn;
|
||||||
|
|||||||
@ -548,6 +548,14 @@ int ObTransferHandler::do_with_start_status_(const share::ObTransferTaskInfo &ta
|
|||||||
DEBUG_SYNC(BEFORE_TRANSFER_START_COMMIT);
|
DEBUG_SYNC(BEFORE_TRANSFER_START_COMMIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (OB_FAIL(ret)) {
|
||||||
|
if (timeout_ctx.is_timeouted()) {
|
||||||
|
//overwrite ret
|
||||||
|
LOG_WARN("transfer trans already timeout, error code will change to timeout", K(ret));
|
||||||
|
ret = OB_TIMEOUT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int64_t trans_commit_begin = ObTimeUtil::current_time();
|
int64_t trans_commit_begin = ObTimeUtil::current_time();
|
||||||
commit_succ = OB_SUCC(ret);
|
commit_succ = OB_SUCC(ret);
|
||||||
if (OB_TMP_FAIL(commit_trans_(ret, trans))) {
|
if (OB_TMP_FAIL(commit_trans_(ret, trans))) {
|
||||||
@ -1742,6 +1750,7 @@ int ObTransferHandler::get_transfer_tablets_meta_(
|
|||||||
tablet_meta_list.reset();
|
tablet_meta_list.reset();
|
||||||
obrpc::ObCopyTabletInfo tablet_info;
|
obrpc::ObCopyTabletInfo tablet_info;
|
||||||
const int64_t start_ts = ObTimeUtil::current_time();
|
const int64_t start_ts = ObTimeUtil::current_time();
|
||||||
|
DEBUG_SYNC(BEFORE_START_TRANSFER_GET_TABLET_META);
|
||||||
|
|
||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
@ -3229,4 +3238,4 @@ int ObTransferHandler::do_clean_diagnose_info_()
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user