Skip to content

Commit

Permalink
Ent - Restore IngestPackages concurrently (#1586)
Browse files Browse the repository at this point in the history
* Ent - Restore IngestPackages concurrently

Signed-off-by: mrizzi <mrizzi@redhat.com>

* Ent - Restore IngestPackages concurrently: fixed slice sorting

Signed-off-by: mrizzi <mrizzi@redhat.com>

---------

Signed-off-by: mrizzi <mrizzi@redhat.com>
  • Loading branch information
mrizzi committed Dec 15, 2023
1 parent c197a9d commit da929fc
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 16 deletions.
11 changes: 3 additions & 8 deletions pkg/assembler/backends/ent/backend/helpers_test.go
Expand Up @@ -54,7 +54,6 @@ var IngestPredicatesCmpOpts = []cmp.Option{
cmpopts.SortSlices(certifyVexLess),
cmpopts.SortSlices(vulnerabilityLess),
cmpopts.SortSlices(hasSbomLess),
cmpopts.SortSlices(packageOrArtifactLess),
}

func isDependencyLess(e1, e2 *model.IsDependency) bool {
Expand Down Expand Up @@ -88,20 +87,16 @@ func vulnerabilityLess(e1, e2 *model.Vulnerability) bool {
}

func hasSbomLess(e1, e2 *model.HasSbom) bool {
return packageOrArtifactLess(e1.Subject, e2.Subject)
}

func packageOrArtifactLess(e1, e2 model.PackageOrArtifact) bool {
switch subject1 := e1.(type) {
switch subject1 := e1.Subject.(type) {
case *model.Package:
switch subject2 := e2.(type) {
switch subject2 := e2.Subject.(type) {
case *model.Package:
return packageLess(subject1, subject2)
case *model.Artifact:
return false
}
case *model.Artifact:
switch subject2 := e2.(type) {
switch subject2 := e2.Subject.(type) {
case *model.Package:
return true
case *model.Artifact:
Expand Down
21 changes: 15 additions & 6 deletions pkg/assembler/backends/ent/backend/package.go
Expand Up @@ -35,6 +35,7 @@ import (
"github.com/guacsec/guac/pkg/assembler/backends/helper"
"github.com/guacsec/guac/pkg/assembler/graphql/model"
"github.com/pkg/errors"
"golang.org/x/sync/errgroup"
)

func (b *EntBackend) Packages(ctx context.Context, pkgSpec *model.PkgSpec) ([]*model.Package, error) {
Expand Down Expand Up @@ -96,12 +97,20 @@ func (b *EntBackend) Packages(ctx context.Context, pkgSpec *model.PkgSpec) ([]*m
func (b *EntBackend) IngestPackages(ctx context.Context, pkgs []*model.PkgInputSpec) ([]*model.PackageIDs, error) {
// FIXME: (ivanvanderbyl) This will be suboptimal because we can't batch insert relations with upserts. See Readme.
pkgsID := make([]*model.PackageIDs, len(pkgs))
for i, pkg := range pkgs {
p, err := b.IngestPackage(ctx, *pkg)
if err != nil {
return nil, err
}
pkgsID[i] = p
eg, ctx := errgroup.WithContext(ctx)
for i := range pkgs {
index := i
pkg := pkgs[index]
concurrently(eg, func() error {
p, err := b.IngestPackage(ctx, *pkg)
if err == nil {
pkgsID[index] = p
}
return err
})
}
if err := eg.Wait(); err != nil {
return nil, err
}
return pkgsID, nil
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/assembler/backends/ent/backend/sbom_test.go
Expand Up @@ -248,11 +248,11 @@ var includedTestExpectedSBOM = &model.HasSbom{
Origin: "sbom_origin",
Collector: "sbom_collector",
IncludedSoftware: []model.PackageOrArtifact{
includedTestExpectedPackage1,
includedTestExpectedPackage2,
includedTestExpectedPackage3,
includedTestExpectedArtifact1,
includedTestExpectedArtifact2,
includedTestExpectedPackage1,
includedTestExpectedPackage2,
},
IncludedDependencies: []*model.IsDependency{{
Package: includedTestExpectedPackage1,
Expand Down

0 comments on commit da929fc

Please sign in to comment.