14-16 Mar 2026
Voltar ao catalogo

AtualizarOfertasWorker processamento sequencial pode sobrepor ciclos

SCALE-H8
HighAchado ConfirmadoEscalabilidadeRodada 4

Descricao

O worker processa tenants sequencialmente com Timer.Period = 1ms. Se o ciclo completo demorar mais que 1ms (praticamente certo), o proximo ciclo inicia imediatamente sem aguardar o anterior completar.

Evidencia
`aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/AtualizarOfertasWorker.cs` — Timer.Period = 1ms com processamento sequencial de 22 tenants.
Impacto Tecnico

Com 22 tenants e lotes de 200 ofertas por tenant, ciclos podem sobrepor e causar dados inconsistentes.

Impacto de Negocio

Ofertas podem ser atualizadas duas vezes no mesmo ciclo, gerando notificacoes WhatsApp duplicadas.

Recomendacao

Implementar guard contra overlap (SemaphoreSlim(1,1)). Considerar Timer.Period mais razoavel (ex: 30 segundos).

Arquivos Afetados

aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/AtualizarOfertasWorker.cs

Acoes Relacionadas

{
  "id": "SCALE-H8",
  "title": "AtualizarOfertasWorker processamento sequencial pode sobrepor ciclos",
  "severity": "High",
  "type": "achado confirmado",
  "category": "scalability",
  "description": "O worker processa tenants sequencialmente com `Timer.Period = 1ms`. Se o ciclo completo demorar mais que 1ms (praticamente certo), o proximo ciclo inicia imediatamente sem aguardar o anterior completar.",
  "evidence": "`aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/AtualizarOfertasWorker.cs` — Timer.Period = 1ms com processamento sequencial de 22 tenants.",
  "technicalImpact": "Com 22 tenants e lotes de 200 ofertas por tenant, ciclos podem sobrepor e causar dados inconsistentes.",
  "businessImpact": "Ofertas podem ser atualizadas duas vezes no mesmo ciclo, gerando notificacoes WhatsApp duplicadas.",
  "recommendation": "Implementar guard contra overlap (`SemaphoreSlim(1,1)`). Considerar Timer.Period mais razoavel (ex: 30 segundos).",
  "files": [
    "aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/AtualizarOfertasWorker.cs"
  ],
  "pass": 4,
  "relatedActions": [
    "ACT-7.2.10"
  ]
}