{cmd,internal}/worker: address CL comments
- Add flag.Usage for worker binary.
- Clarify rate limiter call.
Change-Id: I6f1c6168935bfcf8df708cffa0ce13df583925cb
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/368854
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/cmd/worker/main.go b/cmd/worker/main.go
index 301631f..050649f 100644
--- a/cmd/worker/main.go
+++ b/cmd/worker/main.go
@@ -25,8 +25,8 @@
)
var (
- project = flag.String("project", os.Getenv("GOOGLE_CLOUD_PROJECT"), "project ID")
- namespace = flag.String("namespace", os.Getenv("VULN_WORKER_NAMESPACE"), "Firestore namespace")
+ project = flag.String("project", os.Getenv("GOOGLE_CLOUD_PROJECT"), "project ID (required)")
+ namespace = flag.String("namespace", os.Getenv("VULN_WORKER_NAMESPACE"), "Firestore namespace (required)")
errorReporting = flag.Bool("reporterrors", os.Getenv("VULN_WORKER_REPORT_ERRORS") == "true", "use the error reporting API")
pkgsiteURL = flag.String("pkgsite", "https://pkg.go.dev", "URL to pkgsite")
localRepoPath = flag.String("repo", "", "path to local repo, instead of cloning remote")
@@ -36,12 +36,29 @@
const serviceID = "vuln-worker"
func main() {
+ flag.Usage = func() {
+ out := flag.CommandLine.Output()
+ fmt.Fprintln(out, "usage:")
+ fmt.Fprintln(out, "worker FLAGS")
+ fmt.Fprintln(out, " run as a server, listening at the PORT env var")
+ fmt.Fprintln(out, "worker FLAGS SUBCOMMAND ...")
+ fmt.Fprintln(out, " run as a command-line tool, executing SUBCOMMAND")
+ fmt.Fprintln(out, " subcommands:")
+ fmt.Fprintln(out, " update COMMIT: perform an update operation")
+ fmt.Fprintln(out, " list-updates: display info about update operations")
+ fmt.Fprintln(out, "flags:")
+ flag.PrintDefaults()
+ }
flag.Parse()
if *project == "" {
- die("need -project or GOOGLE_CLOUD_PROJECT")
+ fmt.Fprintln(os.Stderr, "need -project or GOOGLE_CLOUD_PROJECT")
+ flag.Usage()
+ os.Exit(1)
}
if *namespace == "" {
- die("need -namespace or VULN_WORKER_NAMESPACE")
+ fmt.Fprintln(os.Stderr, "need -namespace or VULN_WORKER_NAMESPACE")
+ flag.Usage()
+ os.Exit(1)
}
ctx := log.WithLineLogger(context.Background())
diff --git a/internal/worker/triage.go b/internal/worker/triage.go
index 37fc67c..ec4681d 100644
--- a/internal/worker/triage.go
+++ b/internal/worker/triage.go
@@ -38,8 +38,7 @@
"golang.org": true,
}
-// TriageCVE reports whether the CVE refers to a
-// Go module.
+// TriageCVE reports whether the CVE refers to a Go module.
func TriageCVE(ctx context.Context, c *cveschema.CVE, pkgsiteURL string) (_ bool, err error) {
defer derrors.Wrap(&err, "triageCVE(%q)", c.ID)
switch c.DataVersion {
@@ -99,7 +98,9 @@
return "", nil
}
-// Limit pkgsite calls to 2 qps (once every 500ms)
+// Limit pkgsite calls to 2 qps (once every 500ms).
+// The second argument to rate.NewLimiter is the burst, which
+// basically lets you exceed the rate briefly.
var pkgsiteRateLimiter = rate.NewLimiter(rate.Every(500*time.Millisecond), 3)
var seenModulePath = map[string]bool{}