void config::get_view(unsigned instance, vector<string> & m, lock & cfg_mutex_lock) {
VERIFY(cfg_mutex_lock);
string value = paxos.value(instance);
void config::get_view(unsigned instance, vector<string> & m, lock & cfg_mutex_lock) {
VERIFY(cfg_mutex_lock);
string value = paxos.value(instance);
my_view_id = paxos.instance();
if (my_view_id > 0) {
get_view(my_view_id, mems, cfg_mutex_lock);
my_view_id = paxos.instance();
if (my_view_id > 0) {
get_view(my_view_id, mems, cfg_mutex_lock);
bool config::add(const string & new_m, unsigned vid) {
lock cfg_mutex_lock(cfg_mutex);
bool config::add(const string & new_m, unsigned vid) {
lock cfg_mutex_lock(cfg_mutex);
- LOG("old mems " << cmems << " " << implode(cmems));
- LOG("new mems " << m << " " << implode(m));
+ LOG << "old mems " << cmems << " " << implode(cmems);
+ LOG << "new mems " << m << " " << implode(m);
unsigned nextvid = my_view_id + 1;
cfg_mutex_lock.unlock();
bool r = paxos.run(nextvid, cmems, implode(m));
cfg_mutex_lock.lock();
unsigned nextvid = my_view_id + 1;
cfg_mutex_lock.unlock();
bool r = paxos.run(nextvid, cmems, implode(m));
cfg_mutex_lock.lock();
return r;
}
// caller should hold cfg_mutex
bool config::remove(const string & m, lock & cfg_mutex_lock) {
VERIFY(cfg_mutex_lock);
return r;
}
// caller should hold cfg_mutex
bool config::remove(const string & m, lock & cfg_mutex_lock) {
VERIFY(cfg_mutex_lock);
config_cond.wait_until(cfg_mutex_lock, next_timeout);
unsigned vid = my_view_id;
vector<string> cmems;
get_view(vid, cmems, cfg_mutex_lock);
config_cond.wait_until(cfg_mutex_lock, next_timeout);
unsigned vid = my_view_id;
vector<string> cmems;
get_view(vid, cmems, cfg_mutex_lock);
paxos_protocol::status config::heartbeat(int & r, string m, unsigned vid) {
lock cfg_mutex_lock(cfg_mutex);
r = (int) my_view_id;
paxos_protocol::status config::heartbeat(int & r, string m, unsigned vid) {
lock cfg_mutex_lock(cfg_mutex);
r = (int) my_view_id;
config::heartbeat_t config::doheartbeat(const string & m, lock & cfg_mutex_lock) {
VERIFY(cfg_mutex_lock);
unsigned vid = my_view_id;
config::heartbeat_t config::doheartbeat(const string & m, lock & cfg_mutex_lock) {
VERIFY(cfg_mutex_lock);
unsigned vid = my_view_id;