@@ -19,7 +19,7 @@ pub struct ScheduledData {
1919 pub worker_id : String ,
2020}
2121
22- fn run_scheduled ( data : ScheduledData , script : Script ) {
22+ fn run_scheduled ( data : ScheduledData , script : Script , nc : nats :: Connection ) {
2323 let ( res_tx, res_rx) = tokio:: sync:: oneshot:: channel :: < ( ) > ( ) ;
2424
2525 let task = Task :: Scheduled ( Some ( ScheduledInit :: new ( res_tx, data. scheduled_time ) ) ) ;
@@ -47,12 +47,17 @@ fn run_scheduled(data: ScheduledData, script: Script) {
4747
4848 log:: debug!( "scheduled task listener started" ) ;
4949
50- match local. block_on ( & rt, async { res_rx. await } ) {
50+ match local. block_on ( & rt, async { res_rx. await } ) {
5151 Ok ( ( ) ) => { }
5252 Err ( err) => log:: error!( "failed to wait for end: {err}" ) ,
5353 }
5454
5555 log:: debug!( "scheduled task listener stopped" ) ;
56+
57+ match nc. publish ( & format ! ( "scheduled.ack.{}" , data. id) , b"" ) {
58+ Ok ( ( ) ) => { }
59+ Err ( err) => log:: error!( "failed to ack: {err}" ) ,
60+ }
5661 } ) ;
5762}
5863
@@ -108,11 +113,11 @@ pub fn handle_scheduled(db: sqlx::Pool<sqlx::Postgres>) {
108113 code : crate :: transform:: parse_worker_code ( & worker) ,
109114 env : match worker. env {
110115 Some ( env) => Some ( env. deref ( ) . to_owned ( ) ) ,
111- None => None
116+ None => None ,
112117 } ,
113118 } ;
114119
115- run_scheduled ( data, script) ;
120+ run_scheduled ( data, script, nc . clone ( ) ) ;
116121 }
117122
118123 log:: debug!( "scheduled task listener stopped" ) ;
0 commit comments