when disabled, a null_yield is given to process_request() so that it
runs synchronously. mostly intended for debugging
Signed-off-by: Casey Bodley <cbodley@redhat.com>
default: beast ssl_certificate=config://rgw/cert/$realm/$zone.crt ssl_private_key=config://rgw/cert/$realm/$zone.key
services:
- rgw
+- name: rgw_beast_enable_async
+ type: bool
+ level: dev
+ desc: Enable async request processing under beast using coroutines
+ long_desc: When enabled, the beast frontend will process requests using
+ coroutines, allowing the concurrent processing of several requests on the
+ same thread. When disabled, the number of concurrent requests will be
+ limited by the thread count, but debugging and tracing the synchronous
+ calls can be easier.
+ default: true
+ services:
+ - rgw
+ with_legacy: true
- name: rgw_user_quota_bucket_sync_interval
type: int
level: advanced
rgw::io::add_conlen_controlling(
&real_client))));
RGWRestfulIO client(cct, &real_client_io);
- auto y = optional_yield{context, yield};
+ optional_yield y = null_yield;
+ if (cct->_conf->rgw_beast_enable_async) {
+ y = optional_yield{context, yield};
+ }
int http_ret = 0;
string user = "-";
const auto started = ceph::coarse_real_clock::now();