1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-12-12 23:36:44 +00:00
This commit is contained in:
2020-05-24 21:07:02 +08:00
parent 73600d3595
commit 0705c0630d
13 changed files with 486 additions and 843 deletions

View File

@@ -25,7 +25,7 @@ func (jm *JobManager) start() {
jm.isRunning = false
jm.jobStatus = JobStatus{Name: jm.job.Name, tasks: map[string]TaskStatus{}}
jm.network = jm.scheduler.AcquireNetwork()
jm.network = InstanceOfResourcePool().acquireNetwork()
InstanceJobHistoryLogger().submitJob(jm.job)
@@ -34,55 +34,26 @@ func (jm *JobManager) start() {
jm.resources = append(jm.resources, NodeStatus{ClientID: "null"})
}
start := time.Now().Unix()
for i := 0; i < len(jm.job.Tasks); i++ {
var resource NodeStatus
for {
if jm.killedFlag {
break
}
var tmp []NodeStatus
for _, t := range jm.resources {
if t.ClientID != "null" {
tmp = append(tmp, t)
}
}
resource = jm.scheduler.AcquireResource(jm.job, jm.job.Tasks[i], tmp)
if len(resource.Status) > 0 {
break
}
if time.Now().Unix()-start > 30 {
log.Info("Wait too long, return all resource and retry")
for _, tt := range jm.resources {
if tt.ClientID != "null" {
jm.scheduler.ReleaseResource(jm.job, tt)
log.Info("return resource ", tt.ClientID)
jm.resources[i].ClientID = "null"
for _, t := range tt.Status {
jm.scheduler.Detach(t.UUID, jm.job)
}
}
}
i = -1
start = time.Now().Unix()
}
if i == -1 {
break
}
time.Sleep(time.Second * 1)
var nodes []NodeStatus
for {
if jm.killedFlag {
break
}
if len(resource.Status) > 0 {
log.Info("Receive resource", resource)
jm.resources[i] = resource
for _, t := range resource.Status {
jm.scheduler.Attach(t.UUID, jm.job.Name)
}
nodes = jm.scheduler.AcquireResource(jm.job)
if len(nodes) > 0 {
break
}
time.Sleep(time.Second * 1)
}
log.Info("Receive resource", nodes)
jm.resources = nodes
for _, node := range nodes {
for _, t := range node.Status {
InstanceOfResourcePool().attach(t.UUID, jm.job.Name)
}
}
if !jm.killedFlag {
jm.scheduler.UpdateProgress(jm.job, Running)
jm.isRunning = true
@@ -218,7 +189,7 @@ func (jm *JobManager) checkStatus(status []TaskStatus) bool {
jm.resources[i].ClientID = "null"
for _, t := range jm.resources[i].Status {
jm.scheduler.Detach(t.UUID, jm.job)
InstanceOfResourcePool().detach(t.UUID, jm.job)
}
InstanceJobHistoryLogger().submitTaskStatus(jm.job.Name, status[i])
@@ -233,7 +204,7 @@ func (jm *JobManager) checkStatus(status []TaskStatus) bool {
if !flag {
jm.isRunning = false
jm.scheduler.ReleaseNetwork(jm.network)
InstanceOfResourcePool().releaseNetwork(jm.network)
if !jm.killedFlag {
jm.scheduler.UpdateProgress(jm.job, Finished)