]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
injectargs: print out what is changing
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Thu, 28 Jul 2011 21:48:31 +0000 (14:48 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Thu, 28 Jul 2011 21:49:18 +0000 (14:49 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/common/common_init.cc
src/common/config.cc
src/common/config.h
src/global/global_init.cc
src/libceph.cc
src/librados.cc
src/mds/MDS.cc
src/mon/Monitor.cc
src/osd/OSD.cc
src/rgw/librgw.cc
src/test/perf_counters.cc

index 2b54c102afa8f5eec94cef49fbd3369928774bd6..95d64235090f7bd51b3ac285d98da8fcc0ee5267 100644 (file)
@@ -94,7 +94,7 @@ void common_init_finish(CephContext *cct)
   // Trigger callbacks on any config observers that were waiting for
   // it to become safe to start threads.
   cct->_conf->set_val("internal_safe_to_start_threads", "true");
-  cct->_conf->apply_changes();
+  cct->_conf->apply_changes(NULL);
 }
 
 void common_destroy_context(CephContext *cct)
index e105c5e65325ddcacf451bb62e7e0ff97e72944b..8761a9028a97bb268bee2de8729e5e157591dce3 100644 (file)
  * initialization happens here.
  */
 #undef dout
+#undef ldout
 #undef pdout
 #undef derr
+#undef lderr
 #undef generic_dout
 #undef dendl
 
@@ -657,7 +659,7 @@ parse_argv(std::vector<const char*>& args)
 }
 
 void md_config_t::
-apply_changes()
+apply_changes(std::ostringstream *oss)
 {
   /* Maps observers to the configuration options that they care about which
    * have changed. */
@@ -676,9 +678,15 @@ apply_changes()
   // changed keys that they'll get.
   rev_obs_map_t robs;
   std::set <std::string> empty_set;
+  char buf[128];
+  char *bufptr = (char*)buf;
   for (changed_set_t::const_iterator c = changed.begin();
        c != changed.end(); ++c) {
     const std::string &key(*c);
+    if ((oss) && (!get_val(key.c_str(), &bufptr, sizeof(buf)))) {
+      (*oss) << "applying configuration change: " << key << " = '"
+                    << buf << "'\n";
+    }
     pair < obs_map_t::iterator, obs_map_t::iterator >
       range(observers.equal_range(key));
     for (obs_map_t::iterator r = range.first; r != range.second; ++r) {
@@ -699,7 +707,7 @@ apply_changes()
 }
 
 void md_config_t::
-injectargs(const std::string& s)
+injectargs(const std::string& s, std::ostringstream *oss)
 {
   char b[s.length()+1];
   strcpy(b, s.c_str());
@@ -714,7 +722,7 @@ injectargs(const std::string& s)
     while (*p && *p == ' ') p++;
   }
   parse_argv(nargs);
-  apply_changes();
+  apply_changes(oss);
 }
 
 void md_config_t::
index 94a9ab1d2b5970f229cf4b93355fe97ceb014f99..0a354dd85114bc0250841c0fbfb9c490ca6c10b6 100644 (file)
@@ -17,6 +17,7 @@
 
 extern struct ceph_file_layout g_default_file_layout;
 
+#include <iosfwd>
 #include <vector>
 #include <map>
 #include <set>
@@ -33,6 +34,7 @@ extern struct ceph_file_layout g_default_file_layout;
 #define OSD_REP_CHAIN   2
 
 class config_option;
+class CephContext;
 
 extern const char *CEPH_CONF_FILE_DEFAULT;
 
@@ -81,10 +83,10 @@ public:
   void parse_argv(std::vector<const char*>& args);
 
   // Expand all metavariables. Make any pending observer callbacks.
-  void apply_changes();
+  void apply_changes(std::ostringstream *oss);
 
   // Called by the Ceph daemons to make configuration changes at runtime
-  void injectargs(const std::string &s);
+  void injectargs(const std::string &s, std::ostringstream *oss);
 
   // Set a configuration value, or crash
   // Metavariables will be expanded.
index 7679936baa0a9a080037e993d89ac1d86659375f..d24aaaa31546aff8b798125d4690f7c090fd560e 100644 (file)
@@ -95,7 +95,7 @@ void global_init(std::vector < const char* >& args,
   }
 
   // Expand metavariables. Invoke configuration observers.
-  conf->apply_changes();
+  conf->apply_changes(NULL);
 
   // Now we're ready to complain about config file parse errors
   complain_about_parse_errors(cct, &parse_errors);
index fe79bbadce33751dd1cd9461b2851dea0dbcd9bd..2a334f6f53f5f69c0c2c437f6308df57037af0d6 100644 (file)
@@ -135,7 +135,7 @@ public:
     int ret = cct->_conf->parse_config_files(path_list, &parse_errors, 0);
     if (ret)
       return ret;
-    cct->_conf->apply_changes();
+    cct->_conf->apply_changes(NULL);
     complain_about_parse_errors(cct, &parse_errors);
     return 0;
   }
