Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it looks reasonable to change
call_finished_
into true once current call in the queue is finished.but is this supposed to be moved from caller thread? adding
call_finished_ = true
here means, it should check ifcall_finished_
is true on caller thread instead.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should keep here. There are some cases, such as,
ros_comm/test/test_roscpp/test/src/service_call.cpp
Lines 97 to 109 in 089dd64
in this case,
ServiceServerLink::callFinished
will not be called, and then if ServiceServerLink exit,ServiceServerLink::~ServiceServerLink -> ... -> ServiceServerLink::cancelCall
ros_comm/clients/roscpp/src/libros/service_server_link.cpp
Lines 73 to 85 in 089dd64
stuck in
while (!local->call_finished_)
if we removeros_comm/clients/roscpp/src/libros/service_server_link.cpp
Line 374 in 089dd64
Okay