Skip to content

Commit

Permalink
add tracepoint for image config resolve
Browse files Browse the repository at this point in the history
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
  • Loading branch information
tonistiigi committed Jun 16, 2021
1 parent 41ba271 commit c1c80c2
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
24 changes: 23 additions & 1 deletion source/containerimage/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import (
"github.com/opencontainers/image-spec/identity"
specs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)

// TODO: break apart containerd specifics like contentstore so the resolver
Expand Down Expand Up @@ -69,7 +71,24 @@ func (is *Source) ID() string {
return source.DockerImageScheme
}

func (is *Source) ResolveImageConfig(ctx context.Context, ref string, opt llb.ResolveImageConfigOpt, sm *session.Manager, g session.Group) (digest.Digest, []byte, error) {
func (is *Source) ResolveImageConfig(ctx context.Context, ref string, opt llb.ResolveImageConfigOpt, sm *session.Manager, g session.Group) (_ digest.Digest, _ []byte, err error) {
if span := trace.SpanFromContext(ctx); span.SpanContext().IsValid() {
p := platforms.DefaultSpec()
if opt.Platform != nil {
p = *opt.Platform
}
ctx, span = span.Tracer().Start(ctx, fmt.Sprintf("resolve config %s", ref), trace.WithAttributes(
attribute.String("resolvemode", opt.ResolveMode),
attribute.String("platform", platforms.Format(p)),
))
defer func() {
if err != nil {
span.RecordError(err)
}
span.End()
}()
}

type t struct {
dgst digest.Digest
dt []byte
Expand Down Expand Up @@ -204,6 +223,9 @@ func (p *puller) CacheKey(ctx context.Context, g session.Group, index int) (cach
progressController := &controller.Controller{
Writer: pw,
}
if sctx := trace.SpanContextFromContext(ctx); sctx.IsValid() {
progressController.SpanContext = sctx
}
if p.vtx != nil {
progressController.Digest = p.vtx.Digest()
progressController.Name = p.vtx.Name()
Expand Down
8 changes: 5 additions & 3 deletions util/progress/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@ import (
"github.com/moby/buildkit/client"
"github.com/moby/buildkit/util/progress"
"github.com/opencontainers/go-digest"
"go.opentelemetry.io/otel/trace"
)

type Controller struct {
count int64
started *time.Time

Digest digest.Digest
Name string
Writer progress.Writer
Digest digest.Digest
Name string
Writer progress.Writer
SpanContext trace.SpanContext
}

var _ progress.Controller = &Controller{}
Expand Down

0 comments on commit c1c80c2

Please sign in to comment.