void AsyncBatchRpcRetryingCaller::TryResubmit()

in src/hbase/client/async-batch-rpc-retrying-caller.cc [211:230]


void AsyncBatchRpcRetryingCaller<REQ, RESP>::TryResubmit(
    const std::vector<std::shared_ptr<Action>> &actions, int32_t tries) {
  int64_t delay_ns;
  if (operation_timeout_ns_.count() > 0) {
    int64_t max_delay_ns = RemainingTimeNs() - ConnectionUtils::kSleepDeltaNs;
    if (max_delay_ns <= 0) {
      FailAll(actions, tries);
      return;
    }
    delay_ns = std::min(max_delay_ns, ConnectionUtils::GetPauseTime(pause_ns_.count(), tries - 1));
  } else {
    delay_ns = ConnectionUtils::GetPauseTime(pause_ns_.count(), tries - 1);
  }

  conn_->retry_executor()->add([=]() {
    retry_timer_->scheduleTimeoutFn(
        [=]() { conn_->cpu_executor()->add([=]() { GroupAndSend(actions, tries + 1); }); },
        milliseconds(TimeUtil::ToMillis(delay_ns)));
  });
}