-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug] [ARM] Partially acknowledged batches are not redelivered #424
Comments
So you tested 3.5.0-x86_64 and 3.3.0-aarch64? Since a batch is stored as a BK entry, you can check the topic stats for the mark-delete position and compare it with the message id you received. The result you see might because the whole batch was somehow acknowledged. BTW, if you suspect the issue is related to the DEB packages, you can try building from source and then test it again. You can try vcpkg to save your time. (Currently only 3.4.2 is supported, I will add the 3.5.0 to vcpkg soon) |
Oops, typo'd the x86_64 version, I meant to say 3.3.0-x86_64. Corrected the parent comment. And no, we're not using the Debian packages, we're compiling it ourselves for aarch32 (x86_64 as well). So, 3.3.0-aarch32. I'll try and take a look at the topic stats, and get back to you. |
So, looking at the internal stats for the topic, it does appear that the mark-delete position indicates that the full batch is indeed acknowledged for our aarch32 runs. Unsuccessful run, with missed eventsLog lines before termination of first consumer (last acknowledgement and the message associated with that acknowledgement, aarch32)(Ledger 17, entry 1, 190/309)
Mark delete position from
|
OK, this turns out to have been some strange oddity I can't reproduce in isolation. We were putting our MessageIds into a Either way, switching to a |
For example, a batched message whose size is 2 have two message IDs. id1:
ledger: 100
entry: 0
partition: -1
batch_index: 0
batch_size: 2
acker: 0b11
id2:
ledger: 100
entry: 0
partition: -1
batch_index: 1
batch_size: 2
acker: 0b11
I'm not very sure about how did you store the message ID in a raw array. But if your message ID array could contain default-constructed pulsar-client-cpp/lib/MessageId.cc Line 35 in 3f0b33b
|
From the
it means the entry of
If you didn't acknowledge batch messages of the index range pulsar-client-cpp/lib/BatchMessageAcker.h Line 74 in 3f0b33b
pulsar-client-cpp/lib/BatchMessageAcker.h Line 82 in 3f0b33b
|
Search before asking
Version
Debian GNU/Linux 10 (buster), aarch64 (but the executable is arm32), pulsar-client-cpp 3.3.0
Minimal reproduce step
pulsar::Consumer::receive
in a loop), while continuously acknowledging them asynchronously (acknowledgements are done usingpulsar::Consumer::acknowledge(const MessageId &messageId)
, wheremessageId
ispulsar::Message::getMessageId
).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?
190th
message in a batch.Are you willing to submit a PR?
The text was updated successfully, but these errors were encountered: