return ret;
}
- string bucket_ver, master_ver;
- string max_marker;
+ if (bucket->get_info().layout.current_index.layout.type ==
+ rgw::BucketIndexType::Indexless) {
+ cerr << "error, indexless buckets do not maintain stats; bucket=" <<
+ bucket->get_name() << std::endl;
+ return -EINVAL;
+ }
+
+ if (bucket->get_info().layout.logs.empty()) {
+ // this check may be redundant with the previous check of
+ // layout.type; calling back() on an empty vector produces
+ // undefined behavior
+ cerr << "error, layout log list is empty; bucket=" << bucket->get_name() <<
+ std::endl;
+ return -EINVAL;
+ }
const auto& latest_log = bucket->get_info().layout.logs.back();
const auto& index = log_to_index_layout(latest_log);
+ std::string bucket_ver, master_ver;
+ std::string max_marker;
ret = bucket->read_stats(dpp, index, RGW_NO_SHARD, &bucket_ver, &master_ver, stats, &max_marker);
if (ret < 0) {
cerr << "error getting bucket stats bucket=" << bucket->get_name() << " ret=" << ret << std::endl;