From 09bf7471b94b9c2fbb7cf0c52fd9c4e12bc519a8 Mon Sep 17 00:00:00 2001 From: Peter Zhang Date: Fri, 1 Nov 2024 10:56:20 +0800 Subject: [PATCH] add backtrace --- Cargo.lock | 1 + node/storage-async/Cargo.toml | 3 ++- node/storage-async/src/lib.rs | 13 +++++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 64f030e..0959c11 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7327,6 +7327,7 @@ name = "storage-async" version = "0.1.0" dependencies = [ "anyhow", + "backtrace", "eth2_ssz", "shared_types", "storage", diff --git a/node/storage-async/Cargo.toml b/node/storage-async/Cargo.toml index f7e552c..01a693f 100644 --- a/node/storage-async/Cargo.toml +++ b/node/storage-async/Cargo.toml @@ -10,4 +10,5 @@ storage = { path = "../storage" } task_executor = { path = "../../common/task_executor" } tokio = { version = "1.19.2", features = ["sync"] } tracing = "0.1.35" -eth2_ssz = "0.4.0" \ No newline at end of file +eth2_ssz = "0.4.0" +backtrace = "0.3" \ No newline at end of file diff --git a/node/storage-async/src/lib.rs b/node/storage-async/src/lib.rs index 95cf6b5..d40ae7e 100644 --- a/node/storage-async/src/lib.rs +++ b/node/storage-async/src/lib.rs @@ -2,6 +2,7 @@ extern crate tracing; use anyhow::bail; +use backtrace::Backtrace; use shared_types::{ Chunk, ChunkArray, ChunkArrayWithProof, DataRoot, FlowProof, FlowRangeProof, Transaction, }; @@ -148,8 +149,16 @@ impl Store { WORKER_TASK_NAME, ); - rx.await - .unwrap_or_else(|_| bail!(error::Error::Custom("Receiver error".to_string()))) + rx.await.unwrap_or_else(|_| { + let mut backtrace = Backtrace::new(); + let mut frames = backtrace.frames().to_vec(); + if frames.len() > 3 { + frames.drain(0..); //Remove the first 3 unnecessary frames to simplify// backtrace + backtrace = frames.into(); + Some(format!("{:?}", backtrace)); + } + bail!(error::Error::Custom("Receiver error".to_string())) + }) } // FIXME(zz): Refactor the lock and async call here.