.set_default(60)
.set_description(""),
+ Option("rgw_lc_thread_delay", Option::TYPE_INT, Option::LEVEL_ADVANCED)
+ .set_default(0)
+ .set_description("Delay after processing of bucket listing chunks (i.e., per 1000 entries) in milliseconds"),
+
Option("rgw_lc_max_objs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(32)
.set_description("Number of lifecycle data shards")
int ret;
RGWBucketInfo& bucket_info = target->get_bucket_info();
RGWRados::Bucket::List list_op(target);
+ auto delay_ms = cct->_conf->get_val<int64_t>("rgw_lc_thread_delay");
list_op.params.list_versions = false;
/* lifecycle processing does not depend on total order, so can
* take advantage of unorderd listing optimizations--such as
if (going_down())
return 0;
}
- }
+ } /* for objs */
+ std::this_thread::sleep_for(std::chrono::milliseconds(delay_ms));
} while(is_truncated);
}
return 0;
vector<rgw_bucket_dir_entry> objs;
RGWObjectCtx obj_ctx(store);
vector<std::string> result;
+ auto delay_ms = cct->_conf->get_val<int64_t>("rgw_lc_thread_delay");
boost::split(result, shard_id, boost::is_any_of(":"));
string bucket_tenant = result[0];
string bucket_name = result[1];
if (going_down())
return 0;
}
- }
+ } /* for objs */
+ std::this_thread::sleep_for(std::chrono::milliseconds(delay_ms));
} while (is_truncated);
}
} else {