question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Sending Individual ACK for multiple messages in one command.

See original GitHub issue

Shared subscription can only employ Individual ACK, which may limit the throughput. However, from PulsarApi.proto we find that Pulsar supports acknowledging multiple messages in one command even in Individual mode.

Java client supports this feature by adding acknowledgeGroupTime setting in ConsumerBuilder, but C++ client does not.

So the questions are:

  1. In Individual ACK mode, does sending multiple message IDs in one CommandAck really help achieving higher throughput?
  2. If we implement this feature in C++ client (and later contribute back to community), shall it be implemented as an ACK interface, or as a setting like in Java. (Seems the previous one is easier.)
  3. If it’s implemented as an ACK interface, what should it be called? acknowledgeGroup or groupAcknowledge? We prefer the term group, because the C++ client has a data structure called BatchAcknowledgeTracker, which may confuse the code reader when we have two similar names for different purpose.

BTW

Does acknowledge interface in C++ client really send ACK synchronously?

It actually calls the acknowledgeAsync and waits for triggering of the callback. But the doAcknowledge calls returns immediately anyway with ResultOk, because sending command is actually an asynchronous operation? Is this a known feature/issue? Or I just misunderstand the implementation? Is there any opened issues related to this?

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:8 (8 by maintainers)

github_iconTop GitHub Comments

1reaction
tongsucncommented, Feb 27, 2020

FYI. The feature is almost done, For now, it improves the throughput bottleneck in shared subscription in our scenario, I’ll firstly try it in production envrionment to verify more. After that, I’ll add related necessary building and testing code and submit a new pull request.

0reactions
tongsucncommented, Mar 13, 2020

PR is created. However, the Backwards Compatibility CI checking failed because of docker storage. Retry later.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Java server socket sending multiple messages issue
When it sends individual commands it works fine. The problem comes when it sends multiple commands, only the first one is successful. We...
Read more >
The reason why TCP sends consecutive ACKs all together
The key here is understanding that just because an ack is sent for every packet (or, more commonly today, every other packet due...
Read more >
What is ACK? | Definition from TechTarget
ACK is an abbreviation for acknowledgment or acknowledged. ... the successful reception and recognition of specific commands, such as power-down or standby.
Read more >
Understanding TCP Sequence and Acknowledgment Numbers
This sequence number is included on each transmitted packet, and acknowledged by the opposite host as an acknowledgement number to inform the ...
Read more >
16. Command Acknowledgement — AMPS User Guide 5.2.1.0 ...
Acknowledgements for a specific command or subscription are delivered as a part of the message stream for that command. In an AMPS client,...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found