mirror of https://github.com/shunfei/cronsun
node: 暂停任务不处理 & 清除无用代码
parent
924838962c
commit
fc4b332d2b
|
@ -32,13 +32,6 @@ type Job struct {
|
||||||
Rules []*JobRule `json:"rules"`
|
Rules []*JobRule `json:"rules"`
|
||||||
Pause bool `json:"pause"` // 可手工控制的状态
|
Pause bool `json:"pause"` // 可手工控制的状态
|
||||||
|
|
||||||
// node 服务使用
|
|
||||||
// 每个任务在单个结点上只支持一个时间规则
|
|
||||||
// 如果需要多个时间规则,需建新的任务
|
|
||||||
schedule string
|
|
||||||
gid string
|
|
||||||
build bool
|
|
||||||
|
|
||||||
// 执行任务的结点,用于记录 job log
|
// 执行任务的结点,用于记录 job log
|
||||||
runOn string
|
runOn string
|
||||||
}
|
}
|
||||||
|
@ -56,7 +49,6 @@ type Cmd struct {
|
||||||
*JobRule
|
*JobRule
|
||||||
|
|
||||||
Schedule string
|
Schedule string
|
||||||
Gid string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cmd) GetID() string {
|
func (c *Cmd) GetID() string {
|
||||||
|
@ -140,36 +132,6 @@ func GetJobFromKv(kv *mvccpb.KeyValue) (job *Job, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Schedule return schedule and group id
|
|
||||||
func (j *Job) Schedule(nid string, gs map[string]*Group, rebuild bool) (sch string, gid string) {
|
|
||||||
if j.Pause {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if j.build && !rebuild {
|
|
||||||
return j.schedule, j.gid
|
|
||||||
}
|
|
||||||
|
|
||||||
j.buildSchedule(nid, gs)
|
|
||||||
return j.schedule, j.gid
|
|
||||||
}
|
|
||||||
|
|
||||||
func (j *Job) buildSchedule(nid string, gs map[string]*Group) {
|
|
||||||
j.build = true
|
|
||||||
for _, r := range j.Rules {
|
|
||||||
for _, id := range r.ExcludeNodeIDs {
|
|
||||||
if nid == id {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if gid, ok := r.included(nid, gs); ok {
|
|
||||||
j.schedule, j.gid = r.Timer, gid
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (j *Job) GetID() string {
|
func (j *Job) GetID() string {
|
||||||
return j.ID
|
return j.ID
|
||||||
}
|
}
|
||||||
|
@ -289,6 +251,10 @@ func (j *Job) Fail(t time.Time, msg string) {
|
||||||
|
|
||||||
func (j *Job) Cmds(nid string, gs map[string]*Group) (cmds map[string]*Cmd) {
|
func (j *Job) Cmds(nid string, gs map[string]*Group) (cmds map[string]*Cmd) {
|
||||||
cmds = make(map[string]*Cmd)
|
cmds = make(map[string]*Cmd)
|
||||||
|
if j.Pause {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
for _, r := range j.Rules {
|
for _, r := range j.Rules {
|
||||||
for _, id := range r.ExcludeNodeIDs {
|
for _, id := range r.ExcludeNodeIDs {
|
||||||
if nid == id {
|
if nid == id {
|
||||||
|
@ -296,13 +262,12 @@ func (j *Job) Cmds(nid string, gs map[string]*Group) (cmds map[string]*Cmd) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if gid, ok := r.included(nid, gs); ok {
|
if _, ok := r.included(nid, gs); ok {
|
||||||
cmd := &Cmd{
|
cmd := &Cmd{
|
||||||
Job: j,
|
Job: j,
|
||||||
JobRule: r,
|
JobRule: r,
|
||||||
|
|
||||||
Schedule: r.Timer,
|
Schedule: r.Timer,
|
||||||
Gid: gid,
|
|
||||||
}
|
}
|
||||||
j.RunOn(nid)
|
j.RunOn(nid)
|
||||||
cmds[cmd.GetID()] = cmd
|
cmds[cmd.GetID()] = cmd
|
||||||
|
|
15
node/job.go
15
node/job.go
|
@ -5,18 +5,3 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Jobs map[string]*models.Job
|
type Jobs map[string]*models.Job
|
||||||
|
|
||||||
func loadJobs(id string, g Groups) (j Jobs, err error) {
|
|
||||||
jobs, err := models.GetJobs()
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
j = make(Jobs, len(jobs))
|
|
||||||
for _, job := range jobs {
|
|
||||||
if sch, _ := job.Schedule(id, g, false); len(sch) > 0 {
|
|
||||||
j[job.GetID()] = job
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
|
@ -95,9 +95,7 @@ func (n *Node) loadJobs() (err error) {
|
||||||
if n.groups, err = models.GetGroups(n.ID); err != nil {
|
if n.groups, err = models.GetGroups(n.ID); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if n.jobs, err = loadJobs(n.ID, n.groups); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
jobs, err := models.GetJobs()
|
jobs, err := models.GetJobs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue