Sitelet https://github.com/googleapis/google-cloud-ruby/issues/20573
Skip to content

Pub/Sub: Retries when publishing #20573

Description

@jensljungblad

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:

  1. 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?

  1. 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?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    api: pubsubIssues related to the Pub/Sub API.type: cleanupAn internal cleanup or hygiene concern.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions