This moves the shutdown of the messenger outside of the client
to be able to handle error cases more appropriately.
Signed-off-by: Sam Lang <sam.lang@inktank.com>
client->shutdown();
out_init_failed:
// wait for messenger to finish
+ messenger->shutdown();
messenger->wait();
out_messenger_start_failed:
delete client;
for (int i = 0; i < g_conf->num_client; ++i) {
// wait for messenger to finish
delete mclients[i];
+ messengers[i]->shutdown();
messengers[i]->wait();
delete messengers[i];
}
client_lock.Unlock();
objectcacher->stop();
monclient->shutdown();
- messenger->shutdown();
return r;
}
objecter->shutdown();
client_lock.Unlock();
monclient->shutdown();
- messenger->shutdown();
if (logger) {
cct->get_perfcounters_collection()->remove(logger);
rank.start_rank();
client = new Client(rank.register_entity(entity_name_t(entity_name_t::TYPE_CLIENT,-1)), &monmap);
- client->init();
+ r = client->init();
+ if (r < 0) {
+ cerr << "ldceph init: client init failed " << r << std::endl;
+ delete client;
+ }
+
r = client->mount();
if (r < 0) {
// failure
client = NULL;
}
if (messenger) {
+ messenger->shutdown();
messenger->wait();
delete messenger;
messenger = NULL;