Skip to content

fix: sync-deployments ignora deployments sem schedule - #1104

Merged
Winzen merged 1 commit into
mainfrom
fix/sync-deployments-filter-no-schedule
Oct 6, 2026
Merged

Winzen merged 1 commit into
mainfrom
fix/sync-deployments-filter-no-schedule

Conversation

@Winzen

@Winzen Winzen commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Contexto

A página "Flow Schedules" do admin (DisabledFlowSchedule) listava qualquer deployment conhecido pelo Prefect, inclusive etapas como extract_and_load/build_and_promote que nunca têm schedule próprio — são disparadas via run_deployment() a partir do check_update, nunca por cron. Pausar/despausar essas não faz sentido (não existe schedule pra ativar ou desativar), então elas só poluíam a lista sem nenhuma utilidade prática.

Primeiro item de basedosdados/pipelines#2065 ("filtrar só flows que tem schedule").

Arquivos alterados

backend/apps/admin_data_tools/flow_monitoring.py
backend/apps/admin_data_tools/tests.py

Mudança

SyncDeploymentsView passou a ler o campo schedules que o Prefect já devolve em /deployments/filter, e decide antes de qualquer outra coisa:

for dep in client.iter_deployments():
    name = dep["name"]
    dep_id = dep["id"]
    currently_paused = dep.get("paused", False)
    has_schedule = bool(dep.get("schedules"))
    ...
def _sync_deployment(self, client, name, dep_id, currently_paused, has_schedule, results):
    if not has_schedule:
        deleted, _ = DisabledFlowSchedule.objects.filter(flow_name=name).delete()
        if deleted:
            results["removed_no_schedule"] += 1
        return
    # ...lógica existente de criar/enforçar estado, só pra quem tem schedule

Deployment sem schedule nunca mais ganha uma linha em DisabledFlowSchedule; se já tinha uma (por exemplo, o schedule foi removido depois), ela é apagada no próximo sync — sem tocar no paused do Prefect, já que isso é irrelevante sem schedule.

Benefícios

  • A lista de "Flow Schedules" do admin passa a mostrar só o que de fato tem um agendamento pra ligar/desligar.
  • Elimina ruído causado pelas etapas internas (extract_and_load/build_and_promote) de cada dataset migrado pro pipeline orientado a eventos — cada dataset migrado hoje adiciona 2-3 dessas por tabela.
  • sync-deployments passa a reportar removed_no_schedule no resumo, dando visibilidade de quantos registros órfãos foram limpos a cada sync.

A página "Flow Schedules" do admin listava qualquer deployment
conhecido pelo Prefect, incluindo etapas como extract_and_load/
build_and_promote, que nunca têm schedule próprio — são disparadas
via run_deployment() a partir do check_update. Pausar/despausar essas
não faz sentido (não há cron pra disparar), então só poluíam a lista.

sync-deployments agora só cria/mantém DisabledFlowSchedule pra
deployments com pelo menos um schedule no Prefect; registros já
existentes de deployments que perderam o schedule são removidos.

Referência: pipelines#2065.
@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 6, 2026
@Winzen Winzen self-assigned this Oct 6, 2026
@Winzen
Winzen merged commit c05b546 into main Oct 6, 2026
6 of 10 checks passed
@Winzen
Winzen deleted the fix/sync-deployments-filter-no-schedule branch October 6, 2026 18:25
github-actions Bot added a commit that referenced this pull request Oct 6, 2026
Winzen added a commit that referenced this pull request Oct 6, 2026
Ajuste visual na coluna "Flow Name" do admin de DisabledFlowSchedule (#1104): o botão "Prefect ↗" ficava depois do nome do flow — mais fácil de escanear a lista quando o botão, que é a ação mais usada, vem primeiro.
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.

1 participant