Какие исключения из очереди задач, вызванные add (), имеют смысл повторить попытку? - PullRequest
0 голосов
/ 17 февраля 2012

Я хочу добавить защитную логику обработки / повторения исключений вокруг моего (Java) кода, которая ставит задачи в App Engine. Просматривая документацию на предмет потенциальных исключений, я вижу несколько кандидатов, которые могут иметь смысл поймать и обработать при повторной попытке, но документация немного расплывчата, поэтому я подумал, что увижу то, что другие считают стоящим.

Вот те, на которые я смотрю, и их описания из документов:

  • InternalFailureException - Внутренняя ошибка очереди задач.
  • TransientFailureException - Периодический сбой.
  • QueueFailureException - Неуказанный сбой очереди.
  • TransactionalTaskException - сбой операции очереди, вызванный исключением хранилища данных.

Единственное, для чего в документах прямо указано, что повторная попытка может быть полезна, это TransientFailureException.

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

1 Ответ

0 голосов
/ 24 февраля 2012

Я получил некоторые отзывы по этому вопросу в группе Google App Engine (см. эту ветку ), поэтому я решил опубликовать здесь резюме, чтобы помочь другим.

Некоторое исследованиеGAE source показал, что:

  • внутренние коды ошибок TASK_ALREADY_EXISTS и TOMBSTONED_TASK сопоставлены с TaskAlreadyExistsException
  • TransactionalTaskException используется для всех ошибок хранилища данных, которые возникают *.1012 *
  • QueueFailureException является всеобъемлющим исключением для любых внутренних кодов ошибок, не имеющих явно отображенных типов исключений

Роберт Клюин также дал следующий совет (перефразируя здесь):

  • рассмотреть возможность обработки TaskAlreadyExistsException.Повторить не имеет смысла, но в некоторых случаях вы можете проглотить эту ошибку, а в других поднять ее.
  • рассмотрите обработку превышения крайнего срока и тайм-аутов.В частности, он упомянул, что тайм-ауты могут маскироваться под внутренние ошибки (InternalFailureException в Java).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...