Pub/Sub c++ client: How to prevent/reduce ack failures on at least once delivery subscription

Ouverte
#15,408 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
30/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
cpp, google-cloud

Piste de recherche

Commencez par examiner google/cloud/pubsub/internal/ack_handler_wrapper.cc:29 et la configuration du client indiquée dans le rapport, puis reproduisez les échecs avec le test de charge décrit. Suivez le comportement de l’accusé de réception et de l’extension du deadline autour des erreurs UNAVAILABLE et de la redelivery. Le travail est terminé lorsque la cause des échecs d’ack et de la redelivery retardée est identifiée, avec une méthode vérifiée permettant de les réduire ou de les éviter.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

priority: p3 type: question

Client version: v2.39.0
MaxDeadline = seconds(0) (default value)
MaxDeadlineExtension = seconds(180)
MinDeadlineExtension = seconds(60)
MaxOutstandingMessages = 250
MaxConcurrency = 1

Time to time acks are failing. There is no retry for at least once delivery. How to reduce/prevent these failures? It happens 10-20 times a day.

Some of the logged errors [file_name] - [message]

[NTPubSubLogger] /google-cloud-cpp/google/cloud/pubsub/internal/ack_handler_wrapper.cc:29 - error while trying to ack(), status=UNAVAILABLE: recvmsg:Connection reset by peer

[NTPubSubLogger] /google-cloud-cpp/google/cloud/pubsub/internal/ack_handler_wrapper.cc:29 - error while trying to ack(), status=UNAVAILABLE: 502:Bad Gateway

It sounds like network issue but I doubt that. It happens every day 10-20 times. I can reproduce it with a 10 minutes of load tests by consuming/processing 300 messages per second.

Messages are ordered by account id in the system. When this happens the messages are stuck on pub/sub for 10-20 minutes because of unacked message. initial deadline=60 seconds, max deadline = 180 seconds. I observed the cpp client logs in debug mode. There is no ModifyAckDeadlineRequest is being made but still messages redelivered between 10-20 minutes later, in fact they should arrive in a few minutes. (That's another issue and maybe not related to the client.)

Langage dominant
C++
Étoiles
660
Forks
479
Merge moyen
1 j 22 h
PR mergées (30 j)
54

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de googleapis/google-cloud-cpp

Toutes les issues de googleapis/google-cloud-cpp

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.