Skip to content

Commit

Permalink
/go/libraries/doltcore/env/actions/tag.go: minimal parallelism too
Browse files Browse the repository at this point in the history
  • Loading branch information
coffeegoddd committed Jan 17, 2025
1 parent bff6879 commit cb1b879
Showing 1 changed file with 31 additions and 11 deletions.
42 changes: 31 additions & 11 deletions go/libraries/doltcore/env/actions/tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/dolthub/dolt/go/libraries/doltcore/env"
"github.com/dolthub/dolt/go/libraries/doltcore/ref"
"github.com/dolthub/dolt/go/store/datas"
"golang.org/x/sync/errgroup"
)

type TagProps struct {
Expand Down Expand Up @@ -149,18 +150,37 @@ func IterResolvedTagsPaginated(ctx context.Context, ddb *doltdb.DoltDB, startTag
return "", err
}

eg, egCtx := errgroup.WithContext(ctx)
eg.SetLimit(5)

// for each tag, get the meta
tagMetas := make([]*doltdb.TagRefWithMeta, 0, len(tagRefs))
for _, r := range tagRefs {
tr, ok := r.(ref.TagRef)
if !ok {
return "", fmt.Errorf("DoltDB.GetTags() returned non-tag DoltRef")
}
tm, err := ddb.ResolveTagMeta(ctx, tr)
if err != nil {
return "", err
}
tagMetas = append(tagMetas, tm)
tagMetas := make([]*doltdb.TagRefWithMeta, len(tagRefs))
for idx, r := range tagRefs {
idx, r := idx, r

eg.Go(func() error {
if egCtx.Err() != nil {
return egCtx.Err()
}

tr, ok := r.(ref.TagRef)
if !ok {
return fmt.Errorf("DoltDB.GetTags() returned non-tag DoltRef")
}

tm, err := ddb.ResolveTagMeta(ctx, tr)
if err != nil {
return err
}

tagMetas[idx] = tm
return nil
})

}

if err := eg.Wait(); err != nil {
return "", err
}

// sort by meta timestamp
Expand Down

0 comments on commit cb1b879

Please sign in to comment.