mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-04-23 03:00:50 -04:00
prover get sentry endpoint from coordinator
This commit is contained in:
@@ -25,12 +25,6 @@ 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,
|
||||
@@ -42,7 +36,6 @@ pub struct Config {
|
||||
pub high_version_circuit: CircuitConfig,
|
||||
pub coordinator: CoordinatorConfig,
|
||||
pub l2geth: Option<L2GethConfig>,
|
||||
pub sentry: Option<SentryConfig>,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
|
||||
@@ -4,7 +4,7 @@ pub mod listener;
|
||||
pub mod types;
|
||||
|
||||
use anyhow::{bail, Context, Ok, Result};
|
||||
use std::rc::Rc;
|
||||
use std::{cell::OnceCell, rc::Rc};
|
||||
|
||||
use api::Api;
|
||||
use errors::*;
|
||||
@@ -19,6 +19,7 @@ pub use errors::{GetEmptyTaskError, ProofStatusNotOKError};
|
||||
pub struct CoordinatorClient<'a> {
|
||||
api: Api,
|
||||
token: Option<String>,
|
||||
sentry_endpoint: OnceCell<Option<String>>,
|
||||
config: &'a Config,
|
||||
key_signer: Rc<KeySigner>,
|
||||
rt: Runtime,
|
||||
@@ -46,6 +47,7 @@ impl<'a> CoordinatorClient<'a> {
|
||||
let mut client = Self {
|
||||
api,
|
||||
token: None,
|
||||
sentry_endpoint: OnceCell::new(),
|
||||
config,
|
||||
key_signer,
|
||||
rt,
|
||||
@@ -90,6 +92,7 @@ impl<'a> CoordinatorClient<'a> {
|
||||
}
|
||||
if let Some(r) = login_response.data {
|
||||
token = r.token;
|
||||
let _ = self.sentry_endpoint.set(r.sentry_endpoint);
|
||||
} else {
|
||||
bail!("login failed: got empty token")
|
||||
}
|
||||
@@ -139,4 +142,8 @@ impl<'a> CoordinatorClient<'a> {
|
||||
) -> Result<Response<SubmitProofResponseData>> {
|
||||
self.action_with_re_login(req, |s, req| s.do_submit_proof(req))
|
||||
}
|
||||
|
||||
pub fn get_sentry_dsn(&self) -> Option<String> {
|
||||
self.sentry_endpoint.get().and_then(|v| v.clone())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ mod tests {
|
||||
|
||||
#[ctor::ctor]
|
||||
fn init() {
|
||||
crate::utils::log_init(None, false);
|
||||
crate::utils::log_init(None);
|
||||
log::info!("logger initialized");
|
||||
}
|
||||
|
||||
|
||||
@@ -48,32 +48,7 @@ fn start() -> Result<()> {
|
||||
|
||||
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()),
|
||||
environment: Some(utils::get_environment()),
|
||||
..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());
|
||||
scope.set_tag("prover_name", config.prover_name.clone());
|
||||
});
|
||||
|
||||
sentry::capture_message("test message on start", sentry::Level::Info);
|
||||
});
|
||||
|
||||
utils::log_init(args.log_file, _guard.is_some());
|
||||
utils::log_init(args.log_file.clone());
|
||||
|
||||
if let Err(e) = AssetsDirEnvConfig::init() {
|
||||
log::error!("AssetsDirEnvConfig init failed: {:#}", e);
|
||||
@@ -88,6 +63,34 @@ fn start() -> Result<()> {
|
||||
|
||||
let prover = Prover::new(&config, coordinator_listener)?;
|
||||
|
||||
let _guard = prover
|
||||
.coordinator_client
|
||||
.borrow()
|
||||
.get_sentry_dsn()
|
||||
.map(|dsn| {
|
||||
log::info!("successfully get dsn from coordinator");
|
||||
let gurad = Some(sentry::init((
|
||||
dsn,
|
||||
sentry::ClientOptions {
|
||||
release: Some(version::get_version_cow()),
|
||||
environment: Some(utils::get_environment()),
|
||||
..Default::default()
|
||||
},
|
||||
)));
|
||||
utils::set_logger_with_sentry(args.log_file);
|
||||
gurad
|
||||
});
|
||||
|
||||
_guard.iter().for_each(|_| {
|
||||
sentry::configure_scope(|scope| {
|
||||
scope.set_tag("prover_type", config.prover_type);
|
||||
scope.set_tag("partner_name", config.partner_name());
|
||||
scope.set_tag("prover_name", config.prover_name.clone());
|
||||
});
|
||||
|
||||
sentry::capture_message("test message on start", sentry::Level::Info);
|
||||
});
|
||||
|
||||
_guard.iter().for_each(|_| {
|
||||
sentry::configure_scope(|scope| {
|
||||
let public_key = sentry::protocol::Value::from(prover.get_public_key());
|
||||
|
||||
@@ -19,7 +19,7 @@ pub struct Prover<'a> {
|
||||
config: &'a Config,
|
||||
key_signer: Rc<KeySigner>,
|
||||
circuits_handler_provider: RefCell<CircuitsHandlerProvider<'a>>,
|
||||
coordinator_client: RefCell<CoordinatorClient<'a>>,
|
||||
pub coordinator_client: RefCell<CoordinatorClient<'a>>,
|
||||
geth_client: Option<Rc<RefCell<GethClient>>>,
|
||||
}
|
||||
|
||||
|
||||
@@ -262,7 +262,7 @@ mod tests {
|
||||
|
||||
#[ctor::ctor]
|
||||
fn init() {
|
||||
crate::utils::log_init(None, false);
|
||||
crate::utils::log_init(None);
|
||||
log::info!("logger initialized");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,38 +1,36 @@
|
||||
use env_logger::Env;
|
||||
use std::{borrow::Cow, fs::OpenOptions, sync::Once};
|
||||
use std::{borrow::Cow, fs::OpenOptions};
|
||||
|
||||
use crate::types::{ProverType, TaskType};
|
||||
|
||||
static LOG_INIT: Once = Once::new();
|
||||
pub fn build_logger(log_file: Option<String>) -> env_logger::Logger {
|
||||
let mut builder = env_logger::Builder::from_env(Env::default().default_filter_or("info"));
|
||||
if let Some(file_path) = log_file {
|
||||
let target = Box::new(
|
||||
OpenOptions::new()
|
||||
.write(true)
|
||||
.create(true)
|
||||
.truncate(false)
|
||||
.open(file_path)
|
||||
.expect("Can't create log file"),
|
||||
);
|
||||
builder.target(env_logger::Target::Pipe(target));
|
||||
}
|
||||
builder.build()
|
||||
}
|
||||
|
||||
/// Initialize log
|
||||
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 {
|
||||
let target = Box::new(
|
||||
OpenOptions::new()
|
||||
.write(true)
|
||||
.create(true)
|
||||
.truncate(false)
|
||||
.open(file_path)
|
||||
.expect("Can't create log file"),
|
||||
);
|
||||
builder.target(env_logger::Target::Pipe(target));
|
||||
}
|
||||
let logger = builder.build();
|
||||
let max_level = logger.filter();
|
||||
pub fn log_init(log_file: Option<String>) {
|
||||
let logger = build_logger(log_file);
|
||||
let max_level = logger.filter();
|
||||
let boxed_logger = Box::new(logger);
|
||||
alterable_logger::configure(max_level, boxed_logger);
|
||||
}
|
||||
|
||||
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();
|
||||
});
|
||||
pub fn set_logger_with_sentry(log_file: Option<String>) {
|
||||
let logger = build_logger(log_file);
|
||||
let max_level = logger.filter();
|
||||
let boxed_logger = Box::new(sentry_log::SentryLogger::with_dest(logger));
|
||||
alterable_logger::configure(max_level, boxed_logger);
|
||||
}
|
||||
|
||||
pub fn get_task_types(prover_type: ProverType) -> Vec<TaskType> {
|
||||
|
||||
@@ -21,7 +21,7 @@ mod tests {
|
||||
|
||||
#[ctor::ctor]
|
||||
fn init() {
|
||||
crate::utils::log_init(None, false);
|
||||
crate::utils::log_init(None);
|
||||
log::info!("logger initialized");
|
||||
}
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ mod tests {
|
||||
|
||||
#[ctor::ctor]
|
||||
fn init() {
|
||||
crate::utils::log_init(None, false);
|
||||
crate::utils::log_init(None);
|
||||
log::info!("logger initialized");
|
||||
}
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ mod tests {
|
||||
|
||||
#[ctor::ctor]
|
||||
fn init() {
|
||||
crate::utils::log_init(None, false);
|
||||
crate::utils::log_init(None);
|
||||
log::info!("logger initialized");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user