]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: get config defaults on session open
authorSage Weil <sage@redhat.com>
Fri, 5 Jan 2018 23:44:56 +0000 (17:44 -0600)
committerSage Weil <sage@redhat.com>
Tue, 6 Mar 2018 20:44:48 +0000 (14:44 -0600)
Leave them encoded until they are used, since usually we won't use them.
This is about 50k currently.

Signed-off-by: Sage Weil <sage@redhat.com>
src/messages/MMgrOpen.h
src/mgr/DaemonServer.cc
src/mgr/DaemonState.h
src/mgr/MgrClient.cc

index 171ef5a1e25868286aa9492f55bb84bb8301b75f..4f08f2751cd60dd9d575d133e4c4b50e3dea9329 100644 (file)
@@ -34,6 +34,9 @@ public:
   // encode map<string,map<int32_t,string>> of current config
   bufferlist config_bl;
 
+  // encode map<string,string> of compiled-in defaults
+  bufferlist config_defaults_bl;
+
   void decode_payload() override
   {
     bufferlist::iterator p = payload.begin();
@@ -48,6 +51,7 @@ public:
     }
     if (header.version >= 3) {
       ::decode(config_bl, p);
+      ::decode(config_defaults_bl, p);
     }
   }
 
@@ -61,6 +65,7 @@ public:
       encode(daemon_status, payload);
     }
     ::encode(config_bl, payload);
+    ::encode(config_defaults_bl, payload);
   }
 
   const char *get_type_name() const override { return "mgropen"; }
index dcbbde158020233433726453df4e98858056aaac..7b0ef76c245bc13de81e81b2b44c92abe190c01e 100644 (file)
@@ -395,6 +395,10 @@ bool DaemonServer::handle_open(MMgrOpen *m)
       ::decode(daemon->config, p);
       dout(20) << " got config " << daemon->config << dendl;
     }
+    daemon->config_defaults_bl = m->config_defaults_bl;
+    daemon->config_defaults.clear();
+    dout(20) << " got config_defaults_bl " << daemon->config_defaults_bl.length()
+            << " bytes" << dendl;
   }
 
   if (m->get_connection()->get_peer_type() != entity_name_t::TYPE_CLIENT &&
index 352541583b3a141d8ca162f32c373cfc6c35dce0..4efd91b8770f74c3eaebb1140b81673106d6406a 100644 (file)
@@ -109,6 +109,10 @@ class DaemonState
   // running config
   std::map<std::string,std::map<int32_t,std::string>> config;
 
+  // compiled-in config defaults (rarely used, so we leave them encoded!)
+  bufferlist config_defaults_bl;
+  std::map<std::string,std::string> config_defaults;
+
   // The perf counters received in MMgrReport messages
   DaemonPerfCounters perf_counters;
 
index 2b557d0acef1fe390cbc3066e1f9ece0b6b93882..7f50258b771c7dd6dc53696a49efffddd0ceae75 100644 (file)
@@ -175,6 +175,7 @@ void MgrClient::_send_open()
       open->daemon_metadata = daemon_metadata;
     }
     cct->_conf->get_config_bl(&open->config_bl);
+    cct->_conf->get_defaults_bl(&open->config_defaults_bl);
     session->con->send_message(open);
   }
 }