From 5891341e584b8d4e799956e0d340aee33d0a49ba Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Tue, 2 Nov 2021 10:14:19 -0400 Subject: [PATCH] maintner/maintnerd/maintapi: handle non-existing Gerrit project gracefully If a new Gerrit repository is created and has activity before the x/build/repos package is updated, the Gerrit search query in goFindTryWork may find CLs from the new repo and ask maintner about it. It's expected that maintner won't know about it yet, so handle such case by skipping those CLs. Fixes golang/go#49286. Change-Id: I5ab6e586baa909b371203f081c6ae7fbd44c15b3 Reviewed-on: https://go-review.googlesource.com/c/build/+/360734 Reviewed-by: Carlos Amedee Run-TryBot: Carlos Amedee TryBot-Result: Go Bot Trust: Dmitri Shuralyov --- maintner/maintnerd/maintapi/api.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/maintner/maintnerd/maintapi/api.go b/maintner/maintnerd/maintapi/api.go index 68e46d37de..66d1e70906 100644 --- a/maintner/maintnerd/maintapi/api.go +++ b/maintner/maintnerd/maintapi/api.go @@ -322,7 +322,12 @@ func goFindTryWork(ctx context.Context, gerritc *gerrit.Client, maintc *maintner res := new(apipb.GoFindTryWorkResponse) for _, ci := range cis { - cl := maintc.Gerrit().Project("go.googlesource.com", ci.Project).CL(int32(ci.ChangeNumber)) + proj := maintc.Gerrit().Project("go.googlesource.com", ci.Project) + if proj == nil { + log.Printf("nil Gerrit project %q", ci.Project) + continue + } + cl := proj.CL(int32(ci.ChangeNumber)) if cl == nil { log.Printf("nil Gerrit CL %v", ci.ChangeNumber) continue