From fb788a4f74e4be363ce71f29ac2dcbc895768c5c Mon Sep 17 00:00:00 2001 From: miraclesu Date: Wed, 7 Nov 2018 23:11:30 +0800 Subject: [PATCH] fix delete group issue #115 delete jobs run with group before delete group --- node/node.go | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/node/node.go b/node/node.go index f28fecd..f09c8fd 100644 --- a/node/node.go +++ b/node/node.go @@ -304,23 +304,32 @@ func (n *Node) addGroup(g *cronsun.Group) { } func (n *Node) delGroup(id string) { - delete(n.groups, id) - n.link.delGroup(id) + // delete job first + defer n.link.delGroup(id) + defer delete(n.groups, id) - job, ok := n.jobs[id] - // 之前此任务没有在当前结点执行 - if !ok { + jobLinks := n.link[id] + if len(jobLinks) == 0 { return } - cmds := job.Cmds(n.ID, n.groups) - if len(cmds) == 0 { - return + for jID := range jobLinks { + job, ok := n.jobs[jID] + // 之前此任务没有在当前结点执行 + if !ok { + continue + } + + cmds := job.Cmds(n.ID, n.groups) + if len(cmds) == 0 { + continue + } + + for _, cmd := range cmds { + n.delCmd(cmd) + } } - for _, cmd := range cmds { - n.delCmd(cmd) - } return }