Pass a logger instead of embedding on job (#24650)
* pass a logger instead of embedding on job * leverage mlog.Millis * use worker logger with HandleJobPanic * rely on existing LogClone instead * guard Job.LogClone against nil Job * s/workername/worker_name * Revert "rely on existing LogClone instead" This reverts commit 17303cbac90d4b01815abca1309b78b97de368fb. * Revert "guard Job.LogClone against nil Job" This reverts commit f1ae22dee58d76f084582857830ffe8d4c546d7e.
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
aa172294bd
Коммит
47bfa2b66b
@@ -21,6 +21,19 @@ const (
|
||||
CancelWatcherPollingInterval = 5000
|
||||
)
|
||||
|
||||
// JobLoggerFields returns the logger annotations reflecting the given job metadata.
|
||||
func JobLoggerFields(job *model.Job) []mlog.Field {
|
||||
if job == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return []mlog.Field{
|
||||
mlog.String("job_id", job.Id),
|
||||
mlog.String("job_type", job.Type),
|
||||
mlog.Millis("job_create_at", job.CreateAt),
|
||||
}
|
||||
}
|
||||
|
||||
func (srv *JobServer) CreateJob(c *request.Context, jobType string, jobData map[string]string) (*model.Job, *model.AppError) {
|
||||
job, appErr := srv._createJob(c, jobType, jobData)
|
||||
if appErr != nil {
|
||||
@@ -56,8 +69,6 @@ func (srv *JobServer) _createJob(c *request.Context, jobType string, jobData map
|
||||
Data: jobData,
|
||||
}
|
||||
|
||||
job.InitLogger(c.Logger())
|
||||
|
||||
if err := job.IsValid(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -208,18 +219,12 @@ func (srv *JobServer) UpdateInProgressJobData(job *model.Job) *model.AppError {
|
||||
|
||||
// HandleJobPanic is used to handle panics during the execution of a job. It logs the panic and sets the status for the job.
|
||||
// After handling, the method repanics! This method is supposed to be `defer`'d at the start of the job.
|
||||
func (srv *JobServer) HandleJobPanic(job *model.Job) {
|
||||
func (srv *JobServer) HandleJobPanic(logger mlog.LoggerIFace, job *model.Job) {
|
||||
r := recover()
|
||||
if r == nil {
|
||||
return
|
||||
}
|
||||
|
||||
var logger mlog.LoggerIFace = job.Logger
|
||||
if job.Logger == nil {
|
||||
// Fall back to JobServer logger
|
||||
logger = srv.logger
|
||||
}
|
||||
|
||||
sb := &strings.Builder{}
|
||||
pprof.Lookup("goroutine").WriteTo(sb, 2)
|
||||
logger.Error("Unhandled panic in job", mlog.Any("panic", r), mlog.Any("job", job), mlog.String("stack", sb.String()))
|
||||
|
||||
Ссылка в новой задаче
Block a user