MCPcopy Create free account
hub / github.com/It4innovations/hyperqueue / process_task_failed

Method process_task_failed

crates/hyperqueue/src/server/state.rs:113–143  ·  view source on GitHub ↗
(
        &mut self,
        senders: &Senders,
        task_id: TaskId,
        aborted_tasks: Vec<TaskId>,
        info: TaskFailInfo,
    )

Source from the content-addressed store, hash-verified

111 }
112
113 pub fn process_task_failed(
114 &mut self,
115 senders: &Senders,
116 task_id: TaskId,
117 aborted_tasks: Vec<TaskId>,
118 info: TaskFailInfo,
119 ) -> Vec<TaskId> {
120 log::debug!("Task id={task_id} failed: {info:?}");
121
122 let job_id = task_id.job_id();
123 let job = self.get_job_mut(job_id).unwrap();
124 if !aborted_tasks.is_empty() {
125 log::debug!(
126 "Tasks {:?} aborted because of task dependency fails",
127 &aborted_tasks
128 );
129 }
130
131 job.abort_tasks(aborted_tasks, senders);
132 job.set_failed_state(task_id.job_task_id(), info.message, senders);
133
134 if let Some(max_fails) = &job.job_desc.max_fails
135 && job.counters.n_failed_tasks > *max_fails
136 {
137 log::debug!("Max task fails reached for job {}", job.job_id);
138 let task_ids = job.non_finished_task_ids();
139 job.abort_tasks(task_ids.clone(), senders);
140 return task_ids;
141 }
142 Vec::new()
143 }
144
145 pub fn process_task_started(
146 &mut self,

Callers 1

on_task_errorMethod · 0.80

Calls 8

job_idMethod · 0.80
abort_tasksMethod · 0.80
set_failed_stateMethod · 0.80
job_task_idMethod · 0.80
non_finished_task_idsMethod · 0.80
get_job_mutMethod · 0.45
is_emptyMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected