mirror of
https://github.com/ceph/ceph
synced 2025-02-24 11:37:37 +00:00
mon: fix allocation of low global_ids after mon restart
We need to set last_allocated in init(). Also avoid the -1 casting and just use 0 instead.
This commit is contained in:
parent
89603b6bca
commit
714a9af30d
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user