Fix "what(): map::at" for unknown osds

Vitaliy Filippov 2022-01-24 15:31:28 +03:00
parent b686864dff
commit 9c850613bf
1 changed files with 10 additions and 11 deletions

View File

@ -314,13 +314,12 @@ static void _main(int argc, const char *argv[])
auto location = rados_utils.get_osd_location(osd);
location["osd"] = std::to_string(osd);
osd2location[osd] = location;
if (location.find(settings->mode) != location.end())
{
const auto &osd_loc = location.at(settings->mode);
if (settings->specific_bench_item.empty() || osd_loc == settings->specific_bench_item)
{
osd2location[osd] = location;
bench_items.insert(osd_loc);
}
}
@ -345,16 +344,16 @@ static void _main(int argc, const char *argv[])
unsigned int osd = rados_utils.get_obj_acting_primary(name, settings->pool);
const auto &location = osd2location.at(osd);
const auto &bench_item = location.at(settings->mode);
if (!bench_items.count(bench_item))
continue;
auto &names = name2location[bench_item];
if (names.size() >= (unsigned)settings->threads * 16)
if (osd2location.find(osd) != osd2location.end())
{
bench_items.erase(bench_item);
continue;
const auto &location = osd2location.at(osd);
const auto &bench_item = location.at(settings->mode);
auto &names = name2location[bench_item];
if (names.size() >= (unsigned)settings->threads * 16)
{
bench_items.erase(bench_item);
continue;
}
}
names.push_back(name);