]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: allow multiple frontends of the same framework
authorYehuda Sadeh <yehuda@inktank.com>
Tue, 5 Nov 2013 01:54:51 +0000 (17:54 -0800)
committerYehuda Sadeh <yehuda@inktank.com>
Tue, 5 Nov 2013 18:20:31 +0000 (10:20 -0800)
it is possible to set up mongoose on multiple ports, e.g.,

  rgw frontends = mongoose:80, mongoose:8080

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_main.cc

index b0238f39579037480dbb88ca243f41b497d43060..8b533aaa2ed7531cdc7cd297a2e9563ccdac9a77 100644 (file)
@@ -316,13 +316,11 @@ static void handle_sigterm(int signum)
   dout(1) << __func__ << dendl;
   FCGX_ShutdownPending();
 
-  signal_shutdown();
-
   // send a signal to make fcgi's accept(2) wake up.  unfortunately the
   // initial signal often isn't sufficient because we race with accept's
   // check of the flag wet by ShutdownPending() above.
   if (signum != SIGUSR1) {
-    kill(getpid(), SIGUSR1);
+    signal_shutdown();
 
     // safety net in case we get stuck doing an orderly shutdown.
     uint64_t secs = g_ceph_context->_conf->rgw_exit_timeout_secs;
@@ -589,6 +587,7 @@ public:
 
   void stop() {
     pprocess->close_fd();
+    thread->kill(SIGUSR1);
   }
 
   void join() {
@@ -783,7 +782,7 @@ int main(int argc, const char **argv)
 
   get_str_list(g_conf->rgw_frontends, frontends);
 
-  map<string, string> fe_map;
+  multimap<string, string> fe_map;
 
   for (list<string>::iterator iter = frontends.begin(); iter != frontends.end(); ++iter) {
     string& f = *iter;
@@ -798,16 +797,16 @@ int main(int argc, const char **argv)
       framework = f;
     }
 
-    fe_map[framework] = config;
+    fe_map.insert(make_pair<string, string>(framework, config));
   }
 
   if (fe_map.empty()) {
-    fe_map["fastcgi"] = "";
+    fe_map.insert(make_pair<string, string>("fastcgi", ""));
   }
 
   list<RGWFrontend *> fes;
 
-  for (map<string, string>::iterator fiter = fe_map.begin(); fiter != fe_map.end(); ++fiter) {
+  for (multimap<string, string>::iterator fiter = fe_map.begin(); fiter != fe_map.end(); ++fiter) {
     const string& framework = fiter->first;
     const string& config = fiter->second;
     dout(0) << "handler: " << fiter->first << ":" << config << dendl;