Pular para o conteúdo

Ciclo de vida e retries

Uma Entrega nasce quando o evento é publicado e termina entregue, esgotada ou cancelada. No meio, ela passa pelas situações abaixo, que são os valores do campo status na API.

status O que quer dizer
pending Na fila, esperando a vez.
processing Uma tentativa está em andamento agora.
retrying A última tentativa falhou, e a próxima está agendada. nextAttemptAt diz quando.
delivered O endpoint respondeu 2xx. Fim.
exhausted Falhou todas as tentativas do cronograma e não será mais tentada. Pode ser reenviada.
cancelled Não havia mais para onde entregar: o endpoint foi desativado antes da vez dela.
pending → processing → delivered
└─ falhou → retrying → processing → … → exhausted

Uma tentativa imediata e mais oito, com as esperas abaixo entre uma e outra:

Tentativa Espera antes dela Tempo desde a primeira
1 0
2 30 segundos 30 s
3 2 minutos 2 min 30 s
4 10 minutos 12 min 30 s
5 30 minutos 42 min 30 s
6 2 horas 2 h 43 min
7 6 horas 8 h 43 min
8 12 horas 20 h 43 min
9 24 horas 44 h 43 min

Cada espera varia 20% para mais ou para menos. É de propósito: sem essa variação, mil entregas que falharam juntas numa queda voltariam todas no mesmo segundo, e derrubariam o endpoint de novo bem quando ele se recuperava.

Esgotada a nona, a Entrega vira exhausted, aparece no painel e o dono do projeto recebe e-mail.

Qualquer resultado que não seja uma resposta 2xx dentro do prazo:

  • status 3xx, 4xx ou 5xx (redirecionamento não é seguido);
  • mais de 10 segundos no total, ou mais de 3 para conectar;
  • falha de DNS, conexão recusada, erro de TLS;
  • host que resolve para uma rede privada, checado de novo a cada entrega.

Cada tentativa registra o motivo em errorType: Timeout, ConnectionFailed, DnsFailure, TlsError, HttpError, BlockedByPolicy e outros. Liste as tentativas de uma entrega para ver.

Se um endpoint acumula 20 falhas seguidas, somando todas as entregas para ele, ele é desativado e passa a DisabledAutomatically. Daí em diante não recebe mais nada: as Entregas que estavam na fila para ele são canceladas quando chega a vez delas, e quem cadastrou o endpoint recebe e-mail.

Uma resposta 2xx no meio do caminho zera a contagem. Para religar um endpoint desativado, veja reativar.