From 25ff18b2e4b565c1731855febe46bf80a2fc791a Mon Sep 17 00:00:00 2001 From: junxiang Mu <1948535941@qq.com> Date: Tue, 11 Jun 2024 14:23:21 +0800 Subject: [PATCH] crimson/client_request: support inject delay request Signed-off-by: junxiang Mu <1948535941@qq.com> --- src/crimson/osd/osd_operations/client_request.cc | 3 +++ src/crimson/osd/osd_operations/client_request.h | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/crimson/osd/osd_operations/client_request.cc b/src/crimson/osd/osd_operations/client_request.cc index 61a56600a57..a6afe36d305 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 6d1043e2783..f8e0dd92f28 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(); + } }; } -- 2.39.5