return loaded;
}
+void Mgr::handle_signal(int signum)
+{
+ ceph_assert(signum == SIGINT || signum == SIGTERM);
+ derr << "*** Got signal " << sig_str(signum) << " ***" << dendl;
+ shutdown();
+ _exit(0); // exit with 0 result code, as if we had done an orderly shutdown
+}
+
+// A reference for use by the signal handler
+static Mgr *signal_mgr = nullptr;
+
+static void handle_mgr_signal(int signum)
+{
+ if (signal_mgr) {
+ signal_mgr->handle_signal(signum);
+ }
+}
+
void Mgr::init()
{
std::unique_lock l(lock);
ceph_assert(initializing);
ceph_assert(!initialized);
+ // Enable signal handlers
+ signal_mgr = this;
+ register_async_signal_handler_oneshot(SIGINT, handle_mgr_signal);
+ register_async_signal_handler_oneshot(SIGTERM, handle_mgr_signal);
+
// Start communicating with daemons to learn statistics etc
int r = server.init(monc->get_global_id(), client_messenger->get_myaddrs());
if (r < 0) {
void Mgr::shutdown()
{
+ dout(10) << "mgr shutdown init" << dendl;
finisher.queue(new LambdaContext([&](int) {
{
std::lock_guard l(lock);
void background_init(Context *completion);
void shutdown();
+ void handle_signal(int signum);
+
std::map<std::string, std::string> get_services() const;
};
));
}
-void MgrStandby::handle_signal(int signum)
-{
- ceph_assert(signum == SIGINT || signum == SIGTERM);
- derr << "*** Got signal " << sig_str(signum) << " ***" << dendl;
- _exit(0); // exit with 0 result code, as if we had done an orderly shutdown
- //shutdown();
-}
-
void MgrStandby::shutdown()
{
finisher.queue(new LambdaContext([&](int) {
return false;
}
-// A reference for use by the signal handler
-static MgrStandby *signal_mgr = nullptr;
-
-static void handle_mgr_signal(int signum)
-{
- if (signal_mgr) {
- signal_mgr->handle_signal(signum);
- }
-}
-
int MgrStandby::main(vector<const char *> args)
{
- // Enable signal handlers
- signal_mgr = this;
- register_async_signal_handler_oneshot(SIGINT, handle_mgr_signal);
- register_async_signal_handler_oneshot(SIGTERM, handle_mgr_signal);
-
client_messenger->wait();
// Disable signal handlers
unregister_async_signal_handler(SIGHUP, sighup_handler);
- unregister_async_signal_handler(SIGINT, handle_mgr_signal);
- unregister_async_signal_handler(SIGTERM, handle_mgr_signal);
shutdown_async_signal_handler();
- signal_mgr = nullptr;
return 0;
}
void shutdown();
void respawn();
int main(vector<const char *> args);
- void handle_signal(int signum);
void tick();
};