[
https://issues.apache.org/jira/browse/BOOKKEEPER-79?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13152763#comment-13152763
]
Sijie Guo commented on BOOKKEEPER-79:
-------------------------------------
Ivan, thanks for your comments. It is great that you tried to avoid callbacks
be triggered after stopReceiving in new patch. But a thread is introduced for
each channel, if we have lots of subscriptions we will have same number of
threads. it is not good.
Beside the number of threads issue, #stopReceiving will be blocked if no data
sent from server in the channel, since it only be notified in
messageCallbackHandler. async_read will not trigger the bound callback if no
data read from the channel.
I attached a new patch based on my previous comments, which can
1) ensure no callbacks after #stopReceiving, also ensure no message lost
between stopDelivery and startDelivery (add order checking in
MessageHandlerCallback)
2) avoid the deadlock on mutexes.
> randomly startDelivery/stopDelivery will core dump in c++ hedwig client
> -----------------------------------------------------------------------
>
> Key: BOOKKEEPER-79
> URL: https://issues.apache.org/jira/browse/BOOKKEEPER-79
> Project: Bookkeeper
> Issue Type: Bug
> Components: hedwig-client
> Affects Versions: 4.0.0
> Reporter: Sijie Guo
> Assignee: Sijie Guo
> Fix For: 4.0.0
>
> Attachments: BOOKKEEPER-79.patch_v2, BOOKKEEPER-79.patch_v3,
> bookkeeper-79.patch, pubsubtest.cpp
>
>
> in our test program, we tried to startDelivery/stopDelivery different
> subscriptions randomly. And it core dump.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira