Skip to content

Commit 88392fa

Browse files
authored
Merge pull request #313 from jvanbuel/bugfix/make-state-optional-for-running-dagruns
Make state field optional so running DagRuns can be deserialized correctly
2 parents 1e80cb7 + a3b0de9 commit 88392fa

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

src/airflow/model/taskinstance.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub struct TaskInstance {
2525
#[serde(rename = "end_date", with = "time::serde::iso8601::option")]
2626
pub end_date: Option<OffsetDateTime>,
2727
pub duration: Option<f64>,
28-
pub state: String,
28+
pub state: Option<String>,
2929
#[serde(rename = "try_number")]
3030
pub try_number: i64,
3131
#[serde(rename = "map_index")]

src/app/model/taskinstances.rs

+15-9
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ impl TaskInstanceModel {
8080
pub fn mark_task_instance(&mut self, task_id: &str, status: &str) {
8181
self.filtered.items.iter_mut().for_each(|task_instance| {
8282
if task_instance.task_id == task_id {
83-
task_instance.state = status.to_string();
83+
task_instance.state = Some(status.to_string());
8484
}
8585
});
8686
}
@@ -295,14 +295,20 @@ impl Widget for &mut TaskInstanceModel {
295295
} else {
296296
"None".to_string()
297297
}),
298-
Line::from(match item.state.as_str() {
299-
"success" => state_to_colored_square(AirflowStateColor::Success),
300-
"running" => state_to_colored_square(AirflowStateColor::Running),
301-
"failed" => state_to_colored_square(AirflowStateColor::Failed),
302-
"queued" => state_to_colored_square(AirflowStateColor::Queued),
303-
"up_for_retry" => state_to_colored_square(AirflowStateColor::UpForRetry),
304-
"upstream_failed" => state_to_colored_square(AirflowStateColor::UpstreamFailed),
305-
_ => state_to_colored_square(AirflowStateColor::None),
298+
Line::from(if let Some(state) = &item.state {
299+
match state.as_str() {
300+
"success" => state_to_colored_square(AirflowStateColor::Success),
301+
"running" => state_to_colored_square(AirflowStateColor::Running),
302+
"failed" => state_to_colored_square(AirflowStateColor::Failed),
303+
"queued" => state_to_colored_square(AirflowStateColor::Queued),
304+
"up_for_retry" => state_to_colored_square(AirflowStateColor::UpForRetry),
305+
"upstream_failed" => {
306+
state_to_colored_square(AirflowStateColor::UpstreamFailed)
307+
}
308+
_ => state_to_colored_square(AirflowStateColor::None),
309+
}
310+
} else {
311+
state_to_colored_square(AirflowStateColor::None)
306312
}),
307313
Line::from(format!("{:?}", item.try_number)),
308314
])

src/app/worker.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,11 @@ impl Worker {
169169
app.task_instances.all = task_instances.task_instances;
170170
app.task_instances.filter_task_instances();
171171
}
172-
Err(e) => app.task_instances.errors.push(e),
172+
173+
Err(e) => {
174+
log::error!("Error getting task instances: {:?}", e);
175+
app.task_instances.errors.push(e);
176+
}
173177
}
174178
}
175179
WorkerMessage::GetDagCode { dag_id } => {

0 commit comments

Comments
 (0)