|
4 | 4 | "container/heap" |
5 | 5 | "encoding/json" |
6 | 6 | "fmt" |
7 | | - "log" |
8 | 7 | "sync" |
9 | 8 | "time" |
10 | 9 |
|
@@ -96,7 +95,7 @@ func (tm *TaskManager) AddNewTask(task *model.Task) { |
96 | 95 | Time: delayTime, |
97 | 96 | }) |
98 | 97 | } else { |
99 | | - go tm.assignTask(task, true) |
| 98 | + go tm.assignTask(task) |
100 | 99 | } |
101 | 100 | } |
102 | 101 | } |
@@ -125,7 +124,7 @@ func (tm *TaskManager) receiveNewTask() { |
125 | 124 | Time: delayTime, |
126 | 125 | }) |
127 | 126 | } else { |
128 | | - go tm.assignTask(task, true) |
| 127 | + go tm.assignTask(task) |
129 | 128 | } |
130 | 129 | } |
131 | 130 | } |
@@ -187,18 +186,9 @@ func (tm *TaskManager) receiveServerJoinMessage() { |
187 | 186 | } |
188 | 187 | } |
189 | 188 |
|
190 | | -func (tm *TaskManager) assignTask(task *model.Task, isNewTask bool, oldTaskId ...string) { |
| 189 | +func (tm *TaskManager) assignTask(task *model.Task) { |
191 | 190 | var id string = "" |
192 | | - var err error = nil |
193 | | - if isNewTask { |
194 | | - id = task.Id |
195 | | - } else if len(oldTaskId) > 0 { |
196 | | - id = oldTaskId[0] |
197 | | - } |
198 | | - if err != nil { |
199 | | - log.Printf("error saving task %v\n", err) |
200 | | - return |
201 | | - } |
| 191 | + id = task.Id |
202 | 192 | taskWeight, ok := tm.tasksWeight[task.Meta.TaskType] |
203 | 193 | var minServer *model.Servers |
204 | 194 | minLoadVal := 10000000 |
@@ -228,7 +218,7 @@ func (tm *TaskManager) delayTaskTicker() { |
228 | 218 | if taskI != nil { |
229 | 219 | task := taskI.(*DelayTask) |
230 | 220 | if task.Time-time.Now().Unix() <= 0 { |
231 | | - go tm.assignTask(task.Task, true) |
| 221 | + go tm.assignTask(task.Task) |
232 | 222 | } else { |
233 | 223 | tm.priorityQueue.Push(task) |
234 | 224 | } |
@@ -261,8 +251,17 @@ func (tm *TaskManager) assignPendingTasks() { |
261 | 251 | for _, pendingTask := range pendingTasks { |
262 | 252 | var task = model.Task{ |
263 | 253 | Meta: pendingTask.Meta, |
| 254 | + Id: pendingTask.Id, |
| 255 | + } |
| 256 | + if pendingTask.Meta.Delay > 0 { |
| 257 | + delayTime := time.Now().Unix() + int64(task.Meta.Delay)*60 |
| 258 | + tm.priorityQueue.Push(&DelayTask{ |
| 259 | + Task: &task, |
| 260 | + Time: delayTime, |
| 261 | + }) |
| 262 | + } else { |
| 263 | + tm.assignTask(&task) |
264 | 264 | } |
265 | | - tm.assignTask(&task, false, pendingTask.Id) |
266 | 265 | } |
267 | 266 | } |
268 | 267 | } |
0 commit comments