[BUGFIX]Virtual tables cannot retry das tasks

This commit is contained in:
AntiTopQuark 2022-11-24 03:35:42 +00:00 committed by wangzelin.wzl
parent 7952fa9f29
commit 1afa0ecf7b
2 changed files with 3 additions and 3 deletions

View File

@ -109,6 +109,7 @@ public:
const share::ObLSID &get_ls_id() const { return ls_id_; }
void set_tablet_loc(const ObDASTabletLoc *tablet_loc) { tablet_loc_ = tablet_loc; }
const ObDASTabletLoc *get_tablet_loc() const { return tablet_loc_; }
inline int64_t get_ref_table_id() const { return tablet_loc_->loc_meta_->ref_table_id_; }
virtual int decode_task_result(ObIDASTaskResult *task_result) = 0;
//远程执行填充第一个RPC结果,并返回是否还有剩余的RPC结果
virtual int fill_task_result(ObIDASTaskResult &task_result,

View File

@ -182,9 +182,8 @@ int ObDataAccessService::refresh_partition_location(ObDASRef &das_ref, ObIDASTas
int ObDataAccessService::retry_das_task(ObDASRef &das_ref, ObIDASTaskOp &task_op)
{
int ret = task_op.errcode_;
while (is_master_changed_error(ret) ||
is_partition_change_error(ret) ||
OB_REPLICA_NOT_READABLE == ret) {
while (!is_virtual_table(task_op.get_ref_table_id()) &&
(is_master_changed_error(ret) || is_partition_change_error(ret) || OB_REPLICA_NOT_READABLE == ret)) {
if (!can_fast_fail(task_op)) {
task_op.in_part_retry_ = true;
das_ref.get_exec_ctx().get_my_session()->set_session_in_retry(true, ret);