| @@ -111,7 +111,7 @@ type Cloudbrain struct { | |||||
| SubTaskName string | SubTaskName string | ||||
| ContainerID string | ContainerID string | ||||
| ContainerIp string | ContainerIp string | ||||
| CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | |||||
| CreatedUnix timeutil.TimeStamp `xorm:"INDEX"` | |||||
| UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` | UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` | ||||
| Duration int64 `xorm:"DEFAULT 0"` //运行时长 单位秒 | Duration int64 `xorm:"DEFAULT 0"` //运行时长 单位秒 | ||||
| TrainJobDuration string `xorm:"DEFAULT '00:00:00'"` | TrainJobDuration string `xorm:"DEFAULT '00:00:00'"` | ||||
| @@ -184,6 +184,12 @@ func (task *Cloudbrain) ComputeAndSetDuration() { | |||||
| task.TrainJobDuration = ConvertDurationToStr(d) | task.TrainJobDuration = ConvertDurationToStr(d) | ||||
| } | } | ||||
| func (task *Cloudbrain) CorrectCreateUnix() { | |||||
| if task.StartTime > 0 && task.CreatedUnix > task.StartTime { | |||||
| task.CreatedUnix = task.StartTime | |||||
| } | |||||
| } | |||||
| func (task *Cloudbrain) IsTerminal() bool { | func (task *Cloudbrain) IsTerminal() bool { | ||||
| status := task.Status | status := task.Status | ||||
| return status == string(ModelArtsTrainJobCompleted) || status == string(ModelArtsTrainJobFailed) || status == string(ModelArtsTrainJobKilled) || status == string(ModelArtsStopped) || status == string(JobStopped) || status == string(JobFailed) || status == string(JobSucceeded) | return status == string(ModelArtsTrainJobCompleted) || status == string(ModelArtsTrainJobFailed) || status == string(ModelArtsTrainJobKilled) || status == string(ModelArtsStopped) || status == string(JobStopped) || status == string(JobFailed) || status == string(JobSucceeded) | ||||
| @@ -218,6 +224,7 @@ func ParseAndSetDurationFromCloudBrainOne(result JobResultPayload, task *Cloudbr | |||||
| task.EndTime = timeutil.TimeStamp(result.JobStatus.CompletedTime / 1000) | task.EndTime = timeutil.TimeStamp(result.JobStatus.CompletedTime / 1000) | ||||
| } | } | ||||
| } | } | ||||
| task.CorrectCreateUnix() | |||||
| task.ComputeAndSetDuration() | task.ComputeAndSetDuration() | ||||
| } | } | ||||
| @@ -1464,7 +1471,7 @@ func UpdateTrainJobVersion(job *Cloudbrain) error { | |||||
| func updateJobTrainVersion(e Engine, job *Cloudbrain) error { | func updateJobTrainVersion(e Engine, job *Cloudbrain) error { | ||||
| var sess *xorm.Session | var sess *xorm.Session | ||||
| sess = e.Where("job_id = ? AND version_name=?", job.JobID, job.VersionName) | sess = e.Where("job_id = ? AND version_name=?", job.JobID, job.VersionName) | ||||
| _, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time").Update(job) | |||||
| _, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time", "created_unix").Update(job) | |||||
| return err | return err | ||||
| } | } | ||||
| @@ -1553,7 +1560,7 @@ func UpdateInferenceJob(job *Cloudbrain) error { | |||||
| func updateInferenceJob(e Engine, job *Cloudbrain) error { | func updateInferenceJob(e Engine, job *Cloudbrain) error { | ||||
| var sess *xorm.Session | var sess *xorm.Session | ||||
| sess = e.Where("job_id = ?", job.JobID) | sess = e.Where("job_id = ?", job.JobID) | ||||
| _, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time").Update(job) | |||||
| _, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time", "created_unix").Update(job) | |||||
| return err | return err | ||||
| } | } | ||||
| func RestartCloudbrain(old *Cloudbrain, new *Cloudbrain) (err error) { | func RestartCloudbrain(old *Cloudbrain, new *Cloudbrain) (err error) { | ||||
| @@ -74,6 +74,7 @@ func GetModelArtsNotebook2(ctx *context.APIContext) { | |||||
| if job.EndTime == 0 && models.IsModelArtsDebugJobTerminal(job.Status) { | if job.EndTime == 0 && models.IsModelArtsDebugJobTerminal(job.Status) { | ||||
| job.EndTime = timeutil.TimeStampNow() | job.EndTime = timeutil.TimeStampNow() | ||||
| } | } | ||||
| job.CorrectCreateUnix() | |||||
| job.ComputeAndSetDuration() | job.ComputeAndSetDuration() | ||||
| err = models.UpdateJob(job) | err = models.UpdateJob(job) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -160,6 +161,7 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { | |||||
| } | } | ||||
| if result.JobStatus.State != string(models.JobWaiting) { | if result.JobStatus.State != string(models.JobWaiting) { | ||||
| models.ParseAndSetDurationFromCloudBrainOne(result, job) | |||||
| err = models.UpdateJob(job) | err = models.UpdateJob(job) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("UpdateJob failed:", err) | log.Error("UpdateJob failed:", err) | ||||
| @@ -177,14 +179,12 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { | |||||
| } | } | ||||
| job.Status = modelarts.TransTrainJobStatus(result.IntStatus) | job.Status = modelarts.TransTrainJobStatus(result.IntStatus) | ||||
| job.Duration = result.Duration / 1000 | job.Duration = result.Duration / 1000 | ||||
| job.TrainJobDuration = result.TrainJobDuration | |||||
| job.TrainJobDuration = models.ConvertDurationToStr(job.Duration) | job.TrainJobDuration = models.ConvertDurationToStr(job.Duration) | ||||
| if job.EndTime == 0 && models.IsTrainJobTerminal(job.Status) && job.StartTime > 0 { | if job.EndTime == 0 && models.IsTrainJobTerminal(job.Status) && job.StartTime > 0 { | ||||
| job.EndTime = job.StartTime.Add(job.Duration) | job.EndTime = job.StartTime.Add(job.Duration) | ||||
| } | } | ||||
| job.CorrectCreateUnix() | |||||
| err = models.UpdateTrainJobVersion(job) | err = models.UpdateTrainJobVersion(job) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("UpdateJob failed:", err) | log.Error("UpdateJob failed:", err) | ||||
| @@ -417,7 +417,7 @@ func GetModelArtsInferenceJob(ctx *context.APIContext) { | |||||
| if job.EndTime == 0 && models.IsTrainJobTerminal(job.Status) && job.StartTime > 0 { | if job.EndTime == 0 && models.IsTrainJobTerminal(job.Status) && job.StartTime > 0 { | ||||
| job.EndTime = job.StartTime.Add(job.Duration) | job.EndTime = job.StartTime.Add(job.Duration) | ||||
| } | } | ||||
| job.CorrectCreateUnix() | |||||
| err = models.UpdateInferenceJob(job) | err = models.UpdateInferenceJob(job) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("UpdateJob failed:", err) | log.Error("UpdateJob failed:", err) | ||||
| @@ -1156,6 +1156,7 @@ func SyncCloudbrainStatus() { | |||||
| if task.EndTime == 0 && models.IsModelArtsDebugJobTerminal(task.Status) { | if task.EndTime == 0 && models.IsModelArtsDebugJobTerminal(task.Status) { | ||||
| task.EndTime = timeutil.TimeStampNow() | task.EndTime = timeutil.TimeStampNow() | ||||
| } | } | ||||
| task.CorrectCreateUnix() | |||||
| task.ComputeAndSetDuration() | task.ComputeAndSetDuration() | ||||
| err = models.UpdateJob(task) | err = models.UpdateJob(task) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -1182,7 +1183,7 @@ func SyncCloudbrainStatus() { | |||||
| if task.EndTime == 0 && models.IsTrainJobTerminal(task.Status) && task.StartTime > 0 { | if task.EndTime == 0 && models.IsTrainJobTerminal(task.Status) && task.StartTime > 0 { | ||||
| task.EndTime = task.StartTime.Add(task.Duration) | task.EndTime = task.StartTime.Add(task.Duration) | ||||
| } | } | ||||
| task.CorrectCreateUnix() | |||||
| err = models.UpdateJob(task) | err = models.UpdateJob(task) | ||||
| if err != nil { | if err != nil { | ||||
| log.Error("UpdateJob(%s) failed:%v", task.JobName, err) | log.Error("UpdateJob(%s) failed:%v", task.JobName, err) | ||||
| @@ -1304,6 +1305,7 @@ func handleNoDurationTask(cloudBrains []*models.Cloudbrain) { | |||||
| task.StartTime = timeutil.TimeStamp(startTime / 1000) | task.StartTime = timeutil.TimeStamp(startTime / 1000) | ||||
| task.EndTime = task.StartTime.Add(duration) | task.EndTime = task.StartTime.Add(duration) | ||||
| } | } | ||||
| task.CorrectCreateUnix() | |||||
| task.ComputeAndSetDuration() | task.ComputeAndSetDuration() | ||||
| err = models.UpdateJob(task) | err = models.UpdateJob(task) | ||||
| if err != nil { | if err != nil { | ||||