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
mds: Kill C_SaferCond in evict_sessions() #9971
Conversation
NB: make check failure is bluestore unit tests. |
@@ -587,6 +587,33 @@ void MDSDaemon::tick() | |||
} | |||
} | |||
|
|||
void MDSDaemon::send_command_reply(MCommand *m, MDSRank *mds_rank, | |||
int r, bufferlist outbl, | |||
std::string outs) |
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.
The string should probably be a const reference?
Looks good to me; just a few nits. Since we test commands in the nightlies this should have plenty of coverage, but you did test it locally, right? |
Comments addressed, should I run this through a suite or something? |
There's probably something available under vstart-runner that tests the commands. If that passes we can mark it as needs-qa and let @jcsp or somebody bundle it up in a testing branch. |
I am seeing a hang inside evict sessions when running TestVolumeClient: @fullerdj can you reproduce locally with vstart_runner? |
Yes, I've been working on that.
|
71eda15
to
1da3d6a
Compare
This resolves the hang I was seeing, but it looks like you may have encountered a different case. It looks like you are seeing a nearly identical case to http://tracker.ceph.com/issues/16288, but I have never been able to reproduce that one. |
MDSRankDispatcher::evict_sessions waits on a C_SaferCond for kill_session to complete on each of its victims. Change the command handling flow to pass command messages all the way down to MDSRankDispatcher. Extract the MDSDaemon's reply path into a static function callable from a new context in the MDSRankDispatcher. See: http://tracker.ceph.com/issues/16288 Signed-off-by: Douglas Fuller <dfuller@redhat.com>
MDSRankDispatcher::evict_sessions waits on a C_SaferCond for
kill_session to complete on each of its victims. Change the
command handling flow to pass command messages all the way down
to MDSRankDispatcher. Extract the MDSDaemon's reply path into a
static function callable from a new context in the MDSRankDispatcher.
See: http://tracker.ceph.com/issues/16288
Signed-off-by: Douglas Fuller dfuller@redhat.com