diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index 001f3462d0..ac86f8c171 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -51,7 +51,7 @@ use std::{ atomic::{AtomicBool, Ordering::SeqCst}, Arc, }, - time::Duration, + time::{Duration, Instant}, }; use tokio::sync::{watch, Semaphore}; use tower::ServiceBuilder; @@ -397,10 +397,16 @@ impl Server { "message received" ); }); + let start_time = Instant::now(); let future = (handler)(*envelope, session); async move { - if let Err(error) = future.await { - tracing::error!(%error, "error handling message"); + let result = future.await; + let duration_ms = start_time.elapsed().as_micros() as f64 / 1000.0; + match result { + Err(error) => { + tracing::error!(%error, ?duration_ms, "error handling message") + } + Ok(()) => tracing::info!(?duration_ms, "finished handling message"), } } .instrument(span)