Browse Source

Merge branch 'V20220415' into zouap

pull/1919/head
zouap 3 years ago
parent
commit
cd2054599f
3 changed files with 17 additions and 8 deletions
  1. +10
    -3
      models/cloudbrain.go
  2. +4
    -4
      routers/api/v1/repo/modelarts.go
  3. +3
    -1
      routers/repo/cloudbrain.go

+ 10
- 3
models/cloudbrain.go View File

@@ -112,7 +112,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'"`
@@ -185,6 +185,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)
@@ -219,6 +225,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()
} }


@@ -1465,7 +1472,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
} }


@@ -1554,7 +1561,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) {


+ 4
- 4
routers/api/v1/repo/modelarts.go View File

@@ -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)


+ 3
- 1
routers/repo/cloudbrain.go View File

@@ -1170,6 +1170,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 {
@@ -1196,7 +1197,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)
@@ -1318,6 +1319,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 {


Loading…
Cancel
Save