string user = "-";
const auto started = ceph::coarse_real_clock::now();
ceph::coarse_real_clock::duration latency{};
- process_request(env.driver, env.rest, &req, uri_prefix,
- *env.auth_registry, &client, env.olog, y,
- scheduler, &user, &latency,
- env.ratelimiting->get_active(),
- env.lua_background,
- env.lua_manager,
- &http_ret);
+ process_request(env, &req, uri_prefix, &client, y,
+ scheduler, &user, &latency, &http_ret);
if (cct->_conf->subsys.should_gather(ceph_subsys_rgw_access, 1)) {
// access log line elements begin per Apache Combined Log Format with additions following
RGWLoadGenIO real_client_io(&renv);
RGWRestfulIO client_io(cct, &real_client_io);
- ActiveRateLimiter ratelimit(cct);
- int ret = process_request(env.driver, env.rest, req, uri_prefix,
- *env.auth_registry, &client_io, env.olog,
- null_yield, nullptr, nullptr, nullptr,
- ratelimit.get_active(),
- nullptr,
- env.lua_manager);
+ int ret = process_request(env, req, uri_prefix, &client_io,
+ null_yield, nullptr, nullptr, nullptr);
if (ret < 0) {
/* we don't really care about return code */
dout(20) << "process_request() returned " << ret << dendl;
return 0;
}
-int process_request(rgw::sal::Driver* const driver,
- RGWREST* const rest,
+int process_request(const RGWProcessEnv& penv,
RGWRequest* const req,
const std::string& frontend_prefix,
- const rgw_auth_registry_t& auth_registry,
RGWRestfulIO* const client_io,
- OpsLogSink* const olog,
optional_yield yield,
rgw::dmclock::Scheduler *scheduler,
string* user,
ceph::coarse_real_clock::duration* latency,
- std::shared_ptr<RateLimiter> ratelimit,
- rgw::lua::Background* lua_background,
- std::unique_ptr<rgw::sal::LuaManager>& lua_manager,
int* http_ret)
{
int ret = client_io->init(g_ceph_context);
req_state rstate(g_ceph_context, &rgw_env, req->id);
req_state *s = &rstate;
- s->ratelimit_data = ratelimit;
+ s->ratelimit_data = penv.ratelimiting->get_active();
+
+ rgw::sal::Driver* driver = penv.driver;
std::unique_ptr<rgw::sal::User> u = driver->get_user(rgw_user());
s->set_user(u);
RGWOp* op = nullptr;
int init_error = 0;
bool should_log = false;
+ RGWREST* rest = penv.rest;
RGWRESTMgr *mgr;
RGWHandler_REST *handler = rest->get_handler(driver, s,
- auth_registry,
+ *penv.auth_registry,
frontend_prefix,
client_io, &mgr, &init_error);
rgw::dmclock::SchedulerCompleter c;
abort_early(s, NULL, -ERR_METHOD_NOT_ALLOWED, handler, yield);
goto done;
}
- s->lua_background = lua_background;
- s->lua_manager = lua_manager.get();
+ s->lua_background = penv.lua_background;
+ s->lua_manager = penv.lua_manager.get();
{
s->trace_enabled = tracing::rgw::tracer.is_enabled();
std::string script;
} else if (rc < 0) {
ldpp_dout(op, 5) << "WARNING: failed to read pre request script. error: " << rc << dendl;
} else {
- rc = rgw::lua::request::execute(driver, rest, olog, s, op, script);
+ rc = rgw::lua::request::execute(driver, rest, penv.olog, s, op, script);
if (rc < 0) {
ldpp_dout(op, 5) << "WARNING: failed to execute pre request script. error: " << rc << dendl;
}
try {
ldpp_dout(op, 2) << "verifying requester" << dendl;
- ret = op->verify_requester(auth_registry, yield);
+ ret = op->verify_requester(*penv.auth_registry, yield);
if (ret < 0) {
dout(10) << "failed to authorize request" << dendl;
abort_early(s, op, ret, handler, yield);
} else if (rc < 0) {
ldpp_dout(op, 5) << "WARNING: failed to read post request script. error: " << rc << dendl;
} else {
- rc = rgw::lua::request::execute(driver, rest, olog, s, op, script);
+ rc = rgw::lua::request::execute(driver, rest, penv.olog, s, op, script);
if (rc < 0) {
ldpp_dout(op, 5) << "WARNING: failed to execute post request script. error: " << rc << dendl;
}
<< e.what() << dendl;
}
if (should_log) {
- rgw_log_op(rest, s, op, olog);
+ rgw_log_op(rest, s, op, penv.olog);
}
if (http_ret != nullptr) {
void set_access_key(RGWAccessKey& key) { access_key = key; }
};
/* process stream request */
-extern int process_request(rgw::sal::Driver* driver,
- RGWREST* rest,
+extern int process_request(const RGWProcessEnv& penv,
RGWRequest* req,
const std::string& frontend_prefix,
- const rgw_auth_registry_t& auth_registry,
RGWRestfulIO* client_io,
- OpsLogSink* olog,
optional_yield y,
rgw::dmclock::Scheduler *scheduler,
std::string* user,
ceph::coarse_real_clock::duration* latency,
- std::shared_ptr<RateLimiter> ratelimit,
- rgw::lua::Background* lua_background,
- std::unique_ptr<rgw::sal::LuaManager>& lua_manager,
int* http_ret = nullptr);
extern int rgw_process_authenticated(RGWHandler_REST* handler,