diff --git a/base/utils/rpm.go b/base/utils/rpm.go index 46d51cb51..5697ee149 100644 --- a/base/utils/rpm.go +++ b/base/utils/rpm.go @@ -66,6 +66,13 @@ func ParseNameEVRA(name, evra string) (*Nevra, error) { return ParseNevra(fmt.Sprintf("%s-%s", name, evra)) } +func NEVRAStringE(name, evra string, showEpoch bool) string { + if showEpoch && !strings.Contains(evra, ":") { + evra = fmt.Sprintf("0:%s", evra) + } + return fmt.Sprintf("%s-%s", name, evra) +} + func (n Nevra) StringE(showEpoch bool) string { if n.Epoch != 0 || showEpoch { return fmt.Sprintf("%s-%d:%s-%s.%s", n.Name, n.Epoch, n.Version, n.Release, n.Arch) diff --git a/evaluator/evaluate_packages.go b/evaluator/evaluate_packages.go index c65329c34..7d0ee4750 100644 --- a/evaluator/evaluate_packages.go +++ b/evaluator/evaluate_packages.go @@ -166,13 +166,7 @@ func packages2NevraMap(packages []namedPackage) map[string]namedPackage { pkgByNevra := make(map[string]namedPackage, len(packages)) for _, p := range packages { // make sure nevra contains epoch even if epoch==0 - nevra, err := utils.ParseNameEVRA(p.Name, p.EVRA) - if err != nil { - utils.LogWarn("package_id", p.PackageID, "name_id", p.NameID, "name", p.Name, "evra", p.EVRA, - "packages2NevraMap: cannot parse evra") - continue - } - nevraString := nevra.StringE(true) + nevraString := utils.NEVRAStringE(p.Name, p.EVRA, true) pkgByNevra[nevraString] = p } return pkgByNevra diff --git a/evaluator/package_cache.go b/evaluator/package_cache.go index 10872c16c..34460e661 100644 --- a/evaluator/package_cache.go +++ b/evaluator/package_cache.go @@ -222,13 +222,7 @@ func (c *PackageCache) addByID(pkg *PackageCacheMetadata) { func (c *PackageCache) addByNevra(pkg *PackageCacheMetadata) { // make sure nevra contains epoch even if epoch==0 - nevra, err := utils.ParseNameEVRA(pkg.Name, pkg.Evra) - if err != nil { - utils.LogWarn("id", pkg.ID, "name_id", pkg.NameID, "name", pkg.Name, "evra", pkg.Evra, - "PackageCache.addByNevra: cannot parse evra") - return - } - nevraString := nevra.StringE(true) + nevraString := utils.NEVRAStringE(pkg.Name, pkg.Evra, true) evicted := c.byNevra.Add(nevraString, pkg) if !evicted { packageCacheGauge.WithLabelValues("nevra").Inc()