Qual é a dívida?
src/app/api/cron/sync-integrations/route.ts roda um único loop sequencial sobre todas as integrações ativas/com erro (Datadog + GitHub Projects), dentro de uma única invocação com maxDuration = 300. Não há isolamento de tempo por integração nem por organização.
Por que é dívida?
Um board GitHub Projects grande no primeiro sync (o próprio dry-run do PR #170 levou ~17s para 198 itens — um board maior escala proporcionalmente) pode consumir boa parte do orçamento de 5 minutos. Como o loop é sequencial, isso atrasa — ou, se o total estourar maxDuration, corta — o sync de organizações que vêm depois na mesma lista naquele ciclo. Não há retry isolado por integração dentro do mesmo ciclo.
Achado por gabriel-gomes-clickbus na revisão do PR #170.
Como chegou aqui?
O GitHub Projects foi anexado ao mesmo loop que já existia para o Datadog (sync-integrations/route.ts:63-92), reaproveitando a estrutura existente em vez de introduzir isolamento — razoável para o primeiro provider adicional, mas o padrão não escala para N integrações por organização.
Plano de migração
Deadline / gatilho pra pagar
Antes de qualquer organização ter mais de um board grande de GitHub Projects, ou antes do número de integrações ativas crescer o suficiente para o loop se aproximar de 300s.
Qual é a dívida?
src/app/api/cron/sync-integrations/route.tsroda um único loop sequencial sobre todas as integrações ativas/com erro (Datadog + GitHub Projects), dentro de uma única invocação commaxDuration = 300. Não há isolamento de tempo por integração nem por organização.Por que é dívida?
Um board GitHub Projects grande no primeiro sync (o próprio dry-run do PR #170 levou ~17s para 198 itens — um board maior escala proporcionalmente) pode consumir boa parte do orçamento de 5 minutos. Como o loop é sequencial, isso atrasa — ou, se o total estourar
maxDuration, corta — o sync de organizações que vêm depois na mesma lista naquele ciclo. Não há retry isolado por integração dentro do mesmo ciclo.Achado por
gabriel-gomes-clickbusna revisão do PR #170.Como chegou aqui?
O GitHub Projects foi anexado ao mesmo loop que já existia para o Datadog (
sync-integrations/route.ts:63-92), reaproveitando a estrutura existente em vez de introduzir isolamento — razoável para o primeiro provider adicional, mas o padrão não escala para N integrações por organização.Plano de migração
Deadline / gatilho pra pagar
Antes de qualquer organização ter mais de um board grande de GitHub Projects, ou antes do número de integrações ativas crescer o suficiente para o loop se aproximar de 300s.