Skip to content

Commit

Permalink
Merge pull request #343 from authzed/parallel-preconditions-v0
Browse files Browse the repository at this point in the history
test v0 preconditions in parallel
  • Loading branch information
jakedt committed Dec 18, 2021
2 parents 4d8d76b + 4ff12c5 commit e1b70e6
Showing 1 changed file with 22 additions and 7 deletions.
29 changes: 22 additions & 7 deletions internal/services/v0/acl.go
Expand Up @@ -11,6 +11,7 @@ import (
grpcmw "github.com/grpc-ecosystem/go-grpc-middleware"
"github.com/rs/zerolog/log"
"github.com/shopspring/decimal"
"golang.org/x/sync/errgroup"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
Expand Down Expand Up @@ -255,13 +256,27 @@ func (as *aclServer) commonCheck(
start *v0.ObjectAndRelation,
goal *v0.ObjectAndRelation,
) (*v0.CheckResponse, error) {
err := as.nsm.CheckNamespaceAndRelation(ctx, start.Namespace, start.Relation, false, atRevision)
if err != nil {
return nil, rewriteACLError(ctx, err)
}

err = as.nsm.CheckNamespaceAndRelation(ctx, goal.Namespace, goal.Relation, true, atRevision)
if err != nil {
// Perform our preflight checks in parallel
errG, checksCtx := errgroup.WithContext(ctx)
errG.Go(func() error {
return as.nsm.CheckNamespaceAndRelation(
checksCtx,
start.Namespace,
start.Relation,
false,
atRevision,
)
})
errG.Go(func() error {
return as.nsm.CheckNamespaceAndRelation(
checksCtx,
goal.Namespace,
goal.Relation,
true,
atRevision,
)
})
if err := errG.Wait(); err != nil {
return nil, rewriteACLError(ctx, err)
}

Expand Down

0 comments on commit e1b70e6

Please sign in to comment.