Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit
91eef6712ad29d6c15907f1663e6143fc4144dec)
Conflicts: store->time_log_trim() instead of svc.cls->timelog.trim()
src/rgw/rgw_metadata.cc no null_yield
}
RGWMetadataLog *meta_log = store->meta_mgr->get_log(period_id);
- ret = meta_log->trim(shard_id, start_time.to_real_time(), end_time.to_real_time(), start_marker, end_marker);
- if (ret < 0) {
+ // trim until -ENODATA
+ do {
+ ret = meta_log->trim(shard_id, start_time.to_real_time(),
+ end_time.to_real_time(), start_marker, end_marker);
+ } while (ret == 0);
+ if (ret < 0 && ret != -ENODATA) {
cerr << "ERROR: meta_log->trim(): " << cpp_strerror(-ret) << std::endl;
return -ret;
}
string oid;
get_shard_oid(shard_id, oid);
- int ret;
-
- ret = store->time_log_trim(oid, from_time, end_time, start_marker, end_marker);
-
- if (ret == -ENOENT || ret == -ENODATA)
- ret = 0;
-
- return ret;
+ return store->time_log_trim(oid, from_time, end_time, start_marker,
+ end_marker, nullptr);
}
int RGWMetadataLog::lock_exclusive(int shard_id, timespan duration, string& zone_id, string& owner_id) {