return -1;
// start up network
- SimpleMessenger rank;
- messenger = rank.register_entity(entity_name_t::ADMIN());
+ SimpleMessenger *rank = new SimpleMessenger();
+ messenger = rank->register_entity(entity_name_t::ADMIN());
messenger->add_dispatcher_head(&dispatcher);
- rank.start();
+ rank->start();
mc.set_messenger(messenger);
mc.init();
// wait for messenger to finish
- rank.wait();
- messenger->destroy();
+ rank->wait();
+ rank->destroy();
return 0;
}
return -1;
// start up network
- SimpleMessenger rank;
+ SimpleMessenger *rank = new SimpleMessenger();
cout << "mounting ceph" << std::endl;
- Client *client = new Client(rank.register_entity(entity_name_t::CLIENT()), &mc);
+ Client *client = new Client(rank->register_entity(entity_name_t::CLIENT()), &mc);
- rank.start();
+ rank->start();
// start client
client->init();
delete client;
// wait for messenger to finish
- rank.wait();
+ rank->wait();
+ rank->destroy();
return 0;
}
if (mc.build_initial_monmap() < 0)
return -1;
- SimpleMessenger rank;
- rank.bind();
+ SimpleMessenger *rank = new SimpleMessenger();
+ rank->bind();
cout << "starting mds." << g_conf.id
- << " at " << rank.get_rank_addr()
+ << " at " << rank->get_rank_addr()
<< std::endl;
- Messenger *m = rank.register_entity(entity_name_t::MDS(-1));
+ Messenger *m = rank->register_entity(entity_name_t::MDS(-1));
assert_warn(m);
if (!m)
return 1;
- rank.set_policy(entity_name_t::TYPE_CLIENT, SimpleMessenger::Policy::stateful_server());
- rank.set_policy(entity_name_t::TYPE_MDS, SimpleMessenger::Policy::lossless_peer());
+ rank->set_policy(entity_name_t::TYPE_CLIENT, SimpleMessenger::Policy::stateful_server());
+ rank->set_policy(entity_name_t::TYPE_MDS, SimpleMessenger::Policy::lossless_peer());
- rank.start();
+ rank->start();
// start mds
MDS *mds = new MDS(g_conf.id, m, &mc);
mds->init();
- rank.wait();
+ rank->wait();
// yuck: grab the mds lock, so we can be sure that whoever in *mds
// called shutdown finishes what they were doing.
if (mds->is_stopped())
delete mds;
+ rank->destroy();
+
// cd on exit, so that gmon.out (if any) goes into a separate directory for each node.
char s[20];
sprintf(s, "gmon/%d", getpid());
<< " continuing with monmap configuration" << std::endl;
// bind
- SimpleMessenger rank;
+ SimpleMessenger *rank = new SimpleMessenger();
cout << "starting mon" << whoami
<< " at " << monmap.get_inst(whoami).addr
<< " fsid " << monmap.get_fsid()
<< std::endl;
g_my_addr = monmap.get_inst(whoami).addr;
- err = rank.bind();
+ err = rank->bind();
if (err < 0)
return 1;
_dout_create_courtesy_output_symlink("mon", whoami);
// start monitor
- Messenger *m = rank.register_entity(entity_name_t::MON(whoami));
+ Messenger *m = rank->register_entity(entity_name_t::MON(whoami));
m->set_default_send_priority(CEPH_MSG_PRIO_HIGH);
Monitor *mon = new Monitor(whoami, &store, m, &monmap);
- rank.start(); // may daemonize
+ rank->start(); // may daemonize
- rank.set_default_policy(SimpleMessenger::Policy::stateless_server());
- rank.set_policy(entity_name_t::TYPE_MON, SimpleMessenger::Policy::lossless_peer());
+ rank->set_default_policy(SimpleMessenger::Policy::stateless_server());
+ rank->set_policy(entity_name_t::TYPE_MON, SimpleMessenger::Policy::lossless_peer());
mon->init();
- rank.wait();
+ rank->wait();
+ rank->destroy();
store.umount();
delete mon;
g_my_addr.ss_addr() = mc.get_my_addr().ss_addr();
g_my_addr.set_port(0);
- SimpleMessenger rank, rank_hb;
- rank.bind();
- rank_hb.bind();
+ SimpleMessenger *rank = new SimpleMessenger();
+ SimpleMessenger *rank_hb = new SimpleMessenger();
+ rank->bind();
+ rank_hb->bind();
cout << "starting osd" << whoami
- << " at " << rank.get_rank_addr()
+ << " at " << rank->get_rank_addr()
<< " osd_data " << g_conf.osd_data
<< " " << ((g_conf.osd_journal && g_conf.osd_journal[0]) ? g_conf.osd_journal:"(no journal)")
<< " fsid " << mc.monmap.fsid
g_timer.shutdown();
- Messenger *m = rank.register_entity(entity_name_t::OSD(whoami));
+ Messenger *m = rank->register_entity(entity_name_t::OSD(whoami));
assert_warn(m);
if (!m)
return 1;
- Messenger *hbm = rank_hb.register_entity(entity_name_t::OSD(whoami));
+ Messenger *hbm = rank_hb->register_entity(entity_name_t::OSD(whoami));
assert_warn(hbm);
if (!hbm)
return 1;
- rank.set_default_policy(SimpleMessenger::Policy::stateless_server());
- rank.set_policy(entity_name_t::TYPE_MON, SimpleMessenger::Policy::client());
- rank.set_policy(entity_name_t::TYPE_OSD, SimpleMessenger::Policy::lossless_peer());
+ rank->set_default_policy(SimpleMessenger::Policy::stateless_server());
+ rank->set_policy(entity_name_t::TYPE_MON, SimpleMessenger::Policy::client());
+ rank->set_policy(entity_name_t::TYPE_OSD, SimpleMessenger::Policy::lossless_peer());
- rank.start();
- rank_hb.start(true); // only need to daemon() once
+ rank->start();
+ rank_hb->start(true); // only need to daemon() once
// start osd
OSD *osd = new OSD(whoami, m, hbm, &mc, g_conf.osd_data, g_conf.osd_journal, mkjournal);
return 1;
}
- rank.wait();
- rank_hb.wait();
+ rank->wait();
+ rank->destroy();
+ rank_hb->wait();
+ rank_hb->wait();
// done
delete osd;
return -1;
// start up network
- SimpleMessenger rank;
+ SimpleMessenger *rank = new SimpleMessenger();
cout << "starting csyn" << std::endl;
list<Client*> clients;
cout << "mounting and starting " << g_conf.num_client << " syn client(s)" << std::endl;
for (int i=0; i<g_conf.num_client; i++) {
- Client *client = new Client(rank.register_entity(entity_name_t(entity_name_t::TYPE_CLIENT,-1)), &mc);
+ Client *client = new Client(rank->register_entity(entity_name_t(entity_name_t::TYPE_CLIENT,-1)), &mc);
SyntheticClient *syn = new SyntheticClient(client);
clients.push_back(client);
synclients.push_back(syn);
}
- rank.start();
+ rank->start();
for (list<SyntheticClient*>::iterator p = synclients.begin();
p != synclients.end();
}
// wait for messenger to finish
- rank.wait();
+ rank->wait();
+ rank->destroy();
return 0;
}
return -1;
// start up network
- SimpleMessenger rank;
- rank.bind();
+ SimpleMessenger *rank = new SimpleMessenger();
+ rank->bind();
g_conf.daemonize = false; // not us!
- rank.start();
- messenger = rank.register_entity(entity_name_t::ADMIN());
+ rank->start();
+ messenger = rank->register_entity(entity_name_t::ADMIN());
messenger->add_dispatcher_head(&dispatcher);
inodeno_t ino = MDS_INO_LOG_OFFSET + mds;
messenger->shutdown();
// wait for messenger to finish
- rank.wait();
+ rank->wait();
+ rank->destroy();
return 0;
}
client->shutdown();
delete client;
rank->wait();
- delete rank;
+ rank->destroy();
delete monclient;
}
ceph_client_mutex.Unlock();
OSDMap osdmap;
Messenger *messenger;
MonClient monclient;
- SimpleMessenger rank;
+ SimpleMessenger *rank;
bool _dispatch(Message *m);
bool ms_dispatch(Message *m);
public:
- RadosClient() : messenger(NULL), lock("radosclient") {}
+ RadosClient() : messenger(NULL), lock("radosclient") {
+ rank = new SimpleMessenger();
+ }
+
~RadosClient();
bool init();
void shutdown();
if (monclient.build_initial_monmap() < 0)
return false;
- dout(1) << "starting msgr at " << rank.get_rank_addr() << dendl;
+ dout(1) << "starting msgr at " << rank->get_rank_addr() << dendl;
- messenger = rank.register_entity(entity_name_t::CLIENT(-1));
+ messenger = rank->register_entity(entity_name_t::CLIENT(-1));
assert_warn(messenger);
if (!messenger)
return false;
messenger->add_dispatcher_head(this);
- rank.start(1);
+ rank->start(1);
messenger->add_dispatcher_head(this);
dout(1) << "setting wanted keys" << dendl;
objecter->shutdown();
lock.Unlock();
messenger->shutdown();
- rank.wait();
+ rank->wait();
+ rank->destroy();
dout(1) << "shutdown" << dendl;
}
monc_lock.Unlock();
messenger->shutdown();
rank->wait();
- messenger->destroy();
+ rank->destroy();
messenger = 0;
monc_lock.Lock();
}
// start up network
g_my_addr = mc.get_mon_addr(whoami);
- SimpleMessenger rank;
- int err = rank.bind();
+ SimpleMessenger *rank = new SimpleMessenger();
+ int err = rank->bind();
if (err < 0)
return 1;
_dout_create_courtesy_output_symlink("mon", whoami);
// start monitor
- messenger = rank.register_entity(entity_name_t::MON(whoami));
+ messenger = rank->register_entity(entity_name_t::MON(whoami));
messenger->set_default_send_priority(CEPH_MSG_PRIO_HIGH);
messenger->add_dispatcher_head(&dispatcher);
- rank.start();
+ rank->start();
int isend = 0;
if (whoami == 0)
lock.Unlock();
// wait for messenger to finish
- rank.wait();
+ rank->wait();
+ rank->destroy();
return 0;
}