docs: private void askTimeoutJob(Channel channel, final List<JobPo> jobPos) {
          try {
              RemotingServerDelegate remotingServer = appContext.getRemotingServer();
              List<String> jobIds = new ArrayList<String>(jobPos.size());
              for (JobPo jobPo : jobPos) {
                  jobIds.add(jobPo.getJobId());
              }
              JobAskRequest requestBody = appContext.getCommandBodyWrapper().wrapper(new JobAskRequest());
              requestBody.setJobIds(jobIds);
              RemotingCommand request = RemotingCommand.createRequestCommand(JobProtos.RequestCode.JOB_ASK.code(), requestBody);
              remotingServer.invokeAsync(channel, request, new AsyncCallback() {
                  @Override
                  public void operationComplete(ResponseFuture responseFuture) {
                      RemotingCommand response = responseFuture.getResponseCommand();
                      if (response != null && RemotingProtos.ResponseCode.SUCCESS.code() == response.getCode()) {
                          JobAskResponse responseBody = response.getBody();
                          List<String> deadJobIds = responseBody.getJobIds();
                          if (CollectionUtils.isNotEmpty(deadJobIds)) {
  
                              // 睡了1秒再修复, 防止任务刚好执行完正在传输中. 1s可以让完成的正常完成
                              QuietUtils.sleep(appContext.getConfig().getParameter(ExtConfig.JOB_TRACKER_FIX_EXECUTING_JOB_WAITING_MILLS, 1000L));
  
                              for (JobPo jobPo : jobPos) {
                                  if (deadJobIds.contains(jobPo.getJobId())) {
                                      fixDeadJob(jobPo);
                                  }
                              }
                          }
                      }
                  }
              });
          } catch (RemotingSendException e) {
              LOGGER.error("Ask timeout Job error, ", e);
          }
  
      }