@@ -39,6 +39,62 @@ struct Args {
39
39
log_file : Option < String > ,
40
40
}
41
41
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
+
42
98
fn start ( ) -> Result < ( ) > {
43
99
let args = Args :: parse ( ) ;
44
100
@@ -64,54 +120,16 @@ fn start() -> Result<()> {
64
120
65
121
let prover = Prover :: new ( & config, coordinator_listener) ?;
66
122
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
+ }
115
133
}
116
134
117
135
fn main ( ) {
0 commit comments