From 8522d15c3bf9ca5d3bb404638c1ed4f2951335db Mon Sep 17 00:00:00 2001 From: MatiasVillanueva97 Date: Thu, 19 Mar 2026 10:26:08 -0300 Subject: [PATCH] fix: end process after getting an error --- src/executionModes/baseExecutionMode.coffee | 5 +++++ src/executionModes/onceExecutionMode.coffee | 7 +++++++ src/longTaskQueueReader.coffee | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/executionModes/baseExecutionMode.coffee b/src/executionModes/baseExecutionMode.coffee index 9554dd2..c9cba69 100644 --- a/src/executionModes/baseExecutionMode.coffee +++ b/src/executionModes/baseExecutionMode.coffee @@ -1,5 +1,6 @@ _ = require "lodash" convert = require "convert-units" +Promise = require "bluebird" module.exports = class BaseExecutionMode @@ -21,3 +22,7 @@ module.exports = _nextTimeout: (reader, message) -> if _.isEmpty message then convert(reader.waitingTime).from("s").to("ms") else 0 + handleError: (err, reader, keepAliveMessage, message) -> + reader.emit "job_error", { method: "executionMode.execute", err, message } + Promise.resolve() + .tap -> keepAliveMessage.destroy() diff --git a/src/executionModes/onceExecutionMode.coffee b/src/executionModes/onceExecutionMode.coffee index a37c36a..e725bc8 100644 --- a/src/executionModes/onceExecutionMode.coffee +++ b/src/executionModes/onceExecutionMode.coffee @@ -7,3 +7,10 @@ module.exports = .tap () => reader.emit "job-finish" .tap () => process.exit 0 + handleError: (err, reader, keepAliveMessage, message) -> + super err, reader, keepAliveMessage, message + .then () => + reader.emit "job-error-finish" + process.exit 1 + + diff --git a/src/longTaskQueueReader.coffee b/src/longTaskQueueReader.coffee index 50a80e1..3afa404 100644 --- a/src/longTaskQueueReader.coffee +++ b/src/longTaskQueueReader.coffee @@ -10,6 +10,7 @@ eventsToLog = (logger) -> "job-get-messages": -> logger.info "Obteniendo mensajes nuevas" "job-finish-messages": -> logger.info "Finalizo la ejecucion de mensajes" "job-finish": -> logger.info "Finalizo la ejecucion" + "job-error-finish": -> logger.info "Finalizo la ejecucion por un error" "message-start": (message) -> logger.info "Iniciando el proceso de un mensaje", message "message-finish": (message) -> logger.info "Finalizo la ejecucion de un proceso", message "message-touch": ({ messageId, MessageId, messageText, Body }) -> logger.info "Touching #{messageId or MessageId}", messageText or Body @@ -38,8 +39,7 @@ module.exports = .execute() .tap => @_removeSafety message .catch MaxRetriesExceededException, (e) => @_sendToPoison message - .catch (err) => @emit "job_error", { method: "_execute", err, message } - .tap -> keepAliveMessage.destroy() + .catch (err) => @executionMode.handleError(err, @, keepAliveMessage, message) .then => @emit "message-finish", message _sendToPoison: (message) =>