2019-04-29 09:05:15 +00:00
|
|
|
package main
|
|
|
|
|
2020-03-29 13:12:44 +00:00
|
|
|
import (
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
"sync"
|
|
|
|
)
|
|
|
|
|
|
|
|
type JobHistoryLogger struct {
|
|
|
|
scheduler Scheduler
|
|
|
|
jobs map[string]Job
|
|
|
|
tasks map[string][]TaskStatus
|
|
|
|
jobStatus JobStatus
|
|
|
|
resources []NodeStatus
|
|
|
|
killedFlag bool
|
2020-05-05 09:22:11 +00:00
|
|
|
mu sync.Mutex
|
2020-03-29 13:12:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
var jobHistoryLoggerInstance *JobHistoryLogger
|
|
|
|
var jobHistoryLoggerInstanceLock sync.Mutex
|
|
|
|
|
|
|
|
func InstanceJobHistoryLogger() *JobHistoryLogger {
|
|
|
|
defer jobHistoryLoggerInstanceLock.Unlock()
|
|
|
|
jobHistoryLoggerInstanceLock.Lock()
|
|
|
|
|
|
|
|
if jobHistoryLoggerInstance == nil {
|
|
|
|
jobHistoryLoggerInstance = &JobHistoryLogger{}
|
|
|
|
}
|
|
|
|
return jobHistoryLoggerInstance
|
|
|
|
}
|
|
|
|
|
2020-05-24 13:07:02 +00:00
|
|
|
func (jhl *JobHistoryLogger) init(conf Configuration) {
|
2020-03-29 13:12:44 +00:00
|
|
|
log.Info("jhl init")
|
|
|
|
jhl.jobs = map[string]Job{}
|
|
|
|
jhl.tasks = map[string][]TaskStatus{}
|
|
|
|
/* retrieve list */
|
|
|
|
}
|
|
|
|
|
|
|
|
func (jhl *JobHistoryLogger) submitJob(job Job) {
|
2020-05-05 09:22:11 +00:00
|
|
|
jhl.mu.Lock()
|
|
|
|
defer jhl.mu.Unlock()
|
2020-04-12 10:42:55 +00:00
|
|
|
log.Debug("submit job", job.Name)
|
2020-03-29 13:12:44 +00:00
|
|
|
jhl.jobs[job.Name] = job
|
|
|
|
jhl.tasks[job.Name] = []TaskStatus{}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (jhl *JobHistoryLogger) updateJobStatus(jobName string, state State) {
|
2020-05-05 09:22:11 +00:00
|
|
|
jhl.mu.Lock()
|
|
|
|
defer jhl.mu.Unlock()
|
2020-04-13 10:26:40 +00:00
|
|
|
log.Debug("update job status", jobName)
|
2020-03-29 13:12:44 +00:00
|
|
|
if job, ok := jhl.jobs[jobName]; ok {
|
|
|
|
job.Status = state
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (jhl *JobHistoryLogger) submitTaskStatus(jobName string, task TaskStatus) {
|
2020-05-05 09:22:11 +00:00
|
|
|
jhl.mu.Lock()
|
|
|
|
defer jhl.mu.Unlock()
|
2020-04-13 10:26:40 +00:00
|
|
|
log.Debug("submit job task status", jobName)
|
2020-03-29 13:12:44 +00:00
|
|
|
if tasks, ok := jhl.tasks[jobName]; ok {
|
|
|
|
jhl.tasks[jobName] = append(tasks, task)
|
|
|
|
}
|
|
|
|
}
|
2020-04-10 10:55:51 +00:00
|
|
|
|
|
|
|
func (jhl *JobHistoryLogger) getTaskStatus(jobName string) []TaskStatus {
|
2020-05-05 09:22:11 +00:00
|
|
|
jhl.mu.Lock()
|
|
|
|
defer jhl.mu.Unlock()
|
2020-04-10 10:55:51 +00:00
|
|
|
if _, ok := jhl.tasks[jobName]; ok {
|
|
|
|
return jhl.tasks[jobName]
|
|
|
|
}
|
|
|
|
return []TaskStatus{}
|
|
|
|
}
|