internal/worker: minor changes
- trim prefix from jobs paths
- jobs/list: include skipped tasks in finished count
- analysis/enqueue: print job ID in message
Change-Id: I69424400c9dc7d9b4c69851a5a9099524d689f3a
Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/496192
Reviewed-by: Zvonimir Pavlinovic <zpavlinovic@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/worker/analysis.go b/internal/worker/analysis.go
index a56f991..b0ad888 100644
--- a/internal/worker/analysis.go
+++ b/internal/worker/analysis.go
@@ -367,15 +367,17 @@
if err != nil {
return fmt.Errorf("enequeue failed: %w", err)
}
+ sj := ""
if job != nil {
job.NumEnqueued = len(tasks)
if err := s.jobDB.CreateJob(ctx, job); err != nil {
- return fmt.Errorf("enqueued %d analysis tasks successfully, but could not create job: %w", len(tasks), err)
+ sj = fmt.Sprintf(", but could not create job: %v", err)
+ } else {
+ sj = ", job ID is " + job.ID()
}
}
-
// Communicate enqueue status for better usability.
- fmt.Fprintf(w, "enqueued %d analysis tasks successfully\n", len(tasks))
+ fmt.Fprintf(w, "enqueued %d analysis tasks successfully%s\n", len(tasks), sj)
return nil
}
diff --git a/internal/worker/jobs.go b/internal/worker/jobs.go
index 79076dc..f96e4c2 100644
--- a/internal/worker/jobs.go
+++ b/internal/worker/jobs.go
@@ -22,6 +22,7 @@
"fmt"
"io"
"net/http"
+ "strings"
"time"
"golang.org/x/pkgsite-metrics/internal/derrors"
@@ -49,8 +50,9 @@
}
func processJobRequest(ctx context.Context, w io.Writer, path, jobID string, db jobDB) error {
+ path = strings.TrimPrefix(path, "/jobs/")
switch path {
- case "/describe": // describe one job
+ case "describe": // describe one job
if jobID == "" {
return fmt.Errorf("missing jobid: %w", derrors.InvalidArgument)
}
@@ -63,7 +65,7 @@
enc.Encode(job)
return nil
- case "/cancel":
+ case "cancel":
if jobID == "" {
return fmt.Errorf("missing jobid: %w", derrors.InvalidArgument)
}
@@ -72,12 +74,13 @@
return nil
})
- case "/list":
+ case "list":
var buf bytes.Buffer
fmt.Fprintf(&buf, "%-20s\tEnq\tCompl\tCanceled\n", "ID")
err := db.ListJobs(ctx, func(j *jobs.Job, _ time.Time) error {
_, err := fmt.Fprintf(&buf, "%-20s\t%3d\t%3d\t%t\n",
- j.ID(), j.NumEnqueued, j.NumFailed+j.NumErrored+j.NumSucceeded,
+ j.ID(), j.NumEnqueued,
+ j.NumSkipped+j.NumFailed+j.NumErrored+j.NumSucceeded,
j.Canceled)
return err
})
diff --git a/internal/worker/jobs_test.go b/internal/worker/jobs_test.go
index c682d71..59a4c0d 100644
--- a/internal/worker/jobs_test.go
+++ b/internal/worker/jobs_test.go
@@ -29,7 +29,7 @@
t.Fatal(err)
}
var buf bytes.Buffer
- if err := processJobRequest(ctx, &buf, "/describe", job.ID(), db); err != nil {
+ if err := processJobRequest(ctx, &buf, "/jobs/describe", job.ID(), db); err != nil {
t.Fatal(err)
}
@@ -41,7 +41,7 @@
t.Errorf("got\n%+v\nwant\n%+v", got, job)
}
- if err := processJobRequest(ctx, &buf, "/cancel", job.ID(), db); err != nil {
+ if err := processJobRequest(ctx, &buf, "/jobs/cancel", job.ID(), db); err != nil {
t.Fatal(err)
}
@@ -54,7 +54,7 @@
}
buf.Reset()
- if err := processJobRequest(ctx, &buf, "/list", "", db); err != nil {
+ if err := processJobRequest(ctx, &buf, "/jobs/list", "", db); err != nil {
t.Fatal(err)
}
// Don't check for specific output, just make sure there's something