]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Elector: use monitor's encoded command sets instead of our own
authorGreg Farnum <greg@inktank.com>
Tue, 10 Dec 2013 18:23:03 +0000 (10:23 -0800)
committerGreg Farnum <greg@inktank.com>
Tue, 10 Dec 2013 18:23:03 +0000 (10:23 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mon/Elector.cc
src/mon/Elector.h

index 6518822adb24077443320edfb89176ce8dfecd85..25976f25ddffb3922a0f25353c3408228e5e798b 100644 (file)
@@ -106,18 +106,11 @@ void Elector::defer(int who)
     electing_me = false;
   }
 
-  // encode my commands for transmission
-  if(!my_supported_commands.length()) {
-    const MonCommand *cmds;
-    int cmdsize;
-    get_locally_supported_monitor_commands(&cmds, &cmdsize);
-    MonCommand::encode_array(cmds, cmdsize, my_supported_commands);
-  }
   // ack them
   leader_acked = who;
   ack_stamp = ceph_clock_now(g_ceph_context);
   MMonElection *m = new MMonElection(MMonElection::OP_ACK, epoch, mon->monmap);
-  m->commands = my_supported_commands;
+  m->commands = mon->get_supported_commands_bl();
   mon->messenger->send_message(m, mon->monmap->get_inst(who));
   
   // set a timer
@@ -180,22 +173,16 @@ void Elector::victory()
   assert(epoch % 2 == 1);  // election
   bump_epoch(epoch+1);     // is over!
 
-  // calculate my supported commands for peons to advertise
-  bufferlist *cmds_bl = NULL;
+  // decide my supported commands for peons to advertise
+  const bufferlist *cmds_bl = NULL;
   const MonCommand *cmds;
   int cmdsize;
-  if (!use_classic_commands) {
-    get_locally_supported_monitor_commands(&cmds, &cmdsize);
-    if(!my_supported_commands.length()) {
-      MonCommand::encode_array(cmds, cmdsize, my_supported_commands);
-    }
-    cmds_bl = &my_supported_commands;
-  } else {
+  if (use_classic_commands) {
     get_classic_monitor_commands(&cmds, &cmdsize);
-    if (!classic_commands.length()){
-      MonCommand::encode_array(cmds, cmdsize, classic_commands);
-    }
-    cmds_bl = &classic_commands;
+    cmds_bl = &mon->get_classic_commands_bl();
+  } else {
+    get_locally_supported_monitor_commands(&cmds, &cmdsize);
+    cmds_bl = &mon->get_supported_commands_bl();
   }
   
   // tell everyone!
index e59fbf07c6b529073b703fded03e492efffad9df..bee3b30823326a5c34de55ac419f20bd06cd8859 100644 (file)
@@ -115,8 +115,6 @@ class Elector {
    */
   map<int, uint64_t> acked_me;
   set<int> classic_mons;
-  bufferlist my_supported_commands;
-  bufferlist classic_commands;
   /**
    * @}
    */