@@ -29,11 +29,14 @@ var (
29
29
30
30
// Task represents a Cron task
31
31
type Task struct {
32
- lock sync.Mutex
33
- Name string
34
- config Config
35
- fun func (context.Context , * user_model.User , Config ) error
36
- ExecTimes int64
32
+ lock sync.Mutex
33
+ Name string
34
+ config Config
35
+ fun func (context.Context , * user_model.User , Config ) error
36
+ Status string
37
+ LastMessage string
38
+ LastDoer string
39
+ ExecTimes int64
37
40
}
38
41
39
42
// DoRunAtStart returns if this task should run at the start
@@ -86,24 +89,45 @@ func (t *Task) RunWithUser(doer *user_model.User, config Config) {
86
89
}()
87
90
graceful .GetManager ().RunWithShutdownContext (func (baseCtx context.Context ) {
88
91
pm := process .GetManager ()
89
- ctx , _ , finished := pm .AddContext (baseCtx , config .FormatMessage (t .Name , "process" , doer ))
92
+ doerName := ""
93
+ if doer != nil && doer .ID != - 1 {
94
+ doerName = doer .Name
95
+ }
96
+
97
+ ctx , _ , finished := pm .AddContext (baseCtx , config .FormatMessage ("en-US" , t .Name , "process" , doerName ))
90
98
defer finished ()
91
99
92
100
if err := t .fun (ctx , doer , config ); err != nil {
101
+ var message string
102
+ var status string
93
103
if db .IsErrCancelled (err ) {
94
- message := err .(db. ErrCancelled ). Message
95
- if err := admin_model . CreateNotice ( ctx , admin_model . NoticeTask , config . FormatMessage ( t . Name , "aborted" , doer , message )); err != nil {
96
- log . Error ( "CreateNotice: %v" , err )
97
- }
98
- return
104
+ status = "aborted"
105
+ message = err .(db. ErrCancelled ). Message
106
+ } else {
107
+ status = "error"
108
+ message = err . Error ()
99
109
}
100
- if err := admin_model .CreateNotice (ctx , admin_model .NoticeTask , config .FormatMessage (t .Name , "error" , doer , err )); err != nil {
110
+
111
+ t .lock .Lock ()
112
+ t .LastMessage = message
113
+ t .Status = status
114
+ t .LastDoer = doerName
115
+ t .lock .Unlock ()
116
+
117
+ if err := admin_model .CreateNotice (ctx , admin_model .NoticeTask , config .FormatMessage ("en-US" , t .Name , "aborted" , doerName , message )); err != nil {
101
118
log .Error ("CreateNotice: %v" , err )
102
119
}
103
120
return
104
121
}
122
+
123
+ t .lock .Lock ()
124
+ t .Status = "finished"
125
+ t .LastMessage = ""
126
+ t .LastDoer = doerName
127
+ t .lock .Unlock ()
128
+
105
129
if config .DoNoticeOnSuccess () {
106
- if err := admin_model .CreateNotice (ctx , admin_model .NoticeTask , config .FormatMessage (t .Name , "finished" , doer )); err != nil {
130
+ if err := admin_model .CreateNotice (ctx , admin_model .NoticeTask , config .FormatMessage ("en-US" , t .Name , "finished" , doerName )); err != nil {
107
131
log .Error ("CreateNotice: %v" , err )
108
132
}
109
133
}
0 commit comments