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)
 		}
 	}
 }