const std::set<string> &keys,
std::map<string, bufferlist> *out)
{
+ rocksdb::PinnableSlice value;
utime_t start = ceph_clock_now();
auto cf = get_cf_handle(prefix);
if (cf) {
for (auto& key : keys) {
- std::string value;
auto status = db->Get(rocksdb::ReadOptions(),
cf,
rocksdb::Slice(key),
&value);
if (status.ok()) {
- (*out)[key].append(value);
+ (*out)[key].append(value.data(), value.size());
} else if (status.IsIOError()) {
ceph_abort_msg(status.getState());
}
+ value.Reset();
}
} else {
for (auto& key : keys) {
- std::string value;
string k = combine_strings(prefix, key);
auto status = db->Get(rocksdb::ReadOptions(),
default_cf,
rocksdb::Slice(k),
&value);
if (status.ok()) {
- (*out)[key].append(value);
+ (*out)[key].append(value.data(), value.size());
} else if (status.IsIOError()) {
ceph_abort_msg(status.getState());
}
+ value.Reset();
}
}
utime_t lat = ceph_clock_now() - start;
ceph_assert(out && (out->length() == 0));
utime_t start = ceph_clock_now();
int r = 0;
- string value;
+ rocksdb::PinnableSlice value;
rocksdb::Status s;
auto cf = get_cf_handle(prefix);
if (cf) {
&value);
}
if (s.ok()) {
- out->append(value);
+ out->append(value.data(), value.size());
} else if (s.IsNotFound()) {
r = -ENOENT;
} else {
ceph_assert(out && (out->length() == 0));
utime_t start = ceph_clock_now();
int r = 0;
- string value;
+ rocksdb::PinnableSlice value;
rocksdb::Status s;
auto cf = get_cf_handle(prefix);
if (cf) {
&value);
}
if (s.ok()) {
- out->append(value);
+ out->append(value.data(), value.size());
} else if (s.IsNotFound()) {
r = -ENOENT;
} else {