An exception occurred in the task, notify other tasks to exit
This commit is contained in:
		@ -1372,6 +1372,7 @@ int ObPxTransmitOp::link_ch_sets(ObPxTaskChSet &ch_set,
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ERRSIM_POINT_DEF(ERRSIM_DYNAMIC_SAMPLE_FAIL)
 | 
			
		||||
int ObPxTransmitOp::do_datahub_dynamic_sample(int64_t op_id, ObDynamicSamplePieceMsg &piece_msg)
 | 
			
		||||
{
 | 
			
		||||
  int ret = OB_SUCCESS;
 | 
			
		||||
@ -1381,6 +1382,9 @@ int ObPxTransmitOp::do_datahub_dynamic_sample(int64_t op_id, ObDynamicSamplePiec
 | 
			
		||||
    ret = OB_NOT_SUPPORTED;
 | 
			
		||||
    LOG_WARN("dynimic sample only supported in parallel execution mode", K(ret));
 | 
			
		||||
    LOG_USER_ERROR(OB_NOT_SUPPORTED, "dynimic sample in non-px mode");
 | 
			
		||||
  } else if (OB_SUCCESS != ERRSIM_DYNAMIC_SAMPLE_FAIL &&
 | 
			
		||||
             ctx_.get_px_task_id() == 0) {
 | 
			
		||||
    ret = ERRSIM_DYNAMIC_SAMPLE_FAIL;
 | 
			
		||||
  } else {
 | 
			
		||||
    const ObDynamicSampleWholeMsg *temp_whole_msg = NULL;
 | 
			
		||||
    ObPxSQCProxy &proxy = handler->get_sqc_proxy();
 | 
			
		||||
 | 
			
		||||
@ -307,7 +307,8 @@ int ObPxSQCProxy::inner_get_dh_msg(
 | 
			
		||||
          // wait 50us
 | 
			
		||||
          ob_usleep(50);
 | 
			
		||||
        }
 | 
			
		||||
      } while (common::OB_EAGAIN == ret);
 | 
			
		||||
      } while (common::OB_EAGAIN == ret &&
 | 
			
		||||
               OB_SUCC(THIS_WORKER.check_status()));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return ret;
 | 
			
		||||
 | 
			
		||||
@ -333,6 +333,7 @@ int ObPxTaskProcess::execute(ObOpSpec &root_spec)
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ERRSIM_POINT_DEF(ERRSIM_INTERRUPT_QC_FAILED)
 | 
			
		||||
int ObPxTaskProcess::do_process()
 | 
			
		||||
{
 | 
			
		||||
  LOG_TRACE("[CMD] run task", "task", arg_.task_);
 | 
			
		||||
@ -484,7 +485,10 @@ int ObPxTaskProcess::do_process()
 | 
			
		||||
               && ObVirtualTableErrorWhitelist::should_ignore_vtable_error(ret)) {
 | 
			
		||||
      // 忽略虚拟表错误
 | 
			
		||||
    } else {
 | 
			
		||||
      (void) ObInterruptUtil::interrupt_qc(arg_.task_, ret, arg_.exec_ctx_);
 | 
			
		||||
      if (OB_SUCCESS == ERRSIM_INTERRUPT_QC_FAILED) {
 | 
			
		||||
        (void) ObInterruptUtil::interrupt_qc(arg_.task_, ret, arg_.exec_ctx_);
 | 
			
		||||
      }
 | 
			
		||||
      (void) ObInterruptUtil::interrupt_tasks(arg_.get_sqc_handler()->get_sqc_init_arg().sqc_, ret);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user