-
Notifications
You must be signed in to change notification settings - Fork 120
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
Lock the condition mutex during setup #143
Conversation
this looks to have made a connext service test fail 15 times. I'm running this job to see if it still happens when combined with #142 and ros2/system_tests#219: |
Can you point to which job you are referring to for the 15 failures? The failing test is a test across rmw_implementations ? |
I'm referring to CI linux #3039 Something weird is going on with the Jenkins display. clinking on the failing test takes you to http://ci.ros2.org/job/ci_linux/3039/testReport/(root)/projectroot/test_client_scope_cpp__rmw_connext_cpp_2/ (note the _2 at the end) but the http://ci.ros2.org/job/ci_linux/3039/testReport/(root)/projectroot/test_client_scope_cpp__rmw_connext_cpp and the console output show there were no failures 😕 maybe it's just my browser.. do you see the linux CI job as green or yellow @mikaelarguedas ? |
I see the icon as yellow. This text being connext only I don't think this PR is the source of the 1 failure though (unrelated flakyness IMO) |
Ok, so that's weird, but either way, I agree that it should be unrelated to this change |
Otherwise one-shot notifications will be missed and we'll wait for them forever
d750107
to
a173bfa
Compare
Likely superseded by #147. |
I didn't see that the block of code after attaching the condition variable to the listeners is checking if they have triggered. That check should have been all that's necessary to prevent us from going into |
Otherwise one-shot notifications will be missed and we'll wait for them forever if no timeout is in use.
This happens often for parameter tests because
list_parameters
, for example, gets its response during the setup. It will callnotify_one()
on the condition variable, but it does it before we're actually waiting on the condition variable.