@@ -14,12 +14,13 @@ use futures_lite::StreamExt;
1414use log:: error;
1515use prost:: Message ;
1616use std:: collections:: HashMap ;
17- use std:: time:: Instant ;
17+ use std:: time:: { Duration , Instant } ;
1818use taurus_core:: context:: context:: Context ;
1919use taurus_core:: context:: executor:: Executor ;
2020use taurus_core:: context:: registry:: FunctionStore ;
2121use taurus_core:: context:: signal:: Signal ;
2222use tokio:: signal;
23+ use tokio:: time:: sleep;
2324use tonic_health:: pb:: health_server:: HealthServer ;
2425use tucana:: shared:: value:: Kind ;
2526use tucana:: shared:: {
@@ -111,17 +112,30 @@ async fn main() {
111112 None
112113 } ;
113114
114- // Optional: dynamic mode sync at startup
115115 if config. mode == DYNAMIC {
116- FlowUpdateService :: from_url (
116+ let definition_service = FlowUpdateService :: from_url (
117117 config. aquila_url . clone ( ) ,
118118 config. definitions . clone ( ) . as_str ( ) ,
119119 config. aquila_token . clone ( ) ,
120120 )
121- . await
122- . send ( )
123121 . await ;
124122
123+ let mut success = false ;
124+ let mut count = 1 ;
125+ while !success {
126+ success = definition_service. send_with_status ( ) . await ;
127+ if success {
128+ break ;
129+ }
130+
131+ log:: warn!(
132+ "Updating definitions failed, trying again in 2 secs (retry number {})" ,
133+ count
134+ ) ;
135+ count += 1 ;
136+ sleep ( Duration :: from_secs ( 3 ) ) . await ;
137+ }
138+
125139 let usage_service = TaurusRuntimeUsageService :: from_url (
126140 config. aquila_url . clone ( ) ,
127141 config. aquila_token . clone ( ) ,
0 commit comments