Open matejdro opened 4 days ago
I wonder if this has something to do with ack IDs being ack'd more than once. It's a server error being returned, though, so someone else might know more. @maheshgattani ?
We added a lot of logging and as far as we can tell, we never ack the message more than once. Also, this broken message will eventually expire and be re-delivered, which signifies that it was not acked.
Environment details
@google-cloud/pubsub
version: 4.5.0Steps to reproduce
subscriberClient.pull({ 1, returnImmediately: false, subscription: mySubscriptionId, })
subscriberClient.acknowledge({ ackIds: [message.ackId!], subscription: mySubscriptionId })
(at most several seconds after receiving, so message could not have expired yet)Most of the time above works fine, but rarely, acknowledgement will fail with the following error:
Relevant error seems to be
EXACTLY_ONCE_ACKID_FAILURE
, but we cannot find any documentation for this error anywhere.We are not sure what causes this. After this happens the received message will remain "un-ackable". The only workaround we found so far is to let the message expire and get redelivered. Redelivered message can in most cases be acked normally.
Any ideas what could cause this?