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

bugfix, concurrent map write in job master

This commit is contained in:
2020-07-22 15:27:44 +08:00
parent 72d8083d04
commit 00f69969ce
7 changed files with 65 additions and 30 deletions

View File

@@ -17,13 +17,13 @@ type SchedulerPriority struct {
schedulingJobs map[string]bool
schedulingMu sync.Mutex
jobs map[string]*JobManager
jobMasters map[string]*JobManager
enabled bool
parallelism int
}
func (scheduler *SchedulerPriority) Start() {
scheduler.jobs = map[string]*JobManager{}
scheduler.jobMasters = map[string]*JobManager{}
scheduler.history = []*Job{}
scheduler.enabled = true
scheduler.parallelism = 1
@@ -58,7 +58,7 @@ func (scheduler *SchedulerPriority) Start() {
jm.job = scheduler.queue[0]
scheduler.queue = scheduler.queue[1:]
jm.scheduler = scheduler
scheduler.jobs[jm.job.Name] = &jm
scheduler.jobMasters[jm.job.Name] = &jm
jm.job.Status = Starting
scheduler.historyMu.Lock()
@@ -136,7 +136,7 @@ func (scheduler *SchedulerPriority) Start() {
copy(scheduler.queue[idx+1:], scheduler.queue[idx:])
scheduler.queue[idx] = preempted
delete(scheduler.jobs, preempted.Name)
delete(scheduler.jobMasters, preempted.Name)
for {
after := InstanceOfResourcePool().UsingGPU
@@ -240,7 +240,7 @@ func (scheduler *SchedulerPriority) ReleaseResource(job Job, agent NodeStatus) {
}
func (scheduler *SchedulerPriority) QueryState(jobName string) MsgJobStatus {
jm, ok := scheduler.jobs[jobName]
jm, ok := scheduler.jobMasters[jobName]
if !ok {
return MsgJobStatus{Code: 1, Error: "Job not exist!"}
}
@@ -248,7 +248,7 @@ func (scheduler *SchedulerPriority) QueryState(jobName string) MsgJobStatus {
}
func (scheduler *SchedulerPriority) Stop(jobName string) MsgStop {
jm, ok := scheduler.jobs[jobName]
jm, ok := scheduler.jobMasters[jobName]
if !ok {
return MsgStop{Code: 1, Error: "Job not exist!"}
}
@@ -256,7 +256,7 @@ func (scheduler *SchedulerPriority) Stop(jobName string) MsgStop {
}
func (scheduler *SchedulerPriority) QueryLogs(jobName string, taskName string) MsgLog {
jm, ok := scheduler.jobs[jobName]
jm, ok := scheduler.jobMasters[jobName]
if !ok {
return MsgLog{Code: 1, Error: "Job not exist!"}
}