return req;
}
-void RGWAsyncRadosProcessor::RGWWQ::_process(RGWAsyncRadosRequest *req) {
+void RGWAsyncRadosProcessor::RGWWQ::_process(RGWAsyncRadosRequest *req, ThreadPool::TPHandle& handle) {
processor->handle_request(req);
processor->req_throttle.put(1);
}
}
RGWAsyncRadosProcessor::RGWAsyncRadosProcessor(RGWRados *_store, int num_threads)
- : store(_store), m_tp(store->ctx(), "RGWAsyncRadosProcessor::m_tp", num_threads),
+ : store(_store), m_tp(store->ctx(), "RGWAsyncRadosProcessor::m_tp", "rados_async", num_threads),
req_throttle(store->ctx(), "rgw_async_rados_ops", num_threads * 2),
req_wq(this, g_conf->rgw_op_thread_timeout,
g_conf->rgw_op_thread_suicide_timeout, &m_tp) {
bool _empty();
RGWAsyncRadosRequest *_dequeue();
using ThreadPool::WorkQueue<RGWAsyncRadosRequest>::_process;
- void _process(RGWAsyncRadosRequest *req);
+ void _process(RGWAsyncRadosRequest *req, ThreadPool::TPHandle& handle);
void _dump_queue();
void _clear() {
assert(processor->m_req_queue.empty());
{
is_threaded = true;
reqs_thread = new ReqsThread(this);
- reqs_thread->create();
+ reqs_thread->create("http_manager");
int r = pipe(thread_pipe);
if (r < 0) {
void RGWRadosThread::start()
{
worker = new Worker(cct, this);
- worker->create();
+ worker->create("radosgw");
}
void RGWRadosThread::stop()
if (r < 0)
return r;
+ if (params.unmod_since > 0) {
+ time_t ctime = state->mtime;
+
+ ldout(store->ctx(), 10) << "If-UnModified-Since: " << params.unmod_since << " Last-Modified: " << ctime << dendl;
+ if (ctime > params.unmod_since) {
+ return -ERR_PRECONDITION_FAILED;
+ }
+ }
uint64_t obj_size = state->size;
if (!params.expiration_time.is_zero()) {