From e29f1a5ec16c00f70c7b505769fbefe98db03d1b Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 20 May 2021 11:00:06 +0800 Subject: [PATCH] common/cmdparse: return cmd option using return value instead of - always returning "true" - returning using an input parameter just return the value with retval. simpler this way. Signed-off-by: Kefu Chai --- src/common/cmdparse.h | 13 +++++-------- src/mgr/DaemonServer.cc | 5 ++--- src/mon/AuthMonitor.cc | 6 ++---- src/mon/ConfigMonitor.cc | 3 +-- src/mon/HealthMonitor.cc | 3 +-- src/mon/KVMonitor.cc | 3 +-- src/mon/LogMonitor.cc | 6 ++---- src/mon/MDSMonitor.cc | 3 +-- src/mon/MgrMonitor.cc | 6 ++---- src/mon/Monitor.cc | 3 +-- src/mon/MonmapMonitor.cc | 6 ++---- src/mon/OSDMonitor.cc | 35 ++++++++++++----------------------- src/mon/PGMap.cc | 13 +++++++------ src/osd/OSD.cc | 26 ++++++++++---------------- src/osd/PrimaryLogPG.cc | 4 ++-- 15 files changed, 51 insertions(+), 84 deletions(-) diff --git a/src/common/cmdparse.h b/src/common/cmdparse.h index 25d72e87920db..da3baaff79d91 100644 --- a/src/common/cmdparse.h +++ b/src/common/cmdparse.h @@ -79,19 +79,16 @@ bool cmd_getval(const cmdmap_t& cmdmap, // with default -template -bool cmd_getval( - const cmdmap_t& cmdmap, std::string_view k, - T& val, const T& defval) +template +T cmd_getval_or(const cmdmap_t& cmdmap, std::string_view k, + const V& defval) { auto found = cmdmap.find(k); if (found == cmdmap.end()) { - val = defval; - return true; + return T(defval); } try { - val = boost::get(cmdmap.find(k)->second); - return true; + return boost::get(cmdmap.find(k)->second); } catch (boost::bad_get&) { throw bad_cmd_get(k, cmdmap); } diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index ea41ba0588709..1bb2e56edc040 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -1046,7 +1046,7 @@ bool DaemonServer::_handle_command( if (boost::algorithm::ends_with(prefix, "_json")) { format = "json"; } else { - cmd_getval(cmdctx->cmdmap, "format", format, string("plain")); + format = cmd_getval_or(cmdctx->cmdmap, "format", "plain"); } f.reset(Formatter::create(format)); } @@ -1408,8 +1408,7 @@ bool DaemonServer::_handle_command( bool dry_run = prefix == "osd test-reweight-by-pg" || prefix == "osd test-reweight-by-utilization"; - int64_t oload; - cmd_getval(cmdctx->cmdmap, "oload", oload, int64_t(120)); + int64_t oload = cmd_getval_or(cmdctx->cmdmap, "oload", 120); set pools; vector poolnames; cmd_getval(cmdctx->cmdmap, "pools", poolnames); diff --git a/src/mon/AuthMonitor.cc b/src/mon/AuthMonitor.cc index 1ffa80a0d053f..bf5b18d5ff9cd 100644 --- a/src/mon/AuthMonitor.cc +++ b/src/mon/AuthMonitor.cc @@ -829,8 +829,7 @@ bool AuthMonitor::preprocess_command(MonOpRequestRef op) return true; } - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "auth export") { @@ -1345,8 +1344,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) cmd_getval(cmdmap, "prefix", prefix); - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); MonSession *session = op->get_session(); diff --git a/src/mon/ConfigMonitor.cc b/src/mon/ConfigMonitor.cc index f34dd0ecb2f23..222d129aa3b24 100644 --- a/src/mon/ConfigMonitor.cc +++ b/src/mon/ConfigMonitor.cc @@ -180,8 +180,7 @@ bool ConfigMonitor::preprocess_command(MonOpRequestRef op) mon.reply_command(op, -EINVAL, rs, get_last_committed()); return true; } - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); string prefix; diff --git a/src/mon/HealthMonitor.cc b/src/mon/HealthMonitor.cc index ae92e8b77521b..bf8cf394bd9a6 100644 --- a/src/mon/HealthMonitor.cc +++ b/src/mon/HealthMonitor.cc @@ -280,8 +280,7 @@ bool HealthMonitor::prepare_command(MonOpRequestRef op) return true; } - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); string prefix; diff --git a/src/mon/KVMonitor.cc b/src/mon/KVMonitor.cc index 4d24d727bbe0a..bfe01bde92c3e 100644 --- a/src/mon/KVMonitor.cc +++ b/src/mon/KVMonitor.cc @@ -146,8 +146,7 @@ bool KVMonitor::preprocess_command(MonOpRequestRef op) mon.reply_command(op, -EINVAL, rs, get_last_committed()); return true; } - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); string prefix; diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index 62b805617efbd..9f44cecd8377f 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -579,8 +579,7 @@ bool LogMonitor::preprocess_command(MonOpRequestRef op) string prefix; cmd_getval(cmdmap, "prefix", prefix); - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "log last") { @@ -736,7 +735,6 @@ bool LogMonitor::prepare_command(MonOpRequestRef op) if (prefix == "log") { vector logtext; - string level_str; cmd_getval(cmdmap, "logtext", logtext); LogEntry le; le.rank = m->get_orig_source(); @@ -744,7 +742,7 @@ bool LogMonitor::prepare_command(MonOpRequestRef op) le.name = session->entity_name; le.stamp = m->get_recv_stamp(); le.seq = 0; - cmd_getval(cmdmap, "level", level_str, string("info")); + string level_str = cmd_getval_or(cmdmap, "level", "info"); le.prio = LogEntry::str_to_level(level_str); le.channel = CLOG_CHANNEL_DEFAULT; le.msg = str_join(logtext, " "); diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 1b927ae358413..4af783ba93f85 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -951,8 +951,7 @@ bool MDSMonitor::preprocess_command(MonOpRequestRef op) string prefix; cmd_getval(cmdmap, "prefix", prefix); - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); std::unique_ptr f(Formatter::create(format)); MonSession *session = op->get_session(); diff --git a/src/mon/MgrMonitor.cc b/src/mon/MgrMonitor.cc index 4c9cfb6efd9db..015f4e8c2fd40 100644 --- a/src/mon/MgrMonitor.cc +++ b/src/mon/MgrMonitor.cc @@ -976,8 +976,7 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op) f->close_section(); f->flush(rdata); } else if (prefix == "mgr dump") { - int64_t epoch = 0; - cmd_getval(cmdmap, "epoch", epoch, (int64_t)map.get_epoch()); + int64_t epoch = cmd_getval_or(cmdmap, "epoch", map.get_epoch()); if (epoch == (int64_t)map.get_epoch()) { f->dump_object("mgrmap", map); } else { @@ -1110,8 +1109,7 @@ bool MgrMonitor::prepare_command(MonOpRequestRef op) return true; } - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); string prefix; diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 5f02325bb089d..d66908f417dca 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -3340,8 +3340,7 @@ void Monitor::handle_command(MonOpRequestRef op) dout(0) << "handle_command " << *m << dendl; - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); get_str_vec(prefix, fullcmd); diff --git a/src/mon/MonmapMonitor.cc b/src/mon/MonmapMonitor.cc index daeb4b572fd7b..11060816be22c 100644 --- a/src/mon/MonmapMonitor.cc +++ b/src/mon/MonmapMonitor.cc @@ -308,8 +308,7 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op) return true; } - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "mon stat") { @@ -344,8 +343,7 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op) prefix == "mon dump") { epoch_t epoch; - int64_t epochnum; - cmd_getval(cmdmap, "epoch", epochnum, (int64_t)0); + int64_t epochnum = cmd_getval_or(cmdmap, "epoch", 0); epoch = epochnum; MonMap *p = mon.monmap; diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 7e8c3450bc60a..3edacd2ea588b 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -5423,8 +5423,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) string prefix; cmd_getval(cmdmap, "prefix", prefix); - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "osd stat") { @@ -5447,11 +5446,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) prefix == "osd ls-tree" || prefix == "osd info") { - epoch_t epoch = 0; - int64_t epochnum; - cmd_getval(cmdmap, "epoch", epochnum, (int64_t)osdmap.get_epoch()); - epoch = epochnum; - + epoch_t epoch = cmd_getval_or(cmdmap, "epoch", osdmap.get_epoch()); bufferlist osdmap_bl; int err = get_version_full(epoch, osdmap_bl); if (err == -ENOENT) { @@ -9691,8 +9686,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, bufferlist rdata; int err = 0; - string format; - cmd_getval(cmdmap, "format", format, string("plain")); + string format = cmd_getval_or(cmdmap, "format", "plain"); boost::scoped_ptr f(Formatter::create(format)); string prefix; @@ -12519,9 +12513,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } if (blocklistop == "add") { utime_t expires = ceph_clock_now(); - double d; // default one hour - cmd_getval(cmdmap, "expire", d, + double d = cmd_getval_or(cmdmap, "expire", g_conf()->mon_osd_blocklist_default_expire); expires += d; @@ -12643,12 +12636,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, get_last_committed() + 1)); return true; } else if (prefix == "osd pool create") { - int64_t pg_num, pg_num_min; - int64_t pgp_num; - cmd_getval(cmdmap, "pg_num", pg_num, int64_t(0)); - cmd_getval(cmdmap, "pgp_num", pgp_num, pg_num); - cmd_getval(cmdmap, "pg_num_min", pg_num_min, int64_t(0)); - + int64_t pg_num = cmd_getval_or(cmdmap, "pg_num", 0); + int64_t pg_num_min = cmd_getval_or(cmdmap, "pg_num_min", 0); + int64_t pgp_num = cmd_getval_or(cmdmap, "pgp_num", pg_num); string pool_type_str; cmd_getval(cmdmap, "pool_type", pool_type_str); if (pool_type_str.empty()) @@ -12719,8 +12709,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, rule_name = poolstr; } } - cmd_getval(cmdmap, "expected_num_objects", - expected_num_objects, int64_t(0)); + expected_num_objects = + cmd_getval_or(cmdmap, "expected_num_objects", 0); } else { //NOTE:for replicated pool,cmd_map will put rule_name to erasure_code_profile field // and put expected_num_objects to rule field @@ -12736,8 +12726,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } rule_name = erasure_code_profile; } else { // cmd is well-formed - cmd_getval(cmdmap, "expected_num_objects", - expected_num_objects, int64_t(0)); + expected_num_objects = + cmd_getval_or(cmdmap, "expected_num_objects", 0); } } @@ -12793,8 +12783,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } } - int64_t fast_read_param; - cmd_getval(cmdmap, "fast_read", fast_read_param, int64_t(-1)); + int64_t fast_read_param = cmd_getval_or(cmdmap, "fast_read", -1); FastReadType fast_read = FAST_READ_DEFAULT; if (fast_read_param == 0) fast_read = FAST_READ_OFF; diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index ab59b3d28506e..c8ea4eabdcfc5 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -35,6 +35,7 @@ using ceph::bufferlist; using ceph::fixed_u_to_string; using TOPNSPC::common::cmd_getval; +using TOPNSPC::common::cmd_getval_or; MEMPOOL_DEFINE_OBJECT_FACTORY(PGMapDigest, pgmap_digest, pgmap); MEMPOOL_DEFINE_OBJECT_FACTORY(PGMap, pgmap, pgmap); @@ -3657,9 +3658,9 @@ int process_pg_map_command( cmd_getval(cmdmap, "stuckops", stuckop_vec); if (stuckop_vec.empty()) stuckop_vec.push_back("unclean"); - int64_t threshold; - cmd_getval(cmdmap, "threshold", threshold, - g_conf().get_val("mon_pg_stuck_threshold")); + const int64_t threshold = cmd_getval_or( + cmdmap, "threshold", + g_conf().get_val("mon_pg_stuck_threshold")); if (pg_map.dump_stuck_pg_stats(ds, f, (int)threshold, stuckop_vec) < 0) { *ss << "failed"; @@ -3671,9 +3672,9 @@ int process_pg_map_command( } if (prefix == "pg debug") { - string debugop; - cmd_getval(cmdmap, "debugop", debugop, - string("unfound_objects_exist")); + const string debugop = cmd_getval_or( + cmdmap, "debugop", + "unfound_objects_exist"); if (debugop == "unfound_objects_exist") { bool unfound_objects_exist = false; for (const auto& p : pg_map.pg_stat) { diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 1cd3cf9fb20ff..5883d921f6a5a 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -211,6 +211,7 @@ using ceph::make_mutex; using namespace ceph::osd::scheduler; using TOPNSPC::common::cmd_getval; +using TOPNSPC::common::cmd_getval_or; static ostream& _prefix(std::ostream* _dout, int whoami, epoch_t epoch) { return *_dout << "osd." << whoami << " " << epoch << " "; @@ -2824,15 +2825,11 @@ will start to track new ops received afterwards."; } else if (prefix == "bench") { - int64_t count; - int64_t bsize; - int64_t osize, onum; // default count 1G, size 4MB - cmd_getval(cmdmap, "count", count, (int64_t)1 << 30); - cmd_getval(cmdmap, "size", bsize, (int64_t)4 << 20); - cmd_getval(cmdmap, "object_size", osize, (int64_t)0); - cmd_getval(cmdmap, "object_num", onum, (int64_t)0); - + int64_t count = cmd_getval_or(cmdmap, "count", 1LL << 30); + int64_t bsize = cmd_getval_or(cmdmap, "size", 4LL << 20); + int64_t osize = cmd_getval_or(cmdmap, "object_size", 0); + int64_t onum = cmd_getval_or(cmdmap, "object_num", 0); uint32_t duration = cct->_conf->osd_bench_duration; if (bsize > (int64_t) cct->_conf->osd_bench_max_block_size) { @@ -6112,8 +6109,7 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, return; } - int64_t shardid; - cmd_getval(cmdmap, "shardid", shardid, int64_t(shard_id_t::NO_SHARD)); + int64_t shardid = cmd_getval_or(cmdmap, "shardid", shard_id_t::NO_SHARD); hobject_t obj(object_t(objname), string(""), CEPH_NOSNAP, rawpg.ps(), pool, nspace); ghobject_t gobj(obj, ghobject_t::NO_GEN, shard_id_t(uint8_t(shardid))); spg_t pgid(curmap->raw_pg_to_pg(rawpg), shard_id_t(shardid)); @@ -6202,8 +6198,7 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, return; } if (command == "set_recovery_delay") { - int64_t delay; - cmd_getval(cmdmap, "utime", delay, (int64_t)0); + int64_t delay = cmd_getval_or(cmdmap, "utime", 0); ostringstream oss; oss << delay; int r = service->cct->_conf.set_val("osd_recovery_delay_start", @@ -6220,11 +6215,10 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, return; } if (command == "injectfull") { - int64_t count; - string type; + int64_t count = cmd_getval_or(cmdmap, "count", -1); + string type = cmd_getval_or(cmdmap, "type", "full"); OSDService::s_names state; - cmd_getval(cmdmap, "type", type, string("full")); - cmd_getval(cmdmap, "count", count, (int64_t)-1); + if (type == "none" || count == 0) { type = "none"; count = 0; diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 0d99ac29ec40c..fb58df19e3d40 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -104,6 +104,7 @@ using ceph::encode_destructively; using namespace ceph::osd::scheduler; using TOPNSPC::common::cmd_getval; +using TOPNSPC::common::cmd_getval_or; template static ostream& _prefix(std::ostream *_dout, T *pg) { @@ -1145,8 +1146,7 @@ void PrimaryLogPG::do_command( else if (prefix == "scrub" || prefix == "deep_scrub") { bool deep = (prefix == "deep_scrub"); - int64_t time; - cmd_getval(cmdmap, "time", time, (int64_t)0); + int64_t time = cmd_getval_or(cmdmap, "time", 0); if (is_primary()) { const pg_pool_t *p = &pool.info; -- 2.39.5