diff --git a/libs/utils/src/lib.rs b/libs/utils/src/lib.rs index d4176911ac..92c243ede3 100644 --- a/libs/utils/src/lib.rs +++ b/libs/utils/src/lib.rs @@ -57,16 +57,20 @@ pub mod serde_regex; /// use with fail::cfg("$name", "return(2000)") #[macro_export] macro_rules! failpoint_sleep_millis_async { - ($name:literal) => {{ + ($name:literal) => { + $crate::failpoint_sleep_millis_async!($name, async {}) + }; + ($name:literal, $pre_sleep:expr) => {{ let should_sleep: Option = (|| { fail::fail_point!($name, |v: Option<_>| { let millis = v.unwrap().parse::().unwrap(); - Some(Duration::from_millis(millis)) + Some(::std::time::Duration::from_millis(millis)) }); None })(); if let Some(d) = should_sleep { tracing::info!("failpoint {:?}: sleeping for {:?}", $name, d); + $pre_sleep.await; tokio::time::sleep(d).await; tracing::info!("failpoint {:?}: sleep done", $name); }