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(AFTER_REPORT_BACKUP_COMPL_LOG,)\
|
||||
ACT(BEFORE_WRITE_TABLE_LIST_META_INFO,)\
|
||||
ACT(BEFORE_START_TRANSFER_GET_TABLET_META,)\
|
||||
ACT(MAX_DEBUG_SYNC_POINT,)
|
||||
|
||||
DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF);
|
||||
|
||||
@ -47,6 +47,7 @@ namespace oceanbase
|
||||
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 ret = OB_SUCCESS;
|
||||
@ -461,6 +462,15 @@ bool ObTransferUtils::is_need_retry_error(const int err)
|
||||
default:
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ int ObTabletTransferInfo::init(
|
||||
int ret = OB_SUCCESS;
|
||||
if (!ls_id.is_valid() || !transfer_start_scn.is_valid_and_not_min() || transfer_seq < 0) {
|
||||
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 {
|
||||
ls_id_ = ls_id;
|
||||
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);
|
||||
}
|
||||
|
||||
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();
|
||||
commit_succ = OB_SUCC(ret);
|
||||
if (OB_TMP_FAIL(commit_trans_(ret, trans))) {
|
||||
@ -1742,6 +1750,7 @@ int ObTransferHandler::get_transfer_tablets_meta_(
|
||||
tablet_meta_list.reset();
|
||||
obrpc::ObCopyTabletInfo tablet_info;
|
||||
const int64_t start_ts = ObTimeUtil::current_time();
|
||||
DEBUG_SYNC(BEFORE_START_TRANSFER_GET_TABLET_META);
|
||||
|
||||
if (!is_inited_) {
|
||||
ret = OB_NOT_INIT;
|
||||
|
||||
Reference in New Issue
Block a user