@@ -38,7 +38,7 @@ pub enum JobTaskState {
3838 end_date : DateTime < Utc > ,
3939 } ,
4040 Failed {
41- started_data : StartedTaskData ,
41+ started_data : Option < StartedTaskData > ,
4242 end_date : DateTime < Utc > ,
4343 error : String ,
4444 } ,
@@ -52,9 +52,9 @@ impl JobTaskState {
5252 pub fn started_data ( & self ) -> Option < & StartedTaskData > {
5353 match self {
5454 JobTaskState :: Running { started_data, .. }
55- | JobTaskState :: Finished { started_data, .. }
56- | JobTaskState :: Failed { started_data, .. } => Some ( started_data ) ,
57- JobTaskState :: Canceled { started_data, .. } => started_data. as_ref ( ) ,
55+ | JobTaskState :: Finished { started_data, .. } => Some ( started_data ) ,
56+ JobTaskState :: Failed { started_data, .. }
57+ | JobTaskState :: Canceled { started_data, .. } => started_data. as_ref ( ) ,
5858 _ => None ,
5959 }
6060 }
@@ -334,20 +334,29 @@ impl Job {
334334 }
335335
336336 pub fn set_failed_state ( & mut self , tako_task_id : TakoTaskId , error : String , backend : & Backend ) {
337- let ( _ , state) = self . get_task_state_mut ( tako_task_id) ;
337+ let ( task_id , state) = self . get_task_state_mut ( tako_task_id) ;
338338 let now = Utc :: now ( ) ;
339339 match state {
340340 JobTaskState :: Running { started_data } => {
341341 * state = JobTaskState :: Failed {
342342 error,
343- started_data : started_data. clone ( ) ,
343+ started_data : Some ( started_data. clone ( ) ) ,
344344 end_date : now,
345345 } ;
346+
346347 self . counters . n_running_tasks -= 1 ;
347- self . counters . n_failed_tasks += 1 ;
348348 }
349- _ => panic ! ( "Invalid worker state, expected Running, got {state:?}" ) ,
349+ JobTaskState :: Waiting => {
350+ * state = JobTaskState :: Failed {
351+ error,
352+ started_data : None ,
353+ end_date : now,
354+ }
355+ }
356+ _ => panic ! ( "Invalid task {task_id} state, expected Running or Waiting, got {state:?}" ) ,
350357 }
358+ self . counters . n_failed_tasks += 1 ;
359+
351360 self . check_termination ( backend, now) ;
352361 }
353362
0 commit comments