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 → … → exhaustedO cronograma
Seção intitulada “O cronograma”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.
O que conta como falha
Seção intitulada “O que conta como falha”Qualquer resultado que não seja uma resposta 2xx dentro do prazo:
- status
3xx,4xxou5xx(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.
Desativação automática
Seção intitulada “Desativação automática”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.