"global id 1", "global id 2", "global id 3", "global id 4", "global id 5"
};
+ std::set<std::string> shuffle_global_image_ids;
+ m_policy->add_instances({stringify(m_local_io_ctx.get_instance_id())},
+ &shuffle_global_image_ids);
for (auto const &global_image_id : global_image_ids) {
// map image
map_image(global_image_id);
ASSERT_TRUE(info.instance_id != UNMAPPED_INSTANCE_ID);
}
- std::set<std::string> shuffle_global_image_ids;
m_policy->add_instances({"9876"}, &shuffle_global_image_ids);
for (auto const &global_image_id : shuffle_global_image_ids) {
"global id 6"
};
+ std::set<std::string> shuffle_global_image_ids;
+ m_policy->add_instances({stringify(m_local_io_ctx.get_instance_id())},
+ &shuffle_global_image_ids);
for (auto const &global_image_id : global_image_ids) {
// map image
map_image(global_image_id);
ASSERT_TRUE(info.instance_id != UNMAPPED_INSTANCE_ID);
}
- std::set<std::string> shuffle_global_image_ids;
m_policy->add_instances({"9876"}, &shuffle_global_image_ids);
ASSERT_FALSE(shuffle_global_image_ids.empty());
"global id 6"
};
+ std::set<std::string> shuffle_global_image_ids;
+ m_policy->add_instances({stringify(m_local_io_ctx.get_instance_id())},
+ &shuffle_global_image_ids);
for (auto const &global_image_id : global_image_ids) {
// map image
map_image(global_image_id);
ASSERT_TRUE(info.instance_id != UNMAPPED_INSTANCE_ID);
}
- std::set<std::string> shuffle_global_image_ids;
m_policy->add_instances({"9876"}, &shuffle_global_image_ids);
ASSERT_FALSE(shuffle_global_image_ids.empty());
std::string SimplePolicy::do_map(const InstanceToImageMap& map,
const std::string &global_image_id) {
- auto min_it = map.begin();
- for (auto it = min_it; it != map.end(); ++it) {
+ auto min_it = map.end();
+ for (auto it = map.begin(); it != map.end(); ++it) {
assert(it->second.find(global_image_id) == it->second.end());
- if (it->second.size() < min_it->second.size() &&
- !Policy::is_dead_instance(it->first)) {
+ if (Policy::is_dead_instance(it->first)) {
+ continue;
+ } else if (min_it == map.end()) {
+ min_it = it;
+ } else if (it->second.size() < min_it->second.size()) {
min_it = it;
}
}
+ assert(min_it != map.end());
dout(20) << "global_image_id=" << global_image_id << " maps to instance_id="
<< min_it->first << dendl;
return min_it->first;