Skip to content

Commit 8bba90c

Browse files
committed
Improved error messages
1 parent 6760c19 commit 8bba90c

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

crates/hyperqueue/src/client/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ macro_rules! rpc_call {
99
match $conn.send_and_receive($message).await? {
1010
$matcher => $crate::Result::Ok(($($result),*)),
1111
$crate::transfer::messages::ToClientMessage::Error(e) => {
12-
$crate::common::error::error(format!("Received error: {:?}", e))
12+
$crate::common::error::error(format!("{}", e))
1313
}
1414
msg => {
1515
$crate::common::error::error(format!("Received an invalid message {:?}", msg))

crates/hyperqueue/src/server/client/submit.rs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::common::placeholders::{
1515
fill_placeholders_after_submit, fill_placeholders_log, normalize_path,
1616
};
1717
use crate::server::Senders;
18-
use crate::server::job::{Job, SubmittedJobDescription};
18+
use crate::server::job::{Job, JobTaskState, SubmittedJobDescription};
1919
use crate::server::state::{State, StateRef};
2020
use crate::transfer::messages::{
2121
JobDescription, JobSubmitDescription, JobTaskDescription, OpenJobResponse, SingleIdSelector,
@@ -390,13 +390,26 @@ pub(crate) fn handle_task_explain(
390390
SingleIdSelector::Specific(job_id) => JobId::new(job_id),
391391
SingleIdSelector::Last => state.last_job_id(),
392392
};
393-
let task_id = TaskId::new(job_id, request.task_id);
394-
match senders.server_control.task_explain(task_id) {
395-
Ok(explanation) => ToClientMessage::TaskExplain(TaskExplainResponse {
396-
task_id,
397-
explanation,
398-
}),
399-
Err(e) => ToClientMessage::Error(e.to_string()),
393+
let Some(job) = state.get_job(job_id) else {
394+
return ToClientMessage::Error("Job not found".to_string());
395+
};
396+
let Some(task) = job.tasks.get(&request.task_id) else {
397+
return ToClientMessage::Error("Task not found".to_string());
398+
};
399+
match task.state {
400+
JobTaskState::Waiting | JobTaskState::Running { .. } => {
401+
let task_id = TaskId::new(job_id, request.task_id);
402+
match senders.server_control.task_explain(task_id) {
403+
Ok(explanation) => ToClientMessage::TaskExplain(TaskExplainResponse {
404+
task_id,
405+
explanation,
406+
}),
407+
Err(e) => ToClientMessage::Error(e.to_string()),
408+
}
409+
}
410+
_ => ToClientMessage::Error(
411+
"Explain command works only for tasks in WAITING or RUNNING state".to_string(),
412+
),
400413
}
401414
}
402415

0 commit comments

Comments
 (0)