prover get sentry endpoint from coordinator

This commit is contained in:
Mengran Lan
2024-08-23 00:10:17 +08:00
parent 1c31cecdf2
commit ee4112525e
10 changed files with 70 additions and 69 deletions

View File

@@ -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 {

View File

@@ -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())
}
}

View File

@@ -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");
}

View File

@@ -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());

View File

@@ -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>>>,
}

View File

@@ -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");
}

View File

@@ -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> {

View File

@@ -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");
}

View File

@@ -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");
}

View File

@@ -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");
}