1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-12-15 08:16:43 +00:00

update schedule list sort

This commit is contained in:
2019-07-12 15:35:05 +08:00
parent 5f9a9b00ce
commit b954733a89
3 changed files with 32 additions and 21 deletions

View File

@@ -33,11 +33,8 @@ func (scheduler *SchedulerFCFS) Start() {
jm.scheduler = scheduler jm.scheduler = scheduler
scheduler.jobs[jm.job.Name] = &jm scheduler.jobs[jm.job.Name] = &jm
for i := range scheduler.history { jm.job.Status = Starting
if scheduler.history[i].Name == jm.job.Name { scheduler.history = append(scheduler.history, &jm.job)
scheduler.history[i].Status = Starting
}
}
go func() { go func() {
jm.start() jm.start()
@@ -83,7 +80,6 @@ func (scheduler *SchedulerFCFS) Schedule(job Job) {
defer scheduler.mu.Unlock() defer scheduler.mu.Unlock()
scheduler.queue = append(scheduler.queue, job) scheduler.queue = append(scheduler.queue, job)
scheduler.history = append(scheduler.history, &job)
job.Status = Created job.Status = Created
} }
@@ -156,7 +152,12 @@ func (scheduler *SchedulerFCFS) QueryLogs(jobName string, taskName string) MsgLo
} }
func (scheduler *SchedulerFCFS) ListJobs() MsgJobList { func (scheduler *SchedulerFCFS) ListJobs() MsgJobList {
return MsgJobList{Code: 0, Jobs: scheduler.history} var tmp []Job
for _, job := range scheduler.history {
tmp = append(tmp, *job)
}
tmp = append(tmp, scheduler.queue...)
return MsgJobList{Code: 0, Jobs: tmp}
} }
func (scheduler *SchedulerFCFS) Summary() MsgSummary { func (scheduler *SchedulerFCFS) Summary() MsgSummary {
@@ -167,7 +168,13 @@ func (scheduler *SchedulerFCFS) Summary() MsgSummary {
runningJobsCounter := 0 runningJobsCounter := 0
pendingJobsCounter := 0 pendingJobsCounter := 0
var tmp []Job
for _, job := range scheduler.history { for _, job := range scheduler.history {
tmp = append(tmp, *job)
}
tmp = append(tmp, scheduler.queue...)
for _, job := range tmp {
switch job.Status { switch job.Status {
case Created: case Created:
pendingJobsCounter++ pendingJobsCounter++

View File

@@ -4,7 +4,6 @@ import (
"sync" "sync"
"time" "time"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"fmt"
) )
type SchedulerPriority struct { type SchedulerPriority struct {
@@ -34,11 +33,8 @@ func (scheduler *SchedulerPriority) Start() {
jm.scheduler = scheduler jm.scheduler = scheduler
scheduler.jobs[jm.job.Name] = &jm scheduler.jobs[jm.job.Name] = &jm
for i := range scheduler.history { jm.job.Status = Starting
if scheduler.history[i].Name == jm.job.Name { scheduler.history = append(scheduler.history, &jm.job)
scheduler.history[i].Status = Starting
}
}
go func() { go func() {
jm.start() jm.start()
@@ -89,28 +85,25 @@ func (scheduler *SchedulerPriority) Schedule(job Job) {
right := len(scheduler.queue) - 1 right := len(scheduler.queue) - 1
for ; left <= right; { for ; left <= right; {
mid := (left + right) / 2 mid := (left + right) / 2
if scheduler.queue[left].Priority > job.Priority { if scheduler.queue[left].Priority < job.Priority {
index = left index = left
break break
} }
if scheduler.queue[right].Priority <= job.Priority { if scheduler.queue[right].Priority >= job.Priority {
index = right + 1 index = right + 1
break break
} }
if scheduler.queue[mid].Priority <= job.Priority { if scheduler.queue[mid].Priority >= job.Priority {
left = mid + 1 left = mid + 1
} else { } else {
right = mid - 1 right = mid - 1
} }
} }
fmt.Println(index)
scheduler.queue = append(scheduler.queue, Job{}) scheduler.queue = append(scheduler.queue, Job{})
copy(scheduler.queue[index+1:], scheduler.queue[index:]) copy(scheduler.queue[index+1:], scheduler.queue[index:])
scheduler.queue[index] = job scheduler.queue[index] = job
fmt.Println(scheduler.queue)
scheduler.history = append(scheduler.history, &job)
job.Status = Created job.Status = Created
} }
@@ -183,7 +176,12 @@ func (scheduler *SchedulerPriority) QueryLogs(jobName string, taskName string) M
} }
func (scheduler *SchedulerPriority) ListJobs() MsgJobList { func (scheduler *SchedulerPriority) ListJobs() MsgJobList {
return MsgJobList{Code: 0, Jobs: scheduler.history} var tmp []Job
for _, job := range scheduler.history {
tmp = append(tmp, *job)
}
tmp = append(tmp, scheduler.queue...)
return MsgJobList{Code: 0, Jobs: tmp}
} }
func (scheduler *SchedulerPriority) Summary() MsgSummary { func (scheduler *SchedulerPriority) Summary() MsgSummary {
@@ -194,7 +192,13 @@ func (scheduler *SchedulerPriority) Summary() MsgSummary {
runningJobsCounter := 0 runningJobsCounter := 0
pendingJobsCounter := 0 pendingJobsCounter := 0
var tmp []Job
for _, job := range scheduler.history { for _, job := range scheduler.history {
tmp = append(tmp, *job)
}
tmp = append(tmp, scheduler.queue...)
for _, job := range tmp {
switch job.Status { switch job.Status {
case Created: case Created:
pendingJobsCounter++ pendingJobsCounter++

View File

@@ -43,7 +43,7 @@ type MsgResource struct {
type MsgJobList struct { type MsgJobList struct {
Code int `json:"code"` Code int `json:"code"`
Error string `json:"error"` Error string `json:"error"`
Jobs []*Job `json:"jobs"` Jobs []Job `json:"jobs"`
} }
type MsgLog struct { type MsgLog struct {