1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-12-15 08:16:43 +00:00
This commit is contained in:
2020-06-29 23:24:33 +08:00
parent 769fa702f3
commit 1f32eeea40
7 changed files with 332 additions and 353 deletions

View File

@@ -54,12 +54,14 @@ func (jm *JobManager) start() {
if InstanceOfConfiguration().mock {
jm.scheduler.UpdateProgress(jm.job, Running)
jm.job.Status = Running
jm.isRunning = false
duration := InstanceOfMocker().GetDuration(jm.job, jm.resources)
log.Info("mock ", jm.job.Name, ", wait ", duration)
time.Sleep(time.Second * time.Duration(duration))
jm.returnResource([]TaskStatus{})
jm.scheduler.UpdateProgress(jm.job, Finished)
jm.job.Status = Finished
log.Info("JobMaster exited ", jm.job.Name)
return
}
@@ -67,6 +69,7 @@ func (jm *JobManager) start() {
if !jm.killFlag {
/* switch to Running state */
jm.scheduler.UpdateProgress(jm.job, Running)
jm.job.Status = Running
/* bring up containers */
wg := sync.WaitGroup{}
@@ -149,7 +152,7 @@ func (jm *JobManager) start() {
stats = append(stats, stat)
}
}
InstanceOfOptimizer().feedStats(jm.job, "PS", stats)
InstanceOfOptimizer().FeedStats(jm.job, "PS", stats)
stats = [][]TaskStatus{}
for _, vals := range jm.stats {
var stat []TaskStatus
@@ -164,7 +167,7 @@ func (jm *JobManager) start() {
}
//log.Info(jm.stats)
//log.Info(stats)
InstanceOfOptimizer().feedStats(jm.job, "Worker", stats)
InstanceOfOptimizer().FeedStats(jm.job, "Worker", stats)
jm.returnResource(jm.status().Status)
log.Info("JobMaster exited ", jm.job.Name)
}
@@ -246,11 +249,13 @@ func (jm *JobManager) checkStatus(status []TaskStatus) {
jm.stop(false)
jm.killFlag = true
jm.scheduler.UpdateProgress(jm.job, Failed)
jm.job.Status = Failed
} else if !jm.killFlag {
log.Info("Some instance exited, close others")
jm.stop(false)
jm.killFlag = true
jm.scheduler.UpdateProgress(jm.job, Finished)
jm.job.Status = Finished
}
if jm.resources[i].ClientID != "_released_" {
@@ -271,10 +276,12 @@ func (jm *JobManager) checkStatus(status []TaskStatus) {
jm.stop(false)
jm.killFlag = true
jm.scheduler.UpdateProgress(jm.job, Finished)
jm.job.Status = Finished
}
if !flagRunning && !jm.killFlag {
jm.scheduler.UpdateProgress(jm.job, Finished)
jm.job.Status = Finished
log.Info("finish job ", jm.job.Name)
}
@@ -320,7 +327,7 @@ func (jm *JobManager) logs(taskName string) MsgLog {
func (jm *JobManager) status() MsgJobStatus {
var tasksStatus []TaskStatus
for range jm.job.Tasks { //append would cause uncertain order
tasksStatus = append(tasksStatus, TaskStatus{})
tasksStatus = append(tasksStatus, TaskStatus{TimeStamp: time.Now().Unix()})
}
for i, task := range jm.job.Tasks {
@@ -415,6 +422,7 @@ func (jm *JobManager) stop(force bool) MsgStop {
if force {
jm.killFlag = true
jm.scheduler.UpdateProgress(jm.job, Stopped)
jm.job.Status = Stopped
log.Info("kill job, ", jm.job.Name)
}
}()