From b969e5875d640b661646b022283a76c980ab6338 Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Tue, 11 Nov 2025 09:27:38 -0300 Subject: [PATCH] =?UTF-8?q?FEAT:=20Adicionada=20a=20valida=C3=A7=C3=A3o=20?= =?UTF-8?q?para=20que=20uma=20run=20do=20processAtendimento=20n=C3=A3o=20s?= =?UTF-8?q?obreponha=20a=20outra?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/server.js b/src/server.js index cf4c34e..798696b 100644 --- a/src/server.js +++ b/src/server.js @@ -8,6 +8,8 @@ const { logInfo, logError } = require('./utils/logger.js'); const app = createApp(); +let isCronRunning = false; // Variável de controle para evitar sobreposição + const PORT = process.env.PORT || 3000; app.listen(PORT, () => { @@ -16,12 +18,20 @@ app.listen(PORT, () => { // Agenda a tarefa para rodar a cada 5 minutos. logInfo('⏰ Agendando cron job para processar atendimentos a cada 5 minutos.'); cron.schedule('*/5 * * * *', async () => { + if (isCronRunning) { + logInfo('CRON: Tentativa de início, mas o processo anterior ainda está em execução. Pulando esta rodada.'); + return; + } + + isCronRunning = true; logInfo('CRON: Iniciando processamento de atendimentos...'); try { await processaAtendimentos(); logInfo('CRON: Processamento de atendimentos concluído com sucesso.'); } catch (error) { logError('CRON: Erro durante o processamento de atendimentos.', error); + } finally { + isCronRunning = false; // Garante que a trava seja liberada, mesmo em caso de erro } }); });