Compare commits

...

1 Commits

Author SHA1 Message Date
Mengran Lan
0bd20e87c9 integrate sentry 2024-08-08 18:25:53 +08:00
11 changed files with 361 additions and 14 deletions

272
prover/Cargo.lock generated
View File

@@ -1083,6 +1083,16 @@ version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
[[package]]
name = "debugid"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d"
dependencies = [
"serde",
"uuid 1.10.0",
]
[[package]]
name = "der"
version = "0.7.9"
@@ -1093,6 +1103,15 @@ dependencies = [
"zeroize",
]
[[package]]
name = "deranged"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
]
[[package]]
name = "derivative"
version = "2.2.0"
@@ -1306,7 +1325,7 @@ dependencies = [
"sha2",
"sha3 0.10.8",
"thiserror",
"uuid",
"uuid 0.8.2",
]
[[package]]
@@ -1612,6 +1631,18 @@ dependencies = [
"subtle",
]
[[package]]
name = "findshlibs"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64"
dependencies = [
"cc",
"lazy_static",
"libc",
"winapi",
]
[[package]]
name = "fixed-hash"
version = "0.8.0"
@@ -2162,6 +2193,17 @@ dependencies = [
"digest 0.10.7",
]
[[package]]
name = "hostname"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9c7c7c8ac16c798734b8a24560c1362120597c40d5e1459f09498f8f6c8f2ba"
dependencies = [
"cfg-if 1.0.0",
"libc",
"windows",
]
[[package]]
name = "http"
version = "0.2.12"
@@ -2783,6 +2825,12 @@ dependencies = [
"num-traits",
]
[[package]]
name = "num-conv"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]]
name = "num-derive"
version = "0.3.3"
@@ -2977,6 +3025,17 @@ dependencies = [
"vcpkg",
]
[[package]]
name = "os_info"
version = "3.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092"
dependencies = [
"log",
"serde",
"windows-sys 0.52.0",
]
[[package]]
name = "pairing"
version = "0.23.0"
@@ -3208,6 +3267,12 @@ dependencies = [
"thiserror",
]
[[package]]
name = "powerfmt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
version = "0.2.17"
@@ -3301,6 +3366,8 @@ dependencies = [
"reqwest-middleware",
"reqwest-retry",
"rlp",
"sentry",
"sentry-log",
"serde",
"serde_json",
"sled",
@@ -3564,6 +3631,7 @@ dependencies = [
"base64 0.22.1",
"bytes",
"encoding_rs",
"futures-channel",
"futures-core",
"futures-util",
"h2 0.4.5",
@@ -4130,6 +4198,124 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
[[package]]
name = "sentry"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5484316556650182f03b43d4c746ce0e3e48074a21e2f51244b648b6542e1066"
dependencies = [
"httpdate",
"native-tls",
"reqwest 0.12.4",
"sentry-backtrace",
"sentry-contexts",
"sentry-core",
"sentry-debug-images",
"sentry-panic",
"sentry-tracing",
"tokio",
"ureq",
]
[[package]]
name = "sentry-backtrace"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40aa225bb41e2ec9d7c90886834367f560efc1af028f1c5478a6cce6a59c463a"
dependencies = [
"backtrace",
"once_cell",
"regex",
"sentry-core",
]
[[package]]
name = "sentry-contexts"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a8dd746da3d16cb8c39751619cefd4fcdbd6df9610f3310fd646b55f6e39910"
dependencies = [
"hostname",
"libc",
"os_info",
"rustc_version 0.4.0",
"sentry-core",
"uname",
]
[[package]]
name = "sentry-core"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "161283cfe8e99c8f6f236a402b9ccf726b201f365988b5bb637ebca0abbd4a30"
dependencies = [
"once_cell",
"rand",
"sentry-types",
"serde",
"serde_json",
]
[[package]]
name = "sentry-debug-images"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fc6b25e945fcaa5e97c43faee0267eebda9f18d4b09a251775d8fef1086238a"
dependencies = [
"findshlibs",
"once_cell",
"sentry-core",
]
[[package]]
name = "sentry-log"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75bbcc61886955045a1dd4bdb173412a80bb2571be3c5bfcf7eb8f55a442bbf5"
dependencies = [
"log",
"sentry-core",
]
[[package]]
name = "sentry-panic"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc74f229c7186dd971a9491ffcbe7883544aa064d1589bd30b83fb856cd22d63"
dependencies = [
"sentry-backtrace",
"sentry-core",
]
[[package]]
name = "sentry-tracing"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd3c5faf2103cd01eeda779ea439b68c4ee15adcdb16600836e97feafab362ec"
dependencies = [
"sentry-backtrace",
"sentry-core",
"tracing-core",
"tracing-subscriber",
]
[[package]]
name = "sentry-types"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d68cdf6bc41b8ff3ae2a9c4671e97426dcdd154cc1d4b6b72813f285d6b163f"
dependencies = [
"debugid",
"hex",
"rand",
"serde",
"serde_json",
"thiserror",
"time",
"url",
"uuid 1.10.0",
]
[[package]]
name = "serde"
version = "1.0.203"
@@ -4592,6 +4778,37 @@ dependencies = [
"num_cpus",
]
[[package]]
name = "time"
version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [
"deranged",
"itoa",
"num-conv",
"powerfmt",
"serde",
"time-core",
"time-macros",
]
[[package]]
name = "time-core"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
dependencies = [
"num-conv",
"time-core",
]
[[package]]
name = "tiny-keccak"
version = "2.0.2"
@@ -4626,6 +4843,7 @@ dependencies = [
"bytes",
"libc",
"mio",
"num_cpus",
"pin-project-lite",
"socket2",
"windows-sys 0.48.0",
@@ -4763,6 +4981,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
dependencies = [
"once_cell",
"valuable",
]
[[package]]
@@ -4775,6 +4994,15 @@ dependencies = [
"tracing",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
dependencies = [
"tracing-core",
]
[[package]]
name = "try-lock"
version = "0.2.5"
@@ -4826,6 +5054,15 @@ dependencies = [
"static_assertions",
]
[[package]]
name = "uname"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8"
dependencies = [
"libc",
]
[[package]]
name = "unarray"
version = "0.1.4"
@@ -4871,6 +5108,19 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "ureq"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea"
dependencies = [
"base64 0.22.1",
"log",
"native-tls",
"once_cell",
"url",
]
[[package]]
name = "url"
version = "2.5.0"
@@ -4880,6 +5130,7 @@ dependencies = [
"form_urlencoded",
"idna",
"percent-encoding",
"serde",
]
[[package]]
@@ -4904,6 +5155,15 @@ dependencies = [
"serde",
]
[[package]]
name = "uuid"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
dependencies = [
"serde",
]
[[package]]
name = "valuable"
version = "0.1.0"
@@ -5093,6 +5353,16 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [
"windows-core",
"windows-targets 0.52.5",
]
[[package]]
name = "windows-core"
version = "0.52.0"

View File

@@ -46,3 +46,5 @@ sled = "0.34.7"
http = "1.1.0"
clap = { version = "4.5", features = ["derive"] }
ctor = "0.2.8"
sentry = "0.34.0"
sentry-log = "0.34.0"

View File

@@ -3,7 +3,7 @@
"keystore_path": "keystore.json",
"keystore_password": "prover-pwd",
"db_path": "unique-db-path-for-prover-1",
"proof_type": 2,
"prover_type": 2,
"low_version_circuit": {
"hard_fork_name": "bernoulli",
"params_path": "params",
@@ -22,5 +22,9 @@
},
"l2geth": {
"endpoint": "http://localhost:9999"
},
"sentry": {
"dsn": "",
"enabled": true
}
}

View File

@@ -24,6 +24,12 @@ pub struct L2GethConfig {
pub endpoint: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SentryConfig {
pub dsn: String,
pub enabled: bool,
}
#[derive(Debug, Deserialize)]
pub struct Config {
pub prover_name: String,
@@ -35,6 +41,7 @@ pub struct Config {
pub high_version_circuit: CircuitConfig,
pub coordinator: CoordinatorConfig,
pub l2geth: Option<L2GethConfig>,
pub sentry: Option<SentryConfig>,
}
impl Config {
@@ -49,6 +56,10 @@ impl Config {
let file = File::open(file_name)?;
Config::from_reader(&file)
}
pub fn partner_name(&self) -> String {
todo!()
}
}
static SCROLL_PROVER_ASSETS_DIR_ENV_NAME: &str = "SCROLL_PROVER_ASSETS_DIR";

View File

@@ -45,10 +45,33 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
std::process::exit(0);
}
utils::log_init(args.log_file);
let config: Config = Config::from_file(args.config_file)?;
let _guard = config.sentry.as_ref().and_then(|conf| {
if conf.enabled {
Some(sentry::init((
conf.dsn.clone(),
sentry::ClientOptions {
release: Some(version::get_version_cow()),
..Default::default()
},
)))
} else {
None
}
});
_guard.iter().for_each(|_| {
sentry::configure_scope(|scope| {
scope.set_tag("prover_type", config.prover_type);
scope.set_tag("partner_name", config.partner_name());
});
sentry::capture_message("test message on start", sentry::Level::Info);
});
utils::log_init(args.log_file, _guard.is_some());
if let Err(e) = AssetsDirEnvConfig::init() {
log::error!("AssetsDirEnvConfig init failed: {:#}", e);
std::process::exit(-2);
@@ -62,6 +85,13 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let prover = Prover::new(&config, coordinator_listener)?;
_guard.iter().for_each(|_| {
sentry::configure_scope(|scope| {
let public_key = sentry::protocol::Value::from(prover.get_public_key());
scope.set_extra("public_key", public_key);
});
});
log::info!(
"prover start successfully. name: {}, type: {:?}, publickey: {}, version: {}",
config.prover_name,

View File

@@ -54,11 +54,14 @@ impl<'a> TaskProcessor<'a> {
);
let result = match self.prover.prove_task(&task_wrapper.task) {
Ok(proof_detail) => self.prover.submit_proof(proof_detail, &task_wrapper.task),
Err(error) => self.prover.submit_error(
&task_wrapper.task,
super::types::ProofFailureType::NoPanic,
error,
),
Err(error) => {
log::error!("failed to prove task, {:#}", error);
self.prover.submit_error(
&task_wrapper.task,
super::types::ProofFailureType::NoPanic,
error,
)
}
};
return result;
}

View File

@@ -1,3 +1,5 @@
use std::fmt::Display;
use ethers_core::types::H256;
use serde::{Deserialize, Deserializer, Serialize, Serializer};
@@ -101,6 +103,13 @@ impl<'de> Deserialize<'de> for ProverType {
}
}
impl Display for ProverType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(format!("{:?}", self).as_str())?;
Ok(())
}
}
#[derive(Serialize, Deserialize, Default)]
pub struct Task {
pub uuid: String,

View File

@@ -6,7 +6,7 @@ use crate::types::{ProverType, TaskType};
static LOG_INIT: Once = Once::new();
/// Initialize log
pub fn log_init(log_file: Option<String>) {
pub fn log_init(log_file: Option<String>, sentry_enabled: bool) {
LOG_INIT.call_once(|| {
let mut builder = env_logger::Builder::from_env(Env::default().default_filter_or("info"));
if let Some(file_path) = log_file {
@@ -20,7 +20,18 @@ pub fn log_init(log_file: Option<String>) {
);
builder.target(env_logger::Target::Pipe(target));
}
builder.init();
let logger = builder.build();
let max_level = logger.filter();
let boxed_logger: Box<dyn log::Log> = if sentry_enabled {
Box::new(sentry_log::SentryLogger::with_dest(logger))
} else {
Box::new(logger)
};
log::set_boxed_logger(boxed_logger)
.map(|()| log::set_max_level(max_level))
.unwrap();
});
}

View File

@@ -1,4 +1,4 @@
use std::cell::OnceCell;
use std::{borrow::Cow, cell::OnceCell};
static DEFAULT_COMMIT: &str = "unknown";
static mut VERSION: OnceCell<String> = OnceCell::new();
@@ -16,3 +16,10 @@ fn init_version() -> String {
pub fn get_version() -> String {
unsafe { VERSION.get_or_init(init_version).clone() }
}
pub fn get_version_cow() -> Cow<'static, str> {
unsafe {
let release: &'static str = std::mem::transmute(get_version().as_str());
std::borrow::Cow::Borrowed(release)
}
}

View File

@@ -226,7 +226,7 @@ mod tests {
#[ctor::ctor]
fn init() {
crate::utils::log_init(None);
crate::utils::log_init(None, false);
log::info!("logger initialized");
}

View File

@@ -247,7 +247,7 @@ mod tests {
#[ctor::ctor]
fn init() {
crate::utils::log_init(None);
crate::utils::log_init(None, false);
log::info!("logger initialized");
}