]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
Client: make sure the Finisher's mutex lock not held during it being distructed 34999/head
authorXiubo Li <xiubli@redhat.com>
Tue, 31 Mar 2020 09:09:45 +0000 (05:09 -0400)
committerNathan Cutler <ncutler@suse.com>
Mon, 11 May 2020 16:13:22 +0000 (18:13 +0200)
commit9e5b6fe47732a15c5723fbade1a309f36c29d584
treeae2b9b37afb0dc04d78666fda32c5244d95c3a23
parentd92ab7040fa49c5434e8fc44968f7395521b27ca
Client: make sure the Finisher's mutex lock not held during it being distructed

The objecter_finisher is already started in Client::Client(), but
in the failure path when initializing and starting the Client object,
we may not get a chance to call the Client::shutdown() to stop the
Finisher thread, which maybe still holding the mutex lock in it. Then
when destrucing the Finisher object the pthread_mutex_destroy() will
fail.

This fix will delay the objecter_finisher thread to start in ::init()
until we're ready to call Client::shutdown on any errors instead.

Fixes: https://tracker.ceph.com/issues/44389
Signed-off-by: Xiubo Li <xiubli@redhat.com>
(cherry picked from commit fbff4ee153f17da51c3b6675eb0616f2b2062f5e)
src/client/Client.cc
src/client/Client.h