@514labs/moose-lib 0.6.252-ci-1-g901efb04 → 0.6.252-ci-2-g41538689

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1967,6 +1967,7 @@ var handleMessage = async (logger2, streamingFunctionWithConfigList, message, pr
1967
1967
  var handleDLQForFailedMessages = async (logger2, producer, messages, error) => {
1968
1968
  let messagesHandledByDLQ = 0;
1969
1969
  let messagesWithoutDLQ = 0;
1970
+ let dlqErrors = 0;
1970
1971
  for (const msg of messages) {
1971
1972
  if (msg.dlq && msg.originalValue) {
1972
1973
  const deadLetterRecord = {
@@ -1996,6 +1997,7 @@ var handleDLQForFailedMessages = async (logger2, producer, messages, error) => {
1996
1997
  messagesHandledByDLQ++;
1997
1998
  } catch (dlqError) {
1998
1999
  logger2.error(`Failed to send to DLQ: ${dlqError}`);
2000
+ dlqErrors++;
1999
2001
  }
2000
2002
  } else if (!msg.dlq) {
2001
2003
  messagesWithoutDLQ++;
@@ -2005,11 +2007,25 @@ var handleDLQForFailedMessages = async (logger2, producer, messages, error) => {
2005
2007
  logger2.warn(`Cannot send to DLQ: original message value not available`);
2006
2008
  }
2007
2009
  }
2008
- if (messagesHandledByDLQ > 0 && messagesWithoutDLQ > 0) {
2010
+ const allMessagesHandled = messagesHandledByDLQ === messages.length && messagesWithoutDLQ === 0 && dlqErrors === 0;
2011
+ if (allMessagesHandled) {
2012
+ logger2.log(
2013
+ `All ${messagesHandledByDLQ} failed message(s) sent to DLQ, suppressing original error`
2014
+ );
2015
+ } else if (messagesHandledByDLQ > 0) {
2009
2016
  logger2.warn(
2010
2017
  `Partial DLQ success: ${messagesHandledByDLQ}/${messages.length} message(s) sent to DLQ`
2011
2018
  );
2019
+ if (messagesWithoutDLQ > 0) {
2020
+ logger2.error(
2021
+ `Cannot handle batch failure: ${messagesWithoutDLQ} message(s) have no DLQ configured or missing original value`
2022
+ );
2023
+ }
2024
+ if (dlqErrors > 0) {
2025
+ logger2.error(`${dlqErrors} message(s) failed to send to DLQ`);
2026
+ }
2012
2027
  }
2028
+ return allMessagesHandled;
2013
2029
  };
2014
2030
  var sendMessages = async (logger2, metrics, targetTopic, producer, messages) => {
2015
2031
  if (messages.length === 0) return;
@@ -2028,8 +2044,15 @@ var sendMessages = async (logger2, metrics, targetTopic, producer, messages) =>
2028
2044
  if (e instanceof Error) {
2029
2045
  logError(logger2, e);
2030
2046
  }
2031
- await handleDLQForFailedMessages(logger2, producer, messages, e);
2032
- throw e;
2047
+ const allHandledByDLQ = await handleDLQForFailedMessages(
2048
+ logger2,
2049
+ producer,
2050
+ messages,
2051
+ e
2052
+ );
2053
+ if (!allHandledByDLQ) {
2054
+ throw e;
2055
+ }
2033
2056
  }
2034
2057
  };
2035
2058
  var sendMessageMetrics = (logger2, metrics) => {