zliang-min opened a new issue, #455:
URL: https://github.com/apache/pulsar-client-cpp/issues/455

   ### Search before asking
   
   - [X] I searched in the 
[issues](https://github.com/apache/pulsar-client-cpp/issues) and found nothing 
similar.
   
   
   ### Version
   
   Pulsar 3.3.2 running in docker, same issue also happen when I tried to 
connect to StreamNative cloud serivce. But I think this issue has notthing to 
do with the pulser server side. And I am using pulsar-client-cpp 3.5.1.
   
   ### Minimal reproduce step
   
   1. Create a `Reader` on a non-persistent topic.
   2. Call `ReadNext` on the Reader instance to read messages.
   
   ### What did you expect to see?
   
   Messages are successfully read by the client.
   
   ### What did you see instead?
   
   A portion of the exception backtrace:
   ```
   0. std::exception::capture() @ 0x00000000245a0b24
   1. std::exception::exception[abi:v15000]() @ 0x00000000245a0aec
   2. std::__1::bad_function_call::bad_function_call() @ 0x00000000245a0a9c
   3. std::__1::__throw_bad_function_call[abi:v15000]() @ 0x00000000245a0a50
   4. ? @ 0x000000003e7c3b18
   5. 
./build_docker/../contrib/llvm-project/libcxx/include/__functional/function.h:848:
 std::__1::__function::__policy_func<void 
(pulsar::Result)>::operator()[abi:v15000](pulsar::Result&&) const @ 
0x000000003e83edc8
   6. 
./build_docker/../contrib/llvm-project/libcxx/include/__functional/function.h:1187:
 std::__1::function<void (pulsar::Result)>::operator()(pulsar::Result) const @ 
0x000000003e7db9e4
   7. 
./build_docker/../contrib/pulsar-cmake/pulsar-client-cpp/lib/AckGroupingTracker.h:93:
 pulsar::AckGroupingTracker::addAcknowledgeCumulative(pulsar::MessageId const&, 
std::__1::function<void (pulsar::Result)>) @ 0x000000003e95a38c
   8. 
./build_docker/../contrib/pulsar-cmake/pulsar-client-cpp/lib/ConsumerImpl.cc:1187:
 pulsar::ConsumerImpl::acknowledgeCumulativeAsync(pulsar::MessageId const&, 
std::__1::function<void (pulsar::Result)>) @ 0x000000003e93ce34
   9. 
./build_docker/../contrib/pulsar-cmake/pulsar-client-cpp/lib/ReaderImpl.cc:155: 
pulsar::ReaderImpl::acknowledgeIfNecessary(pulsar::Result, pulsar::Message 
const&) @ 0x000000003ea6a8b0
   10. 
./build_docker/../contrib/pulsar-cmake/pulsar-client-cpp/lib/ReaderImpl.cc:130: 
pulsar::ReaderImpl::readNext(pulsar::Message&, int) @ 0x000000003ea6a954
   11. 
./build_docker/../contrib/pulsar-cmake/pulsar-client-cpp/lib/Reader.cc:49: 
pulsar::Reader::readNext(pulsar::Message&, int) @ 0x000000003ea66ccc
   ```
   
   
   ### Anything else?
   
   I think the issue is that, `AckGroupingTracker::addAcknowledgeList` does 
check `callback` before calling it: 
https://github.com/apache/pulsar-client-cpp/blob/main/lib/AckGroupingTracker.h#L81-L83.
 And in `ReaderImpl::acknowledgeIfNecessary` it passes the `emptyCallback` 
caused the issue: 
https://github.com/apache/pulsar-client-cpp/blob/main/lib/ReaderImpl.cc#L155
   
   ### Are you willing to submit a PR?
   
   - [X] I'm willing to submit a PR!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to