"Ошибка бэкенда" при загрузке в таблицу BigQuery


Похоже, это была распространенная проблема, это случается время от времени в моих нагрузочных заданиях. Когда это происходит, ответа нет, но кажется, что данные все еще загружены, я задаюсь вопросом, что лучше всего сделать в моей программе? могу ли я просто всегда игнорировать его или подождать несколько секунд и продолжить?

Спасибо

1 2

1 ответ:

Есть два способа получить ошибку при выполнении задания bigquery, и правильная обработка зависит от того, как вы получите эту ошибку:

  • Вы можете получить ошибку на HTTP-запросе, которая преобразуется в код ответа HTTP.
  • Вы можете получить задание, имеющее errorResult, которое указывает на неудачу задания.

Во втором случае ваши варианты просты, потому что вы знаете, что работа не удалась. Если задание было заданием загрузки, оно не должно было изменять таблицу. В первом случае, когда вы получаете код ошибки HTTP, который можно повторить (417 timeout, 500 internalError, 503 backendError и т. д.), Это немного сложнее, так как ошибка может иметь ошибку связи, и вы не знаете, получил ли сервер сообщение успешно или нет. Чтобы быть уверенным, нужно указать свой собственный jobId. Поскольку идентификаторы заданий должны быть уникальными, вы можете повторить попытку отправки того же задания снова в случае ошибки связи, и вам не нужно беспокоиться, что оно будет выполняться дважды.

К повторять: Если вы получаете ответ HTTP 503 с reason=backendError, это ошибка соединения, которая указывает на временное состояние сети. Однако это не означает, что ваша работа провалилась.

Если вы можете найти задание, и результат задания содержит ошибку с reason=internalError, но сообщение об ошибке, которое говорит: "Backend error. Работа прервана" это означает, что ваша работа провалилась. Повторная попытка должна быть безопасной.