Skip to content

fix: reconhece TimedOut como estado de falha no monitoramento de flows - #1101

Merged
Winzen merged 1 commit into
mainfrom
fix/flow-monitoring-timedout
Oct 4, 2026
Merged

Winzen merged 1 commit into
mainfrom
fix/flow-monitoring-timedout

Conversation

@Winzen

@Winzen Winzen commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Contexto

br_ms_cnes__servico_especializado teve 2 execuções seguidas falhando por timeout de conexão (TimeoutError(110, 'Connection timed out')) e não foi desativado automaticamente pelo FlowFailedWebhookView (/admin-tools/flow-failed/), apesar do mecanismo existir pra isso.

Causa

O Prefect 3 classifica timeout como state_type=FAILED com state_name="TimedOut" — um nome próprio, distinto de "Failed"/"Crashed". Três pontos do código filtravam por nome e excluíam esse estado:

  • FAILED_STATES em constants.py, usado por _is_consecutive_failure.
  • Prefect3Client.get_recent_completed_runs — o filtro de query ao Prefect já excluía TimedOut na própria busca, então a run nunca chegava a ser avaliada.
  • Prefect3Client.get_failed_task_runs — mesmo padrão, pro caso de uma task individual sofrer timeout.

Mudança

Adiciona "TimedOut" aos três pontos, mesmo estilo já usado no código (comparação por nome de estado).

Verificação

Sem suite de testes existente pra essa lógica (admin_data_tools/tests.py está vazio) e sem ambiente local funcional pra rodar o Django real (venv do repo quebrado). Validado isolando a lógica de _is_consecutive_failure num script separado contra os dados reais do caso (br_ms_cnes__servico_especializado, runs de 02/10 e 03/10): retorna False com o critério antigo, True com o fix.

br_ms_cnes__servico_especializado teve 2 runs seguidas com timeout de
conexão e não foi desativado automaticamente: FAILED_STATES e os dois
filtros de query do Prefect3Client excluíam "TimedOut" por nome, mesmo
o Prefect já classificando esse estado como state_type=FAILED.
@github-actions github-actions Bot added the prod Indica que o Pull Request está com a branch de destino (base) apontando para main label Oct 4, 2026
@Winzen Winzen self-assigned this Oct 4, 2026
@Winzen
Winzen merged commit bfac662 into main Oct 4, 2026
6 checks passed
@Winzen
Winzen deleted the fix/flow-monitoring-timedout branch October 4, 2026 18:40
github-actions Bot added a commit that referenced this pull request Oct 4, 2026
@Winzen Winzen linked an issue Oct 5, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prod Indica que o Pull Request está com a branch de destino (base) apontando para main

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Flows com timeout de conexão não eram desativados automaticamente

1 participant