if (ret < 0)
return -ret;
- ret = store->svc()->datalog_rados->trim_entries(start_time.to_real_time(), end_time.to_real_time(), start_marker, end_marker);
- if (ret < 0) {
+ if (!specified_shard_id) {
+ cerr << "ERROR: requires a --shard-id" << std::endl;
+ return EINVAL;
+ }
+
+ // loop until -ENODATA
+ do {
+ auto datalog = store->svc()->datalog_rados;
+ ret = datalog->trim_entries(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: trim_entries(): " << cpp_strerror(-ret) << std::endl;
return -ret;
}
int RGWDataChangesLog::trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
const string& start_marker, const string& end_marker)
{
- int ret;
-
if (shard_id > num_shards)
return -EINVAL;
- ret = svc.cls->timelog.trim(oids[shard_id], start_time, end_time, start_marker, end_marker, nullptr, null_yield);
-
- if (ret == -ENOENT || ret == -ENODATA)
- ret = 0;
-
- return ret;
-}
-
-int RGWDataChangesLog::trim_entries(const real_time& start_time, const real_time& end_time,
- const string& start_marker, const string& end_marker)
-{
- for (int shard = 0; shard < num_shards; shard++) {
- int ret = svc.cls->timelog.trim(oids[shard], start_time, end_time, start_marker, end_marker, nullptr, null_yield);
- if (ret == -ENOENT || ret == -ENODATA) {
- continue;
- }
- if (ret < 0)
- return ret;
- }
-
- return 0;
+ return svc.cls->timelog.trim(oids[shard_id], start_time, end_time,
+ start_marker, end_marker, nullptr, null_yield);
}
bool RGWDataChangesLog::going_down()
bool *truncated);
int trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
const string& start_marker, const string& end_marker);
- int trim_entries(const real_time& start_time, const real_time& end_time,
- const string& start_marker, const string& end_marker);
int get_info(int shard_id, RGWDataChangesLogInfo *info);
using LogMarker = RGWDataChangesLogMarker;
{
return log->trim_entries(shard_id, start_time, end_time, start_marker, end_marker);
}
-
-int RGWSI_DataLog_RADOS::trim_entries(const real_time& start_time, const real_time& end_time,
- const string& start_marker, const string& end_marker)
-{
- return log->trim_entries(start_time, end_time, start_marker, end_marker);
-}
-
list<rgw_data_change_log_entry>& entries, RGWDataChangesLogMarker& marker, bool *ptruncated);
int trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
const string& start_marker, const string& end_marker);
- int trim_entries(const real_time& start_time, const real_time& end_time,
- const string& start_marker, const string& end_marker);
};