apache / apache/pulsar-client-cpp

Shared consumers do not receive messages in C++ and acknowledged messages get redelivered

オープン
#84 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C++
スター
71
フォーク
90
平均マージ
2時間 33分
マージ済み PR(30日)
3

説明

When using shared subscriptions with the C++ client we see the following issues:

* The consumers stop consuming silently after a period of time, without any obvious reasons (e.g. connection failure) or any unusual log messages. The issue seems to happen randomly. Recreating the consumers with the same parameters seems to fix this issue for a while. We are experiencing this issue both using the synchronous and the async APIs. The topic is non-partitioned persistent topic. The server is a standalone server. We only see this problem with shared consumers, it doesn't seem to happen if we change to exclusive.

* Acknowledged messages get redelivered to shared consumers in C++ after subscription. It seems to happen both with synchronous and async acknowledgment. The API docs on acknowledge() states that acknowleded messages should not be redelivered.

**To Reproduce**
Create shared consumers in C++ for a topic and call receive. The problem seems to happen randomly but relatively frequently. It does not occur with exclusive consumers.

**Expected behavior**
* At least one of the shared consumers should receive each message.
* Acknowledged messages should not be redelivered.

**Desktop (please complete the following information):**
- RedHat 7.x

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Issue に記載されている C++ の shared-consumer フローから始め、同期および非同期の receive 呼び出しと acknowledge 呼び出しの両方を対象にします。パーティション化されていない永続的な topic 上で shared consumers を使用して再現し、exclusive consumers と比較して、すべてのメッセージが少なくとも 1 つの consumer に配信され、acknowledge 済みのメッセージが再配信されないことを確認します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cpp
領域
distributed-systems
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。