From 8057946dc95063d6bac58aa10686986fc17a56d3 Mon Sep 17 00:00:00 2001 From: SuperYoko <90179377+SuperYoko@users.noreply.github.com> Date: Thu, 5 Jan 2023 07:27:49 +0000 Subject: [PATCH] address review --- src/meta/processors/job/JobDescription.cpp | 12 ++++++++---- src/meta/processors/job/JobDescription.h | 3 +++ src/meta/processors/job/JobManager.cpp | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/meta/processors/job/JobDescription.cpp b/src/meta/processors/job/JobDescription.cpp index 97d8bd6482e..d30b597c3a3 100644 --- a/src/meta/processors/job/JobDescription.cpp +++ b/src/meta/processors/job/JobDescription.cpp @@ -83,12 +83,16 @@ cpp2::JobDesc JobDescription::toJobDesc() { return ret; } +bool JobDescription::canForceSetStatus(Status status) { + return status != cpp2::JobStatus::FINISHED; +} + bool JobDescription::setStatus(Status newStatus, bool force) { - if (status_ == cpp2::JobStatus::FINISHED) { - // no one should change the status of a finished job - // in case that recovered job running again, but set finished to finished should be ok - return newStatus == cpp2::JobStatus::FINISHED; + if (!canForceSetStatus(status_)) { + // no need to change time. + return status_ == newStatus; } + if (JobStatus::laterThan(status_, newStatus) && !force) { return false; } diff --git a/src/meta/processors/job/JobDescription.h b/src/meta/processors/job/JobDescription.h index 6ece39444ec..737b9e5a86e 100644 --- a/src/meta/processors/job/JobDescription.h +++ b/src/meta/processors/job/JobDescription.h @@ -170,6 +170,9 @@ class JobDescription { return !(*this == that); } + private: + bool canForceSetStatus(Status status); + private: // Because all jobs are space-level, spaceName is not in paras_. GraphSpaceID space_; diff --git a/src/meta/processors/job/JobManager.cpp b/src/meta/processors/job/JobManager.cpp index aa10809926f..c9d31c417fb 100644 --- a/src/meta/processors/job/JobManager.cpp +++ b/src/meta/processors/job/JobManager.cpp @@ -688,6 +688,7 @@ bool JobManager::isExpiredJob(JobDescription& jobDesc) { auto jobStart = jobDesc.getStartTime(); if (jobStart == 0) { // should not happend, but just in case keep this job + LOG(INFO) << "Job " << jobDesc.getJobId() << " start time is not set, keep it for now"; return false; } auto duration = std::difftime(nebula::time::WallClock::fastNowInSec(), jobStart);