void LogNode::list(const std::optional<std::string> &first,
const std::optional<std::string> &last,
std::map<std::string, bufferlist> &kvs) {
- std::string_view s(*first);
+ std::string_view s = first ? std::string_view(*first) : std::string_view{""};
std::string_view e = last ? std::string_view(*last) : std::string_view{};
for_each_live_entry([&](const auto& ent, uint32_t index) -> bool {
const auto k = ent.get_key();
auto get_omaps(
SeaStoreShard &sharded_seastore,
- std::string start) {
- ObjectStore::omap_iter_seek_t start_from{"", ObjectStore::omap_iter_seek_t::LOWER_BOUND};
+ std::string start,
+ decltype(ObjectStore::omap_iter_seek_t::seek_type) bound =
+ ObjectStore::omap_iter_seek_t::LOWER_BOUND) {
+ ObjectStore::omap_iter_seek_t start_from{start, bound};
std::map<std::string, bufferlist> kvs;
std::function<ObjectStore::omap_iter_ret_t(std::string_view, std::string_view)> callback =
[&kvs] (std::string_view key, std::string_view value)
auto it = std::next(key_for_test_obj.begin(), 2);
auto target_value = *it;
+ kvs = test_obj.get_omaps(*sharded_seastore, target_value,
+ ObjectStore::omap_iter_seek_t::UPPER_BOUND);
+ EXPECT_EQ(kvs.size(), 3);
test_obj.rm_omap_range(*sharded_seastore, std::string(), target_value);
kvs = test_obj.get_omaps(*sharded_seastore, std::string());
EXPECT_EQ(kvs.size(), log_count - 3);