Skip to content

Commit 43fba89

Browse files
committed
feat(prover): dynamicly detect sentry endpoint from coordinator
1 parent 229eef2 commit 43fba89

File tree

2 files changed

+74
-49
lines changed

2 files changed

+74
-49
lines changed

prover/src/main.rs

+66-48
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,62 @@ struct Args {
3939
log_file: Option<String>,
4040
}
4141

42+
fn start_loop<'a>(
43+
config: &'a Config,
44+
prover: &'a Prover<'a>,
45+
task_cache: Rc<TaskCache>,
46+
log_file: Option<String>,
47+
current_dsn: Option<String>,
48+
) -> Option<String> {
49+
let mut new_dsn: Option<String> = None;
50+
let should_stop = || {
51+
new_dsn = prover.coordinator_client.borrow().get_sentry_dsn();
52+
53+
current_dsn != new_dsn
54+
};
55+
56+
let _guard = current_dsn.clone().map(|dsn| {
57+
log::info!("successfully get dsn from coordinator");
58+
let gurad = sentry::init((
59+
dsn,
60+
sentry::ClientOptions {
61+
release: Some(version::get_version_cow()),
62+
environment: Some(utils::get_environment()),
63+
..Default::default()
64+
},
65+
));
66+
utils::set_logger_with_sentry(log_file);
67+
gurad
68+
});
69+
70+
_guard.iter().for_each(|_| {
71+
sentry::configure_scope(|scope| {
72+
scope.set_tag("prover_type", config.prover_type);
73+
scope.set_tag("partner_name", config.partner_name());
74+
scope.set_tag("prover_name", config.prover_name.clone());
75+
76+
let public_key = sentry::protocol::Value::from(prover.get_public_key());
77+
scope.set_extra("public_key", public_key);
78+
});
79+
80+
sentry::capture_message("test message on start", sentry::Level::Info);
81+
});
82+
83+
log::info!(
84+
"prover start successfully. name: {}, type: {:?}, publickey: {}, version: {}",
85+
config.prover_name,
86+
config.prover_type,
87+
prover.get_public_key(),
88+
version::get_version(),
89+
);
90+
91+
let task_processor = TaskProcessor::new(prover, task_cache);
92+
93+
task_processor.start(should_stop);
94+
95+
new_dsn
96+
}
97+
4298
fn start() -> Result<()> {
4399
let args = Args::parse();
44100

@@ -64,54 +120,16 @@ fn start() -> Result<()> {
64120

65121
let prover = Prover::new(&config, coordinator_listener)?;
66122

67-
let _guard = prover
68-
.coordinator_client
69-
.borrow()
70-
.get_sentry_dsn()
71-
.map(|dsn| {
72-
log::info!("successfully get dsn from coordinator");
73-
let gurad = Some(sentry::init((
74-
dsn,
75-
sentry::ClientOptions {
76-
release: Some(version::get_version_cow()),
77-
environment: Some(utils::get_environment()),
78-
..Default::default()
79-
},
80-
)));
81-
utils::set_logger_with_sentry(args.log_file);
82-
gurad
83-
});
84-
85-
_guard.iter().for_each(|_| {
86-
sentry::configure_scope(|scope| {
87-
scope.set_tag("prover_type", config.prover_type);
88-
scope.set_tag("partner_name", config.partner_name());
89-
scope.set_tag("prover_name", config.prover_name.clone());
90-
});
91-
92-
sentry::capture_message("test message on start", sentry::Level::Info);
93-
});
94-
95-
_guard.iter().for_each(|_| {
96-
sentry::configure_scope(|scope| {
97-
let public_key = sentry::protocol::Value::from(prover.get_public_key());
98-
scope.set_extra("public_key", public_key);
99-
});
100-
});
101-
102-
log::info!(
103-
"prover start successfully. name: {}, type: {:?}, publickey: {}, version: {}",
104-
config.prover_name,
105-
config.prover_type,
106-
prover.get_public_key(),
107-
version::get_version(),
108-
);
109-
110-
let task_processor = TaskProcessor::new(&prover, task_cache);
111-
112-
task_processor.start();
113-
114-
Ok(())
123+
let mut current_dsn = None;
124+
loop {
125+
current_dsn = start_loop(
126+
&config,
127+
&prover,
128+
task_cache.clone(),
129+
args.log_file.clone(),
130+
current_dsn,
131+
);
132+
}
115133
}
116134

117135
fn main() {

prover/src/task_processor.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,15 @@ impl<'a> TaskProcessor<'a> {
1616
TaskProcessor { prover, task_cache }
1717
}
1818

19-
pub fn start(&self) {
19+
pub fn start<F>(&self, mut should_stop: F)
20+
where
21+
F: FnMut() -> bool,
22+
{
2023
loop {
24+
if should_stop() {
25+
log::info!("task processor should stop.");
26+
break;
27+
}
2128
log::info!("start a new round.");
2229
if let Err(err) = self.prove_and_submit() {
2330
if err.is::<GetEmptyTaskError>() {

0 commit comments

Comments
 (0)