@@ -145,7 +145,7 @@ public:
     vector<const char*> args;
     argv_to_vec(argc, argv, args);
     cct->_conf->parse_argv(args);
-    cct->_conf->apply_changes();
+    cct->_conf->apply_changes(NULL);
   }
 
   int conf_set(const char *option, const char *value)
@@ -153,7 +153,7 @@ public:
     int ret = cct->_conf->set_val(option, value);
     if (ret)
       return ret;
-    cct->_conf->apply_changes();
+    cct->_conf->apply_changes(NULL);
     return 0;
   }
 
@@ -222,7 +222,7 @@ extern "C" int ceph_create(struct ceph_mount_info **cmount, const char * const i
 
   CephContext *cct = common_preinit(iparams, CODE_ENVIRONMENT_LIBRARY, 0);
   cct->_conf->parse_env(); // environment variables coverride
-  cct->_conf->apply_changes();
+  cct->_conf->apply_changes(NULL);
   return ceph_create_with_context(cmount, cct);
 }
 
index 3f53d4dd54d0d4253261a004ede2845bfbebffe0..251b7925ea4eda223cc2c3774f50e9a43b9be25e 100644 (file)
@@ -3204,7 +3204,7 @@ extern "C" int rados_create(rados_t *pcluster, const char * const id)
 
   CephContext *cct = common_preinit(iparams, CODE_ENVIRONMENT_LIBRARY, 0);
   cct->_conf->parse_env(); // environment variables override
-  cct->_conf->apply_changes();
+  cct->_conf->apply_changes(NULL);
 
   librados::RadosClient *radosp = new librados::RadosClient(cct);
   *pcluster = (void *)radosp;
@@ -3257,7 +3257,7 @@ extern "C" int rados_conf_read_file(rados_t cluster, const char *path_list)
     return ret;
   conf->parse_env(); // environment variables override
 
-  conf->apply_changes();
+  conf->apply_changes(NULL);
   complain_about_parse_errors(client->cct, &parse_errors);
   return 0;
 }
@@ -3269,7 +3269,7 @@ extern "C" void rados_conf_parse_argv(rados_t cluster, int argc, const char **ar
   vector<const char*> args;
   argv_to_vec(argc, argv, args);
   conf->parse_argv(args);
-  conf->apply_changes();
+  conf->apply_changes(NULL);
 }
 
 extern "C" int rados_conf_set(rados_t cluster, const char *option, const char *value)
@@ -3279,7 +3279,7 @@ extern "C" int rados_conf_set(rados_t cluster, const char *option, const char *v
   int ret = conf->set_val(option, value);
   if (ret)
     return ret;
-  conf->apply_changes();
+  conf->apply_changes(NULL);
   return 0;
 }
 
