@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.
@@ -1980,6 +1980,7 @@ var handleMessage = async (logger2, streamingFunctionWithConfigList, message, pr
1980
1980
  var handleDLQForFailedMessages = async (logger2, producer, messages, error) => {
1981
1981
  let messagesHandledByDLQ = 0;
1982
1982
  let messagesWithoutDLQ = 0;
1983
+ let dlqErrors = 0;
1983
1984
  for (const msg of messages) {
1984
1985
  if (msg.dlq && msg.originalValue) {
1985
1986
  const deadLetterRecord = {
@@ -2009,6 +2010,7 @@ var handleDLQForFailedMessages = async (logger2, producer, messages, error) => {
2009
2010
  messagesHandledByDLQ++;
2010
2011
  } catch (dlqError) {
2011
2012
  logger2.error(`Failed to send to DLQ: ${dlqError}`);
2013
+ dlqErrors++;
2012
2014
  }
2013
2015
  } else if (!msg.dlq) {
2014
2016
  messagesWithoutDLQ++;
@@ -2018,11 +2020,25 @@ var handleDLQForFailedMessages = async (logger2, producer, messages, error) => {
2018
2020
  logger2.warn(`Cannot send to DLQ: original message value not available`);
2019
2021
  }
2020
2022
  }
2021
- if (messagesHandledByDLQ > 0 && messagesWithoutDLQ > 0) {
2023
+ const allMessagesHandled = messagesHandledByDLQ === messages.length && messagesWithoutDLQ === 0 && dlqErrors === 0;
2024
+ if (allMessagesHandled) {
2025
+ logger2.log(
2026
+ `All ${messagesHandledByDLQ} failed message(s) sent to DLQ, suppressing original error`
2027
+ );
2028
+ } else if (messagesHandledByDLQ > 0) {
2022
2029
  logger2.warn(
2023
2030
  `Partial DLQ success: ${messagesHandledByDLQ}/${messages.length} message(s) sent to DLQ`
2024
2031
  );
2032
+ if (messagesWithoutDLQ > 0) {
2033
+ logger2.error(
2034
+ `Cannot handle batch failure: ${messagesWithoutDLQ} message(s) have no DLQ configured or missing original value`
2035
+ );
2036
+ }
2037
+ if (dlqErrors > 0) {
2038
+ logger2.error(`${dlqErrors} message(s) failed to send to DLQ`);
2039
+ }
2025
2040
  }
2041
+ return allMessagesHandled;
2026
2042
  };
2027
2043
  var sendMessages = async (logger2, metrics, targetTopic, producer, messages) => {
2028
2044
  if (messages.length === 0) return;
@@ -2041,8 +2057,15 @@ var sendMessages = async (logger2, metrics, targetTopic, producer, messages) =>
2041
2057
  if (e instanceof Error) {
2042
2058
  logError(logger2, e);
2043
2059
  }
2044
- await handleDLQForFailedMessages(logger2, producer, messages, e);
2045
- throw e;
2060
+ const allHandledByDLQ = await handleDLQForFailedMessages(
2061
+ logger2,
2062
+ producer,
2063
+ messages,
2064
+ e
2065
+ );
2066
+ if (!allHandledByDLQ) {
2067
+ throw e;
2068
+ }
2046
2069
  }
2047
2070
  };
2048
2071
  var sendMessageMetrics = (logger2, metrics) => {