From 0c015205a64148b505accbd242ad80fb5477cda8 Mon Sep 17 00:00:00 2001 From: Neil Hanlon Date: Mon, 24 Jun 2024 22:39:25 -0400 Subject: [PATCH] fix(panic): gracefully handle if we can't find a Release Sometimes upstream pushes a commit without %{dist} in Release, which has a side effect of breaking Peridot/srpmproc due to Peridot trying to extract information based on the tag, and the tag not having this information. This change adds error handling for this situation --- peridot/builder/v1/workflow/import.go | 30 +++++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/peridot/builder/v1/workflow/import.go b/peridot/builder/v1/workflow/import.go index 4b9963ae..000408ed 100644 --- a/peridot/builder/v1/workflow/import.go +++ b/peridot/builder/v1/workflow/import.go @@ -40,6 +40,15 @@ import ( "encoding/hex" "errors" "fmt" + "io" + http2 "net/http" + "net/url" + "os" + "path/filepath" + "regexp" + "strings" + "time" + "github.com/go-git/go-billy/v5" "github.com/go-git/go-billy/v5/memfs" "github.com/go-git/go-billy/v5/osfs" @@ -62,19 +71,11 @@ import ( "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/wrapperspb" - "io" - http2 "net/http" - "net/url" - "os" - "path/filepath" "peridot.resf.org/apollo/rpmutils" "peridot.resf.org/peridot/db/models" peridotpb "peridot.resf.org/peridot/pb" "peridot.resf.org/peridot/rpmbuild" "peridot.resf.org/utils" - "regexp" - "strings" - "time" ) // This should probably reside somewhere else @@ -1016,12 +1017,23 @@ func (c *Controller) srpmprocToImportRevisions(project *models.Project, pkg stri moduleStream = true } - version := res.BranchVersions[branch] + version, ok := res.BranchVersions[branch] + + if !ok { + c.log.Errorf("unable to find branch %s in BranchVersions", branch) + } + + if version == nil { + c.log.Errorf("version for branch %s is nil", branch) + } // For now let's just include all module metadata in the release field. // We might use it to match upstream versions in the Future. // If it doesn't work out as expected, we can always resort back to replacing. release := version.Release + if release == "" { + c.log.Errorf("release information missing for branch %s", branch) + } section := OpenPatchRpms if module {