You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am investigating a weird issue with missing acks when using an async function that publishes 0..∞ messages per invocation, so the processingGuarantees config parameter is set to MANUAL.
A small percentage of messages doesn't get ack'd for some reason, and both the user and system exception counters stay at zero, so the backlog grows over the time. It seems that the function sometimes just hangs, not acknowledging nor failing the received message.
My question is: how does Pulsar handles these possible function hangs? I know, there is the timeoutMs function config parameter, but it's not applicable when using MANUAL acknowledgments.
What exactly happens to those messages that got stuck in processing? Would they be redelivered later?
And I also would like to learn about best practices when using manual acknowledgments. I can make a timer inside my function that will be failing the current record in case the processing takes too long, but this doesn't sound reliable enough, because the timer logic itself could also fail in some rare cases.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
I am investigating a weird issue with missing acks when using an async function that publishes 0..∞ messages per invocation, so the
processingGuarantees
config parameter is set to MANUAL.A small percentage of messages doesn't get ack'd for some reason, and both the user and system exception counters stay at zero, so the backlog grows over the time. It seems that the function sometimes just hangs, not acknowledging nor failing the received message.
My question is: how does Pulsar handles these possible function hangs? I know, there is the
timeoutMs
function config parameter, but it's not applicable when using MANUAL acknowledgments.What exactly happens to those messages that got stuck in processing? Would they be redelivered later?
And I also would like to learn about best practices when using manual acknowledgments. I can make a timer inside my function that will be failing the current record in case the processing takes too long, but this doesn't sound reliable enough, because the timer logic itself could also fail in some rare cases.
Beta Was this translation helpful? Give feedback.
All reactions