From: junxiang Mu <1948535941@qq.com> Date: Tue, 11 Jun 2024 06:23:21 +0000 (+0800) Subject: crimson/client_request: support inject delay request X-Git-Tag: v20.0.0~338^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=25ff18b2e4b565c1731855febe46bf80a2fc791a;p=ceph.git crimson/client_request: support inject delay request Signed-off-by: junxiang Mu <1948535941@qq.com> --- diff --git a/src/crimson/osd/osd_operations/client_request.cc b/src/crimson/osd/osd_operations/client_request.cc index 61a56600a570..a6afe36d305f 100644 --- a/src/crimson/osd/osd_operations/client_request.cc +++ b/src/crimson/osd/osd_operations/client_request.cc @@ -462,6 +462,9 @@ ClientRequest::do_process( co_return; } } + + co_await maybe_inject_delay(); + if (m->get_oid().name.size() > crimson::common::local_conf()->osd_max_object_name_len) { co_await reply_op_error(pg, -ENAMETOOLONG); diff --git a/src/crimson/osd/osd_operations/client_request.h b/src/crimson/osd/osd_operations/client_request.h index 6d1043e27835..f8e0dd92f280 100644 --- a/src/crimson/osd/osd_operations/client_request.h +++ b/src/crimson/osd/osd_operations/client_request.h @@ -4,6 +4,7 @@ #pragma once #include +#include #include #include @@ -321,6 +322,18 @@ public: }; void put_historic() const; + static interruptible_future<> maybe_inject_delay() { + if (common::local_conf()->osd_debug_inject_dispatch_delay_probability > 0) { + if (rand() % 10000 < + common::local_conf()->osd_debug_inject_dispatch_delay_probability * 10000) { + auto delay_duration = std::chrono::duration( + common::local_conf()->osd_debug_inject_dispatch_delay_duration); + auto a_while = std::chrono::duration_cast(delay_duration); + return seastar::sleep(a_while); + } + } + return seastar::now(); + } }; }