LSP: Add request ID to request timeout message (#6010)

This improves error logging for requests - without the ID it's hard to
know which request is the one that timed out.
pull/5991/head
Michael Davis 1 year ago committed by GitHub
parent d8526a752c
commit 0f64f31d8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -201,7 +201,7 @@ impl Client {
let request = jsonrpc::MethodCall { let request = jsonrpc::MethodCall {
jsonrpc: Some(jsonrpc::Version::V2), jsonrpc: Some(jsonrpc::Version::V2),
id, id: id.clone(),
method: R::METHOD.to_string(), method: R::METHOD.to_string(),
params: Self::value_into_params(params), params: Self::value_into_params(params),
}; };
@ -218,7 +218,7 @@ impl Client {
// TODO: delay other calls until initialize success // TODO: delay other calls until initialize success
timeout(Duration::from_secs(timeout_secs), rx.recv()) timeout(Duration::from_secs(timeout_secs), rx.recv())
.await .await
.map_err(|_| Error::Timeout)? // return Timeout .map_err(|_| Error::Timeout(id))? // return Timeout
.ok_or(Error::StreamClosed)? .ok_or(Error::StreamClosed)?
} }
} }

@ -108,6 +108,16 @@ pub enum Id {
Str(String), Str(String),
} }
impl std::fmt::Display for Id {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Id::Null => f.write_str("null"),
Id::Num(num) => write!(f, "{}", num),
Id::Str(string) => f.write_str(string),
}
}
}
/// Protocol Version /// Protocol Version
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)] #[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub enum Version { pub enum Version {

@ -34,8 +34,8 @@ pub enum Error {
Parse(#[from] serde_json::Error), Parse(#[from] serde_json::Error),
#[error("IO Error: {0}")] #[error("IO Error: {0}")]
IO(#[from] std::io::Error), IO(#[from] std::io::Error),
#[error("request timed out")] #[error("request {0} timed out")]
Timeout, Timeout(jsonrpc::Id),
#[error("server closed the stream")] #[error("server closed the stream")]
StreamClosed, StreamClosed,
#[error("Unhandled")] #[error("Unhandled")]

Loading…
Cancel
Save