Environment details
- OS: Ubuntu
- Ruby version: 3.1.2
- Gem name and version:
google-cloud-pubsub (2.15.1)
Steps to reproduce
Not sure if this is a bug or intended, but two things:
- If an error happens during publishing, using the async publisher, it is not retried unless you also supply an ordering key:
rescue StandardError => e
items = batch.items
unless batch.ordering_key.empty?
retry if publish_batch_error_retryable? e # why are retries only done when ordering key present?
This was added in: #3685. How come retrying in case of errors should not be done if you don't have an ordering key? Or is that a bug?
- If you do have an ordering key, it will retry any of the following errors, indefinitely:
PUBLISH_RETRY_ERRORS = [
GRPC::Cancelled, GRPC::DeadlineExceeded, GRPC::Internal,
GRPC::ResourceExhausted, GRPC::Unauthenticated, GRPC::Unavailable
].freeze
Consulting the documentation (https://cloud.google.com/pubsub/docs/reference/error-codes) it looks like some of these are incorrect. For instance GRPC::Unauthenticated should not be retried, and GRPC::ResourceExhausted should be retried with exponential backoff. It seems like it would be a problem if for instance GRPC::Unauthenticated keeps retrying forever?
Environment details
google-cloud-pubsub (2.15.1)Steps to reproduce
Not sure if this is a bug or intended, but two things:
This was added in: #3685. How come retrying in case of errors should not be done if you don't have an ordering key? Or is that a bug?
Consulting the documentation (https://cloud.google.com/pubsub/docs/reference/error-codes) it looks like some of these are incorrect. For instance
GRPC::Unauthenticatedshould not be retried, andGRPC::ResourceExhaustedshould be retried with exponential backoff. It seems like it would be a problem if for instanceGRPC::Unauthenticatedkeeps retrying forever?