Voltar ao catalogoSCALE-H8
AtualizarOfertasWorker processamento sequencial pode sobrepor ciclos
HighAchado ConfirmadoEscalabilidadeRodada 4
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"
]
}
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.