Mercurial > gemma
changeset 987:3841509f6e9e
Store job id alongside to job in job queue.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 19 Oct 2018 18:09:26 +0200 |
parents | c34a2a643f5e |
children | 7dfd3db94e6d |
files | pkg/imports/queue.go |
diffstat | 1 files changed, 14 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/queue.go Fri Oct 19 16:39:05 2018 +0200 +++ b/pkg/imports/queue.go Fri Oct 19 18:09:26 2018 +0200 @@ -17,6 +17,11 @@ CleanUp() error } +type idJob struct { + id int64 + job Job +} + var ( queueCond = sync.NewCond(new(sync.Mutex)) queue = list.New() @@ -32,26 +37,28 @@ id := atomic.AddInt64(&jobID, 1) queueCond.L.Lock() defer queueCond.L.Unlock() - queue.PushBack(job) + queue.PushBack(idJob{id, job}) queueCond.Signal() return id } func importLoop() { for { - var job Job + var idj idJob queueCond.L.Lock() for queue.Len() == 0 { queueCond.Wait() } - job = queue.Remove(queue.Front()).(Job) + idj = queue.Remove(queue.Front()).(idJob) queueCond.L.Unlock() - if err := auth.RunAs(job.User(), context.Background(), job.Do); err != nil { - log.Printf("import error: %v\n", err) + log.Printf("starting import job %d\n", idj.id) + + if err := auth.RunAs(idj.job.User(), context.Background(), idj.job.Do); err != nil { + log.Printf("import error (job %d): %v\n", idj.id, err) } - if err := job.CleanUp(); err != nil { - log.Printf("cleanup error: %v\n", err) + if err := idj.job.CleanUp(); err != nil { + log.Printf("cleanup error (job %d): %v\n", idj.id, err) } } }