From: Patrick Donnelly Date: Thu, 13 Jul 2023 16:29:25 +0000 (-0400) Subject: mon: use wait_for_commit to reply X-Git-Tag: v19.0.0~446^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c2f7fc6f3f974d309b215931a8a201f3b14e1e80;p=ceph.git mon: use wait_for_commit to reply Once PaxosService::refresh is called, the commit is final and will not be rolled back. We should immediately send out any replies depending on that event. This avoids a problem where PaxosService::update_from_paxos indicates the mons need to re-bootstrap (because of a monmap change) and these pending reply contexts are dropped in PaxosService::restart. The cherry on top for this change is that mon commands enjoy a shorter RTT latency as replies are sent out faster. Using the new bench_commit.py script: main branch: min/max/mean/stddev: 0.015813/0.613919/0.031615/0.024087 min/max/mean/stddev: 0.015737/0.255008/0.031492/0.017930 min/max/mean/stddev: 0.014242/0.205763/0.031969/0.018022 min/max/mean/stddev: 0.014172/0.270256/0.032070/0.021079 min/max/mean/stddev: 0.017767/0.471187/0.032751/0.025317 this commit: min/max/mean/stddev: 0.010476/0.158475/0.026324/0.013662 min/max/mean/stddev: 0.016866/0.099403/0.027938/0.010508 min/max/mean/stddev: 0.014013/0.127512/0.026847/0.010340 min/max/mean/stddev: 0.013098/0.172725/0.028979/0.012998 min/max/mean/stddev: 0.016934/0.292218/0.029252/0.014904 About a 10-20% reduction in latency. Signed-off-by: Patrick Donnelly --- diff --git a/src/mon/AuthMonitor.cc b/src/mon/AuthMonitor.cc index 8cb6789394b..a7ee78dfd51 100644 --- a/src/mon/AuthMonitor.cc +++ b/src/mon/AuthMonitor.cc @@ -1447,7 +1447,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) return true; } err = 0; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "auth add" && !entity_name.empty()) { @@ -1480,7 +1480,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) // are we about to have it? if (entity_is_pending(entity)) { - wait_for_finished_proposal(op, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -1532,7 +1532,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) ss << "added key for " << auth_inc.name; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if ((prefix == "auth get-or-create-pending" || @@ -1559,7 +1559,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) decode(auth_inc, q); if (auth_inc.op == KeyServerData::AUTH_INC_ADD && auth_inc.name == entity) { - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -1616,7 +1616,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) auth_inc.auth.pending_key.clear(); push_cephx_inc(auth_inc); } - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, rdata, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, rdata, get_last_committed() + 1)); return true; } else if ((prefix == "auth get-or-create-key" || @@ -1666,7 +1666,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) decode(auth_inc, q); if (auth_inc.op == KeyServerData::AUTH_INC_ADD && auth_inc.name == entity) { - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -1695,7 +1695,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) rdata.append(ds); getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, rdata, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, rdata, get_last_committed() + 1)); return true; } else if (prefix == "fs authorize") { @@ -1831,7 +1831,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) auth_inc.op = KeyServerData::AUTH_INC_DEL; push_cephx_inc(auth_inc); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -1942,7 +1942,7 @@ int AuthMonitor::_update_or_create_entity(const EntityName& entity, string rs; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, *rdata, get_last_committed() + 1)); return 0; } diff --git a/src/mon/ConfigMonitor.cc b/src/mon/ConfigMonitor.cc index e24ccbc1803..cbcedc007e9 100644 --- a/src/mon/ConfigMonitor.cc +++ b/src/mon/ConfigMonitor.cc @@ -736,7 +736,7 @@ update: mon.kvmon()->propose_pending(); paxos.unplug(); force_immediate_propose(); - wait_for_finished_proposal( + wait_for_commit( op, new Monitor::C_Command( mon, op, 0, ss.str(), odata, diff --git a/src/mon/HealthMonitor.cc b/src/mon/HealthMonitor.cc index 6eed2b0f05b..2a21b99111a 100644 --- a/src/mon/HealthMonitor.cc +++ b/src/mon/HealthMonitor.cc @@ -356,7 +356,7 @@ out: if (r >= 0) { // success.. delay reply - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, r, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, r, rs, get_last_committed() + 1)); return true; } else { diff --git a/src/mon/KVMonitor.cc b/src/mon/KVMonitor.cc index 37a81a8048d..5a03cf61274 100644 --- a/src/mon/KVMonitor.cc +++ b/src/mon/KVMonitor.cc @@ -320,7 +320,7 @@ update: goto reply; } force_immediate_propose(); // faster response - wait_for_finished_proposal( + wait_for_commit( op, new Monitor::C_Command( mon, op, 0, ss.str(), odata, diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index 38e5971762b..ad18a3aa1d1 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -744,7 +744,7 @@ bool LogMonitor::prepare_log(MonOpRequestRef op) pending_log.insert(pair(p->stamp, *p)); } } - wait_for_finished_proposal(op, new C_Log(this, op)); + wait_for_commit(op, new C_Log(this, op)); return true; } @@ -1040,7 +1040,7 @@ bool LogMonitor::prepare_command(MonOpRequestRef op) le.msg = str_join(logtext, " "); pending_keys.insert(le.key()); pending_log.insert(pair(le.stamp, le)); - wait_for_finished_proposal(op, new Monitor::C_Command( + wait_for_commit(op, new Monitor::C_Command( mon, op, 0, string(), get_last_committed() + 1)); return true; } diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index defd8ecd85f..a71290d3f03 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -1445,7 +1445,7 @@ out: if (r >= 0) { // success.. delay reply - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, r, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, r, rs, get_last_committed() + 1)); return true; } else { diff --git a/src/mon/MgrMonitor.cc b/src/mon/MgrMonitor.cc index 958bf669140..74445a2ce83 100644 --- a/src/mon/MgrMonitor.cc +++ b/src/mon/MgrMonitor.cc @@ -1321,7 +1321,7 @@ out: if (r >= 0) { // success.. delay reply - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, r, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, r, rs, get_last_committed() + 1)); } else { // reply immediately diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 4ad44d0309d..3701ad9649c 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -3076,7 +3076,7 @@ bool OSDMonitor::prepare_mark_me_dead(MonOpRequestRef op) pending_inc.new_xinfo[target_osd] = osdmap.osd_xinfo[target_osd]; } pending_inc.new_xinfo[target_osd].dead_epoch = m->get_epoch(); - wait_for_finished_proposal( + wait_for_commit( op, new LambdaContext( [op, this] (int r) { @@ -4299,7 +4299,7 @@ bool OSDMonitor::prepare_remove_snaps(MonOpRequestRef op) if (HAVE_FEATURE(m->get_connection()->get_features(), SERVER_OCTOPUS)) { auto reply = make_message(); reply->snaps = m->snaps; - wait_for_finished_proposal(op, new C_ReplyOp(this, op, reply)); + wait_for_commit(op, new C_ReplyOp(this, op, reply)); } return true; @@ -8234,7 +8234,7 @@ bool OSDMonitor::prepare_set_flag(MonOpRequestRef op, int flag) pending_inc.new_flags = osdmap.get_flags(); pending_inc.new_flags |= flag; ss << OSDMap::get_flag_string(flag) << " is set"; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } @@ -8247,7 +8247,7 @@ bool OSDMonitor::prepare_unset_flag(MonOpRequestRef op, int flag) pending_inc.new_flags = osdmap.get_flags(); pending_inc.new_flags &= ~flag; ss << OSDMap::get_flag_string(flag) << " is unset"; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } @@ -10103,7 +10103,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } pending_inc.crush.clear(); newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd crush set-device-class") { @@ -10181,7 +10181,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); ss << "set osd(s) " << updated << " to class '" << device_class << "'"; getline(ss, rs); - wait_for_finished_proposal( + wait_for_commit( op, new Monitor::C_Command(mon,op, 0, rs, get_last_committed() + 1)); return true; @@ -10240,7 +10240,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); ss << "done removing class of osd(s): " << updated; getline(ss, rs); - wait_for_finished_proposal( + wait_for_commit( op, new Monitor::C_Command(mon,op, 0, rs, get_last_committed() + 1)); return true; @@ -10670,7 +10670,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << action << " item id " << osdid << " name '" << osd_name << "' weight " << weight << " at location " << loc << " to crush map"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -10719,7 +10719,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, << "' weight " << weight << " at location " << loc << " to crush map"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -10758,7 +10758,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.crush.clear(); newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -10811,7 +10811,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "swapped bucket of " << source << " to " << dest; pending_inc.crush.clear(); newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); - wait_for_finished_proposal(op, + wait_for_commit(op, new Monitor::C_Command(mon, op, err, ss.str(), get_last_committed() + 1)); return true; @@ -10868,7 +10868,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, err = 0; } } - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, err, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, err, ss.str(), get_last_committed() + 1)); return true; } else if (prefix == "osd crush rm" || @@ -10890,7 +10890,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, err = 0; ss << "device '" << name << "' does not appear in the crush map"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -10924,7 +10924,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.new_crush_node_flags[id] = 0; ss << "removed item id " << id << " name '" << name << "' from crush map"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -10938,7 +10938,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); ss << "reweighted crush hierarchy"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd crush reweight") { @@ -10976,7 +10976,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "reweighted item id " << id << " name '" << name << "' to " << w << " in crush map"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd crush reweight-subtree") { @@ -11014,7 +11014,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "reweighted subtree id " << id << " name '" << name << "' to " << w << " in crush map"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd crush tunables") { @@ -11052,7 +11052,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); ss << "adjusted tunables profile to " << profile; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd crush set-tunable") { @@ -11092,7 +11092,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); ss << "adjusted tunable " << tunable << " to " << value; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11132,7 +11132,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11171,7 +11171,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11197,7 +11197,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else { @@ -11275,7 +11275,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11336,7 +11336,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11377,7 +11377,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11415,7 +11415,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.crush.clear(); newcrush.encode(pending_inc.crush, mon.get_quorum_con_features()); getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11455,7 +11455,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.new_max_osd = newmax; ss << "set new max_osd = " << pending_inc.new_max_osd; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -11477,7 +11477,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.new_nearfull_ratio = n; ss << prefix << " " << n; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd set-require-min-compat-client") { @@ -11542,7 +11542,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "set require_min_compat_client to " << vno; pending_inc.new_require_min_compat_client = vno; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd pause") { @@ -11856,7 +11856,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } if (any) { getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, err, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, err, rs, get_last_committed() + 1)); return true; } @@ -12018,7 +12018,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } if (any) { getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, err, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, err, rs, get_last_committed() + 1)); return true; } @@ -12224,7 +12224,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "pool of " << pgid << " is pending removal"; err = -ENOENT; getline(ss, rs); - wait_for_finished_proposal(op, + wait_for_commit(op, new Monitor::C_Command(mon, op, err, rs, get_last_committed() + 1)); return true; } @@ -12506,7 +12506,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.new_primary_affinity[id] = ww; ss << "set osd." << id << " primary-affinity to " << w << " (" << std::ios::hex << ww << std::ios::dec << ")"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else { @@ -12539,7 +12539,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.new_weight[id] = ww; ss << "reweighted osd." << id << " to " << w << " (" << std::hex << ww << std::dec << ")"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else { @@ -12556,7 +12556,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } pending_inc.new_weight.insert(weights.begin(), weights.end()); - wait_for_finished_proposal( + wait_for_commit( op, new Monitor::C_Command(mon, op, 0, rs, rdata, get_last_committed() + 1)); return true; @@ -12588,7 +12588,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.new_lost[id] = e; ss << "marked osd lost in epoch " << e; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -12693,7 +12693,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } getline(ss, rs); - wait_for_finished_proposal(op, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); force_immediate_propose(); return true; @@ -12748,7 +12748,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } - wait_for_finished_proposal(op, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, rdata, get_last_committed() + 1)); force_immediate_propose(); @@ -12817,7 +12817,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << new_id; rdata.append(ss); } - wait_for_finished_proposal(op, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, rdata, get_last_committed() + 1)); return true; @@ -12836,7 +12836,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } ss << " removed all blocklist entries"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd blocklist" || @@ -12922,7 +12922,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "blocklisting " << addr << " until " << expires << " (" << d << " sec)"; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (blocklistop == "rm") { @@ -12946,7 +12946,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, pending_inc.new_range_blocklist))) { ss << "un-blocklisting " << addr; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } @@ -13001,7 +13001,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "created pool " << poolstr << " snap " << snapname; } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd pool rmsnap") { @@ -13041,7 +13041,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "already removed pool " << poolstr << " snap " << snapname; } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd pool create") { @@ -13218,7 +13218,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "pool '" << poolstr << "' created"; } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; @@ -13300,7 +13300,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, << cpp_strerror(ret); } getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, ret, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, ret, rs, get_last_committed() + 1)); return true; @@ -13312,7 +13312,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd tier add") { @@ -13380,7 +13380,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, np->set_snap_epoch(pending_inc.epoch); // tier will update to our snap info ntp->tier_of = pool_id; ss << "pool '" << tierpoolstr << "' is now (or already was) a tier of '" << poolstr << "'"; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } else if (prefix == "osd tier remove" || @@ -13440,7 +13440,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, np->tiers.erase(tierpool_id); ntp->clear_tier(); ss << "pool '" << tierpoolstr << "' is now (or already was) not a tier of '" << poolstr << "'"; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } else if (prefix == "osd tier set-overlay") { @@ -13497,7 +13497,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ss << "overlay for '" << poolstr << "' is now (or already was) '" << overlaypoolstr << "'"; if (overlay_p->cache_mode == pg_pool_t::CACHEMODE_NONE) ss <<" (WARNING: overlay pool cache_mode is still NONE)"; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } else if (prefix == "osd tier remove-overlay" || @@ -13538,7 +13538,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, np->clear_write_tier(); np->set_last_force_op_resend(pending_inc.epoch); ss << "there is now (or already was) no overlay for '" << poolstr << "'"; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } else if (prefix == "osd tier cache-mode") { @@ -13683,7 +13683,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, base_pool->write_tier == pool_id) ss <<" (WARNING: pool is still configured as read or write tier)"; } - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } else if (prefix == "osd tier add-cache") { @@ -13779,7 +13779,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, ntp->hit_set_params = hsp; ntp->target_max_bytes = size; ss << "pool '" << tierpoolstr << "' is now (or already was) a cache tier of '" << poolstr << "'"; - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, ss.str(), + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, ss.str(), get_last_committed() + 1)); return true; } else if (prefix == "osd pool set-quota") { @@ -13828,7 +13828,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } ss << "set-quota " << field << " = " << value << " for pool " << poolstr; rs = ss.str(); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true; } else if (prefix == "osd pool application enable" || @@ -13952,7 +13952,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, update: getline(ss, rs); - wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs, + wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, get_last_committed() + 1)); return true;