[Bug] [ARM] Partially acknowledged batches are not redelivered

Ouverte
#424 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

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

Piste de recherche

Commencez par la boucle Consumer::receive et le chemin asynchrone Consumer::acknowledge en utilisant Message::getMessageId, puis reproduisez l’interruption d’un batch de 309 événements dans la configuration ARM décrite. C’est terminé lorsque, après n’avoir confirmé qu’une partie d’un batch et avoir redémarré, tous les événements du batch, y compris le reste non reçu, sont distribués à nouveau.

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

Description

Search before asking
  • I searched in the issues and found nothing similar.
Version

Debian GNU/Linux 10 (buster), aarch64 (but the executable is arm32), pulsar-client-cpp 3.3.0

Minimal reproduce step
  1. Send a batch of events to the Pulsar broker (in our reproduction, it is a batch size of 309).
  2. Receive these messages (we're using pulsar::Consumer::receive in a loop), while continuously acknowledging them asynchronously (acknowledgements are done using pulsar::Consumer::acknowledge(const MessageId &messageId), where messageId is pulsar::Message::getMessageId).
  3. Terminate the program during the middle of receiving a batch (we're terminating after having received and acknowledged the 190/309 events from a batch).
  4. Resume the program.
What did you expect to see?

All of the events in the batch re-sent.

What did you see instead?

None of the events in the batch, including the ones never received are re-sent.

Anything else?
  • We log the result of the acknowledgement in the callback method, which shows us that the most we've acknowledged is the 190th message in a batch.
  • Exclusive subscription.
  • Running it on Gravitron2/3 processors.
  • We've used the same broker and test with an x86_64 Pulsar 3.3.0 Pulsar client, and we've had no issues (RHEL8).
  • We can actively see missing messages - we are just sending consecutive numbers and logging them. We're missing exactly 119, the amount remaining in the batch that we've not fully acknowledged.
  • We've tried not immediately terminating - i.e. we stop receiving messages but continue to process any callbacks, to validate that we're just not seeing 119 callbacks missing, and nothing.
Are you willing to submit a PR?
  • I'm willing to submit a PR!
Langage dominant
C++
Étoiles
72
Forks
93
Métriques de merge des PR
Aucune PR mergée en 30 j

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 apache/pulsar-client-cpp

Toutes les issues de apache/pulsar-client-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.