// clear up some state
electing_me = false;
acked_me.clear();
- acker_commands.clear();
+ classic_mons.clear();
}
dout(5) << "start -- can i be leader?" << dendl;
acked_me.clear();
- acker_commands.clear();
+ classic_mons.clear();
init();
// start by trying to elect me
if (electing_me) {
// drop out
acked_me.clear();
- acker_commands.clear();
+ classic_mons.clear();
electing_me = false;
}
}
// decide what command set we're supporting
- bool use_classic_commands = false;
- for (list<bufferlist>::iterator i = acker_commands.begin();
- i != acker_commands.end();
- ++i) {
- if (i->length() == 0) {
- use_classic_commands = true;
- break;
- }
- }
+ bool use_classic_commands = !classic_mons.empty();
cancel_timer();
if (electing_me) {
// thanks
acked_me[from] = m->get_connection()->get_features();
- acker_commands.push_back(m->commands);
+ if (!m->commands.length())
+ classic_mons.insert(from);
dout(5) << " so far i have " << acked_me << dendl;
// is that _everyone_?
* victory. Also note each peer's feature set.
*/
map<int, uint64_t> acked_me;
- list<bufferlist> acker_commands;
+ set<int> classic_mons;
bufferlist my_supported_commands;
bufferlist classic_commands;
/**