arjun4084346 commented on a change in pull request #3403:
URL: https://github.com/apache/gobblin/pull/3403#discussion_r721772374



##########
File path: 
gobblin-runtime/src/main/java/org/apache/gobblin/service/monitoring/JobStatusRetriever.java
##########
@@ -212,4 +224,60 @@ public static boolean 
isFlowStatus(org.apache.gobblin.service.monitoring.JobStat
     return jobStatus.getJobName() != null && jobStatus.getJobGroup() != null
         && jobStatus.getJobName().equals(JobStatusRetriever.NA_KEY) && 
jobStatus.getJobGroup().equals(JobStatusRetriever.NA_KEY);
   }
+
+  public ExecutionStatus getFlowStatusFromJobStatuses(Iterator<JobStatus> 
jobStatusIterator) {
+    ExecutionStatus flowExecutionStatus = ExecutionStatus.$UNKNOWN;
+
+    if (dagManagerEnabled) {
+      while (jobStatusIterator.hasNext()) {
+        JobStatus jobStatus = jobStatusIterator.next();
+        // Check if this is the flow status instead of a single job status
+        if (JobStatusRetriever.isFlowStatus(jobStatus)) {
+          flowExecutionStatus = 
ExecutionStatus.valueOf(jobStatus.getEventName());
+        }
+      }
+    } else {
+      while (jobStatusIterator.hasNext()) {
+        JobStatus jobStatus = jobStatusIterator.next();
+        if (!JobStatusRetriever.isFlowStatus(jobStatus)) {
+          flowExecutionStatus = 
updatedFlowExecutionStatus(ExecutionStatus.valueOf(jobStatus.getEventName()), 
flowExecutionStatus);
+        }
+      }
+    }
+    return flowExecutionStatus;
+  }
+
+  static ExecutionStatus updatedFlowExecutionStatus(ExecutionStatus 
jobExecutionStatus,
+      ExecutionStatus currentFlowExecutionStatus) {
+    if (currentFlowExecutionStatus == ExecutionStatus.$UNKNOWN) {
+      return jobExecutionStatus;
+    }
+
+    // if any job failed or flow has failed then return failed status
+    if (currentFlowExecutionStatus == ExecutionStatus.FAILED ||
+        jobExecutionStatus == ExecutionStatus.FAILED) {
+      return ExecutionStatus.FAILED;
+    }
+
+    // if any job is cancelled or flow has failed then return failed status
+    if (currentFlowExecutionStatus == ExecutionStatus.CANCELLED ||
+        jobExecutionStatus == ExecutionStatus.CANCELLED) {
+      return ExecutionStatus.CANCELLED;
+    }
+
+    if (currentFlowExecutionStatus == ExecutionStatus.COMPLETE &&
+        jobExecutionStatus == ExecutionStatus.PENDING) {
+      return ExecutionStatus.PENDING;

Review comment:
       Yea, it was incorrectly copied from 
https://github.com/apache/gobblin/commit/59f3beeea1e62dcc1f3901f082e46bc3d237f9fb#diff-141f30f7aa658e9e18316e3e5ecea3b92865dcc88a4c0809b6d5c0ef1598e410
 where initial status was COMPLETE
   I will fix it




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to