Improve logging when there is an error in the RPC layer

Antonio Scandurra and Max Brunsfeld created

Co-Authored-By: Max Brunsfeld <max@zed.dev>

Change summary

zed/src/rpc.rs       | 16 ++++++++++++++--
zed/src/workspace.rs |  2 +-
2 files changed, 15 insertions(+), 3 deletions(-)

Detailed changes

zed/src/rpc.rs 🔗

@@ -113,7 +113,13 @@ impl Client {
                 async_tungstenite::client_async(format!("wss://{}/rpc", host), stream).await?;
             log::info!("connected to rpc address {}", &*ZED_SERVER_URL);
             let (connection_id, handler) = self.peer.add_connection(stream).await;
-            executor.spawn(handler.run()).detach();
+            executor
+                .spawn(async move {
+                    if let Err(error) = handler.run().await {
+                        log::error!("connection error: {:?}", error);
+                    }
+                })
+                .detach();
             connection_id
         } else if let Some(host) = server_url.strip_prefix("http://") {
             let stream = smol::net::TcpStream::connect(host).await?;
@@ -121,7 +127,13 @@ impl Client {
                 async_tungstenite::client_async(format!("ws://{}/rpc", host), stream).await?;
             log::info!("connected to rpc address {}", &*ZED_SERVER_URL);
             let (connection_id, handler) = self.peer.add_connection(stream).await;
-            executor.spawn(handler.run()).detach();
+            executor
+                .spawn(async move {
+                    if let Err(error) = handler.run().await {
+                        log::error!("connection error: {:?}", error);
+                    }
+                })
+                .detach();
             connection_id
         } else {
             return Err(anyhow!("invalid server url: {}", server_url))?;

zed/src/workspace.rs 🔗

@@ -705,7 +705,7 @@ impl Workspace {
 
         cx.spawn(|_, _| async move {
             if let Err(e) = task.await {
-                log::error!("sharing failed: {}", e);
+                log::error!("sharing failed: {:?}", e);
             }
         })
         .detach();