diff --git a/src/common/job/client.go b/src/common/job/client.go index 80ddd16d9..51ce18301 100644 --- a/src/common/job/client.go +++ b/src/common/job/client.go @@ -108,7 +108,7 @@ func (d *DefaultClient) GetJobLog(uuid string) ([]byte, error) { // GetExecutions ... func (d *DefaultClient) GetExecutions(periodicJobID string) ([]job.Stats, error) { - url := fmt.Sprintf("%s/api/v1/jobs/%s/executions", d.endpoint, periodicJobID) + url := fmt.Sprintf("%s/api/v1/jobs/%s/executions?page_number=1&page_size=100", d.endpoint, periodicJobID) req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { return nil, err diff --git a/src/core/api/admin_job.go b/src/core/api/admin_job.go index 679be6b2f..1fbb1be32 100644 --- a/src/core/api/admin_job.go +++ b/src/core/api/admin_job.go @@ -169,7 +169,8 @@ func (aj *AJAPI) getLog(id int64) { aj.SendNotFoundError(errors.New("Failed to get Job")) return } - jobID := job.UUID + + var jobID string // to get the latest execution job id, then to query job log. if job.Kind == common_job.JobKindPeriodic { exes, err := utils_core.GetJobServiceClient().GetExecutions(job.UUID) @@ -178,10 +179,24 @@ func (aj *AJAPI) getLog(id int64) { return } if len(exes) == 0 { - aj.SendNotFoundError(errors.New("no execution log ")) + aj.SendNotFoundError(errors.New("no execution log found")) return } - jobID = exes[0].Info.JobID + // get the latest terminal status execution. + for _, exe := range exes { + if exe.Info.Status == "Error" || exe.Info.Status == "Success" { + jobID = exe.Info.JobID + break + } + } + // no execution found + if jobID == "" { + aj.SendNotFoundError(errors.New("no execution log found")) + return + } + + } else { + jobID = job.UUID } logBytes, err := utils_core.GetJobServiceClient().GetJobLog(jobID)