index 4cf391eed78d2c82a87ee135ebe54db7cf82681f..1b25ec98475a52a2db831659a7a214529e927fb9 100644 (file)
@@ -714,8 +714,12 @@ void MDS::beacon_kill(utime_t lab)
 void MDS::handle_command(MMonCommand *m)
 {
   dout(10) << "handle_command args: " << m->cmd << dendl;
-  if (m->cmd[0] == "injectargs")
-    g_conf->injectargs(m->cmd[1]);
+  if (m->cmd[0] == "injectargs") {
+    std::ostringstream oss;
+    g_conf->injectargs(m->cmd[1], &oss);
+    derr << "injectargs:" << dendl;
+    derr << oss.str() << dendl;
+  }
   else if (m->cmd[0] == "dumpcache") {
     if (m->cmd.size() > 1)
       mdcache->dump_cache(m->cmd[1].c_str());
index cafab4240dc418f4cefccfa78fdb54edf384c2ba..58da776d0378a8cae823464be44bb11e60b28aa1 100644 (file)
@@ -360,7 +360,10 @@ void Monitor::handle_command(MMonCommand *m)
     if (m->cmd[0] == "injectargs") {
       if (m->cmd.size() == 2) {
        dout(0) << "parsing injected options '" << m->cmd[1] << "'" << dendl;
-       g_conf->injectargs(m->cmd[1]);
+       ostringstream oss;
+       g_conf->injectargs(m->cmd[1], &oss);
+       derr << "injectargs:" << dendl;
+       derr << oss.str() << dendl;
        rs = "parsed options";
        r = 0;
       } else {
index 82a982f09c783cc72b6d003dad924c9aba3c66f0..094e2bb3b345f4472b3bef145450184c7720b0d7 100644 (file)
@@ -2131,8 +2131,12 @@ void OSD::handle_command(MMonCommand *m)
     return;
 
   dout(20) << "handle_command args: " << m->cmd << dendl;
-  if (m->cmd[0] == "injectargs")
-    g_conf->injectargs(m->cmd[1]);
+  if (m->cmd[0] == "injectargs") {
+    ostringstream oss;
+    g_conf->injectargs(m->cmd[1], &oss);
+    derr << "injectargs:" << dendl;
+    derr << oss.str() << dendl;
+  }
   else if (m->cmd[0] == "stop") {
     dout(0) << "got shutdown" << dendl;
     shutdown();
index e571035e6c3fa87d2e159257a327af125f4c3b0c..b1d14d2e4b957f267c1e937277efb3a5619aebe9 100644 (file)
@@ -34,7 +34,7 @@ int librgw_create(librgw_t *rgw, const char * const id)
   CephContext *cct = common_preinit(iparams, CODE_ENVIRONMENT_LIBRARY, 0);
   cct->_conf->log_to_stderr = 1; // quiet by default
   cct->_conf->parse_env(); // environment variables override
-  cct->_conf->apply_changes();
+  cct->_conf->apply_changes(NULL);
 
   common_init_finish(cct);
   *rgw = cct;
index 04ed146a1bcd97a46ff648c1a00a2ae7e581296a..90792a7ccac67defa3e32a8614c4d40d1e4a773f 100644 (file)
@@ -37,7 +37,7 @@
 
 TEST(PerfCounters, SimpleTest) {
   g_ceph_context->_conf->set_val_or_die("admin_socket", get_rand_socket_path());
-  g_ceph_context->_conf->apply_changes();
+  g_ceph_context->_conf->apply_changes(NULL);
   AdminSocketClient client(get_rand_socket_path());
   std::string message;
   ASSERT_EQ("", client.get_message(&message));
@@ -79,7 +79,7 @@ TEST(PerfCounters, SinglePerfCounters) {
   PerfCounters* fake_pf = setup_test_perfcounters1(g_ceph_context);
   coll->logger_add(fake_pf);
   g_ceph_context->_conf->set_val_or_die("admin_socket", get_rand_socket_path());
-  g_ceph_context->_conf->apply_changes();
+  g_ceph_context->_conf->apply_changes(NULL);
   AdminSocketClient client(get_rand_socket_path());
   std::string msg;
   ASSERT_EQ("", client.get_message(&msg));
@@ -122,7 +122,7 @@ TEST(PerfCounters, MultiplePerfCounters) {
   coll->logger_add(fake_pf1);
   coll->logger_add(fake_pf2);
   g_ceph_context->_conf->set_val_or_die("admin_socket", get_rand_socket_path());
-  g_ceph_context->_conf->apply_changes();
+  g_ceph_context->_conf->apply_changes(NULL);
   AdminSocketClient client(get_rand_socket_path());
   std::string msg;