-
Notifications
You must be signed in to change notification settings - Fork 0
/
task_clean_up.go
41 lines (36 loc) · 1.02 KB
/
task_clean_up.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package gta
import (
"context"
"reflect"
"time"
)
const (
taskCleanUp TaskKey = "builtin:clean_up"
taskCleanUpID uint64 = 9999
)
type cleanUpReq struct {
StorageTimeout time.Duration `json:"storage_timeout"`
}
func registerCleanUpTask(tm *TaskManager) {
tm.Register(taskCleanUp, TaskDefinition{
Handler: cleanUpHandler(tm),
ArgType: reflect.TypeOf(cleanUpReq{}),
builtin: true,
taskID: taskCleanUpID,
argument: cleanUpReq{StorageTimeout: tm.storageTimeout},
loopInterval: tm.storageTimeout / 2,
})
}
func cleanUpHandler(tm *TaskManager) TaskHandler {
return func(ctx context.Context, arg interface{}) (err error) {
logger := tm.logger()
storageTimeout := arg.(cleanUpReq).StorageTimeout
rowsAffected, err := tm.tdal.DeleteSucceededByOffset(tm.getDB(), storageTimeout, tm.tr.GetBuiltInKeys())
if err != nil {
return err
} else if rowsAffected > 0 {
logger.Infof("[cleanUpHandler] task cleaned, storage timeout[%v], len[%v]", storageTimeout, rowsAffected)
}
return nil
}
}