]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fix allocation of low global_ids after mon restart
authorSage Weil <sage@newdream.net>
Wed, 2 Dec 2009 23:03:50 +0000 (15:03 -0800)
committerSage Weil <sage@newdream.net>
Wed, 2 Dec 2009 23:03:50 +0000 (15:03 -0800)
We need to set last_allocated in init().  Also avoid the
-1 casting and just use 0 instead.

src/mon/AuthMonitor.cc
src/mon/AuthMonitor.h

index 85ac9238fd82acedabd38dee535ff8dc7347f4a7..feba38e2bfa044add5f34b1b0ac457d74650bf39 100644 (file)
@@ -192,10 +192,11 @@ bool AuthMonitor::update_from_paxos()
     mon->key_server.set_ver(keys_ver);
   }
 
-  if (last_allocated_id == (uint64_t)-1) {
+  if (last_allocated_id == 0)
     last_allocated_id = max_global_id;
-  }
-  dout(10) << "update_from_paxos() last_allocated_id=" << last_allocated_id << " max_global_id=" << max_global_id << dendl;
+
+  dout(10) << "update_from_paxos() last_allocated_id=" << last_allocated_id
+          << " max_global_id=" << max_global_id << dendl;
 
   bufferlist bl;
   ::encode(max_global_id, bl);
@@ -245,6 +246,8 @@ void AuthMonitor::init()
     }
   }
 
+  last_allocated_id = max_global_id;
+
   /* should only happen on the first time */
   update_from_paxos();
 }
@@ -309,14 +312,14 @@ void AuthMonitor::committed()
 void AuthMonitor::election_finished()
 {
   dout(10) << "AuthMonitor::election_starting" << dendl;
-  last_allocated_id = -1;
+  last_allocated_id = 0;
 }
 
 uint64_t AuthMonitor::assign_global_id(MAuth *m, bool should_increase_max)
 {
   int total_mon = mon->monmap->size();
-  dout(10) << "AuthMonitor::assign_global_id m=" << *m << " mon=" << mon->whoami << "/" << total_mon << " last_allocated="
-          << last_allocated_id << " max_global_id=" <<  max_global_id << dendl;
+  dout(10) << "AuthMonitor::assign_global_id m=" << *m << " mon=" << mon->whoami << "/" << total_mon
+          << " last_allocated=" << last_allocated_id << " max_global_id=" <<  max_global_id << dendl;
 
   uint64_t next_global_id = last_allocated_id + 1;
 
index 4a9da02f0831395a3b3086b8c28c623e57c92d5a..0d79ac187c0a39a4f64fc914715d39851ac55716 100644 (file)
@@ -106,7 +106,7 @@ private:
 
   void check_rotate();
  public:
-  AuthMonitor(Monitor *mn, Paxos *p) : PaxosService(mn, p), last_rotating_ver(0), max_global_id(-1), last_allocated_id(-1) {}
+  AuthMonitor(Monitor *mn, Paxos *p) : PaxosService(mn, p), last_rotating_ver(0), max_global_id(0), last_allocated_id(0) {}
   void pre_auth(MAuth *m);
   
   void tick();  // check state, take actions