void AsyncBatchRpcRetryingCaller::OnError()

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


void AsyncBatchRpcRetryingCaller<REQ, RESP>::OnError(const ActionsByRegion &actions_by_region,
                                                     int32_t tries,
                                                     const folly::exception_wrapper &ew,
                                                     std::shared_ptr<ServerName> server_name) {
  std::vector<std::shared_ptr<Action>> copied_actions;
  std::vector<std::shared_ptr<RegionRequest>> region_requests;
  for (const auto &action_by_region : actions_by_region) {
    region_requests.push_back(action_by_region.second);
    for (const auto &action : action_by_region.second->actions()) {
      copied_actions.push_back(action);
    }
  }

  LogException(tries, region_requests, ew, server_name);
  if ((tries >= max_attempts_) || !ExceptionUtil::ShouldRetry(ew)) {
    FailAll(copied_actions, tries, ew, server_name);
    return;
  }
  AddError(copied_actions, ew, server_name);
  TryResubmit(copied_actions, tries);
}