Browse Source

提交代码

tags/v1.22.11.3^2
ychao_1983 3 years ago
parent
commit
b2c4d645c7
2 changed files with 12 additions and 41 deletions
  1. +1
    -31
      routers/repo/cloudbrain.go
  2. +11
    -10
      services/cloudbrain/cloudbrainTask/sync_status.go

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

@@ -742,43 +742,13 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo
return
}
if task.Status == string(models.JobWaiting) || task.Status == string(models.JobRunning) {
result, err := cloudbrain.GetJob(task.JobID)
task, err = cloudbrainTask.SyncCloudBrainOneStatus(task)
if err != nil {
log.Info("error:" + err.Error())
ctx.NotFound(ctx.Req.URL.RequestURI(), nil)
return
}

if result != nil {
jobRes, _ := models.ConvertToJobResultPayload(result.Payload)
taskRoles := jobRes.TaskRoles
taskRes, _ := models.ConvertToTaskPod(taskRoles[cloudbrain.SubTaskName].(map[string]interface{}))
ctx.Data["taskRes"] = taskRes
ctx.Data["ExitDiagnostics"] = taskRes.TaskStatuses[0].ExitDiagnostics
oldStatus := task.Status
task.Status = taskRes.TaskStatuses[0].State
task.ContainerIp = ""
task.ContainerID = taskRes.TaskStatuses[0].ContainerID
models.ParseAndSetDurationFromCloudBrainOne(jobRes, task)

if task.DeletedAt.IsZero() { //normal record
if oldStatus != task.Status {
notification.NotifyChangeCloudbrainStatus(task, oldStatus)
}
err = models.UpdateJob(task)
if err != nil {
ctx.Data["error"] = err.Error()
return
}
} else { //deleted record

}

ctx.Data["result"] = jobRes
} else {
log.Info("error:" + err.Error())
return
}
}

user, err := models.GetUserByID(task.UserID)


+ 11
- 10
services/cloudbrain/cloudbrainTask/sync_status.go View File

@@ -3,10 +3,10 @@ package cloudbrainTask
import (
"net/http"
"strconv"
"time"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/cloudbrain"
"code.gitea.io/gitea/modules/httplib"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/notification"
"code.gitea.io/gitea/modules/setting"
@@ -17,7 +17,7 @@ var noteBookFailMap = make(map[int64]int, 20)

//if a task notebook url can get successfulCount times, the notebook can browser.
const successfulCount = 3
const maxSuccessfulCount=12
const maxSuccessfulCount=10

func SyncCloudBrainOneStatus(task *models.Cloudbrain) (*models.Cloudbrain, error) {
jobResult, err := cloudbrain.GetJob(task.JobID)
@@ -65,19 +65,23 @@ func isNoteBookReady(task *models.Cloudbrain) bool {
return true
}
noteBookUrl := setting.DebugServerHost + "jpylab_" + task.JobID + "_" + task.SubTaskName
r := httplib.Get(noteBookUrl)
res, err := r.Response()
res,err := http.Get(noteBookUrl)
if err != nil {
return false
}
log.Info("notebook success count:"+strconv.Itoa(noteBookOKMap[task.ID])+",fail count:"+strconv.Itoa(noteBookFailMap[task.ID]))
if res.StatusCode == http.StatusOK {

count := noteBookOKMap[task.ID]
if count < successfulCount-1 || (noteBookFailMap[task.ID]==0 && count < maxSuccessfulCount-1){
if count==0{ //如果是第一次成功,把失败数重置为0
noteBookFailMap[task.ID]=0
}

waitingTime:=time.Now().Unix() - task.CreatedUnix.AsTime().Unix()
if (count < successfulCount-1 || (noteBookFailMap[task.ID]==0 && count < maxSuccessfulCount-1)) && waitingTime<720{
noteBookOKMap[task.ID] = count + 1
return false
} else {
log.Info("notebook success count:"+strconv.Itoa(count)+",fail count:"+strconv.Itoa(count))
log.Info("notebook success count:"+strconv.Itoa(count)+",fail count:"+strconv.Itoa(noteBookFailMap[task.ID]))
delete(noteBookOKMap, task.ID)
delete(noteBookFailMap, task.ID)
return true
@@ -85,9 +89,6 @@ func isNoteBookReady(task *models.Cloudbrain) bool {

}else{
noteBookFailMap[task.ID]+=1
if noteBookOKMap[task.ID]>0{
noteBookOKMap[task.ID]=0
}
}
return false



Loading…
Cancel
Save