@@ -3,7 +3,7 @@ use std::collections::{HashMap, HashSet, VecDeque};
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
models::{Flow, Job, ScriptType, JobStatus},
|
models::{Flow, Job, JobStatus, ScriptType},
|
||||||
storage::RedisDriver,
|
storage::RedisDriver,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -394,7 +394,11 @@ async fn deliver_one(
|
|||||||
// if currently Dispatched or WaitingForPrerequisites.
|
// if currently Dispatched or WaitingForPrerequisites.
|
||||||
// This makes DAG.started reflect "in-flight" work even when jobs
|
// This makes DAG.started reflect "in-flight" work even when jobs
|
||||||
// complete too quickly to observe an intermediate supervisor "running" status.
|
// complete too quickly to observe an intermediate supervisor "running" status.
|
||||||
if matches!(job.status(), JobStatus::Dispatched | JobStatus::WaitingForPrerequisites) {
|
if matches!(
|
||||||
|
job.status(),
|
||||||
|
JobStatus::Dispatched
|
||||||
|
| JobStatus::WaitingForPrerequisites
|
||||||
|
) {
|
||||||
let _ = service_poll
|
let _ = service_poll
|
||||||
.update_job_status_unchecked(
|
.update_job_status_unchecked(
|
||||||
context_id,
|
context_id,
|
||||||
@@ -419,7 +423,7 @@ async fn deliver_one(
|
|||||||
)],
|
)],
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
// If result is still empty, immediately request supervisor job.result
|
// If result is still empty, immediately request supervisor job.result
|
||||||
if job.result.is_empty() {
|
if job.result.is_empty() {
|
||||||
let sup = cache
|
let sup = cache
|
||||||
@@ -566,10 +570,13 @@ async fn deliver_one(
|
|||||||
.await;
|
.await;
|
||||||
// Also mark job as Finished so the flow can progress (ignore invalid transitions)
|
// Also mark job as Finished so the flow can progress (ignore invalid transitions)
|
||||||
let _ = service_poll
|
let _ = service_poll
|
||||||
.update_job_status_unchecked(
|
.update_job_status_unchecked(
|
||||||
context_id, caller_id, job_id, JobStatus::Finished,
|
context_id,
|
||||||
)
|
caller_id,
|
||||||
.await;
|
job_id,
|
||||||
|
JobStatus::Finished,
|
||||||
|
)
|
||||||
|
.await;
|
||||||
let _ = service_poll
|
let _ = service_poll
|
||||||
.append_message_logs(
|
.append_message_logs(
|
||||||
context_id,
|
context_id,
|
||||||
@@ -631,16 +638,16 @@ async fn deliver_one(
|
|||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark processed and stop polling for this message
|
// Mark processed and stop polling for this message
|
||||||
let _ = service_poll
|
let _ = service_poll
|
||||||
.update_message_status(
|
.update_message_status(
|
||||||
context_id,
|
context_id,
|
||||||
caller_id,
|
caller_id,
|
||||||
id,
|
id,
|
||||||
MessageStatus::Processed,
|
MessageStatus::Processed,
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
let _ = service_poll
|
let _ = service_poll
|
||||||
.append_message_logs(
|
.append_message_logs(
|
||||||
context_id,
|
context_id,
|
||||||
|
@@ -672,10 +672,16 @@ impl AppService {
|
|||||||
let allowed = match current {
|
let allowed = match current {
|
||||||
JobStatus::Dispatched => matches!(
|
JobStatus::Dispatched => matches!(
|
||||||
new_status,
|
new_status,
|
||||||
JobStatus::WaitingForPrerequisites | JobStatus::Started | JobStatus::Finished | JobStatus::Error
|
JobStatus::WaitingForPrerequisites
|
||||||
|
| JobStatus::Started
|
||||||
|
| JobStatus::Finished
|
||||||
|
| JobStatus::Error
|
||||||
),
|
),
|
||||||
JobStatus::WaitingForPrerequisites => {
|
JobStatus::WaitingForPrerequisites => {
|
||||||
matches!(new_status, JobStatus::Started | JobStatus::Finished | JobStatus::Error)
|
matches!(
|
||||||
|
new_status,
|
||||||
|
JobStatus::Started | JobStatus::Finished | JobStatus::Error
|
||||||
|
)
|
||||||
}
|
}
|
||||||
JobStatus::Started => matches!(new_status, JobStatus::Finished | JobStatus::Error),
|
JobStatus::Started => matches!(new_status, JobStatus::Finished | JobStatus::Error),
|
||||||
JobStatus::Finished | JobStatus::Error => false,
|
JobStatus::Finished | JobStatus::Error => false,
|
||||||
@@ -714,10 +720,16 @@ impl AppService {
|
|||||||
let allowed = match current {
|
let allowed = match current {
|
||||||
JobStatus::Dispatched => matches!(
|
JobStatus::Dispatched => matches!(
|
||||||
new_status,
|
new_status,
|
||||||
JobStatus::WaitingForPrerequisites | JobStatus::Started | JobStatus::Finished | JobStatus::Error
|
JobStatus::WaitingForPrerequisites
|
||||||
|
| JobStatus::Started
|
||||||
|
| JobStatus::Finished
|
||||||
|
| JobStatus::Error
|
||||||
),
|
),
|
||||||
JobStatus::WaitingForPrerequisites => {
|
JobStatus::WaitingForPrerequisites => {
|
||||||
matches!(new_status, JobStatus::Started | JobStatus::Finished | JobStatus::Error)
|
matches!(
|
||||||
|
new_status,
|
||||||
|
JobStatus::Started | JobStatus::Finished | JobStatus::Error
|
||||||
|
)
|
||||||
}
|
}
|
||||||
JobStatus::Started => matches!(new_status, JobStatus::Finished | JobStatus::Error),
|
JobStatus::Started => matches!(new_status, JobStatus::Finished | JobStatus::Error),
|
||||||
JobStatus::Finished | JobStatus::Error => false,
|
JobStatus::Finished | JobStatus::Error => false,
|
||||||
|
Reference in New Issue
Block a user