mirror of
https://github.com/moby/buildkit.git
synced 2025-08-08 10:02:07 +03:00
otel: add wrapping "resolving" spans for ResolveImageConfig
Without this, a single ResolveImageConfig may emit many "remotes.docker.resolver.HTTPRequest" spans. These can be difficult to track and organize, especially if a single client performs multiple of them. To make traces a bit easier to navigate, these are now grouped under one top-level span, instead of cluttering up the top-level. Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/moby/buildkit/client/llb/sourceresolver"
|
"github.com/moby/buildkit/client/llb/sourceresolver"
|
||||||
"github.com/moby/buildkit/util/contentutil"
|
"github.com/moby/buildkit/util/contentutil"
|
||||||
"github.com/moby/buildkit/util/imageutil"
|
"github.com/moby/buildkit/util/imageutil"
|
||||||
|
"github.com/moby/buildkit/util/tracing"
|
||||||
"github.com/moby/buildkit/version"
|
"github.com/moby/buildkit/version"
|
||||||
"github.com/moby/locker"
|
"github.com/moby/locker"
|
||||||
digest "github.com/opencontainers/go-digest"
|
digest "github.com/opencontainers/go-digest"
|
||||||
@@ -75,7 +76,12 @@ type resolveResult struct {
|
|||||||
dgst digest.Digest
|
dgst digest.Digest
|
||||||
}
|
}
|
||||||
|
|
||||||
func (imr *imageMetaResolver) ResolveImageConfig(ctx context.Context, ref string, opt sourceresolver.Opt) (string, digest.Digest, []byte, error) {
|
func (imr *imageMetaResolver) ResolveImageConfig(ctx context.Context, ref string, opt sourceresolver.Opt) (resolvedRef string, digest digest.Digest, config []byte, retErr error) {
|
||||||
|
span, ctx := tracing.StartSpan(ctx, "resolving "+ref)
|
||||||
|
defer func() {
|
||||||
|
tracing.FinishWithError(span, retErr)
|
||||||
|
}()
|
||||||
|
|
||||||
imr.locker.Lock(ref)
|
imr.locker.Lock(ref)
|
||||||
defer imr.locker.Unlock(ref)
|
defer imr.locker.Unlock(ref)
|
||||||
|
|
||||||
|
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/moby/buildkit/util/imageutil"
|
"github.com/moby/buildkit/util/imageutil"
|
||||||
"github.com/moby/buildkit/util/pull"
|
"github.com/moby/buildkit/util/pull"
|
||||||
"github.com/moby/buildkit/util/resolver"
|
"github.com/moby/buildkit/util/resolver"
|
||||||
|
"github.com/moby/buildkit/util/tracing"
|
||||||
digest "github.com/opencontainers/go-digest"
|
digest "github.com/opencontainers/go-digest"
|
||||||
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
|
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@@ -148,7 +149,12 @@ func (is *Source) Resolve(ctx context.Context, id source.Identifier, sm *session
|
|||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (is *Source) ResolveImageConfig(ctx context.Context, ref string, opt sourceresolver.Opt, sm *session.Manager, g session.Group) (digest.Digest, []byte, error) {
|
func (is *Source) ResolveImageConfig(ctx context.Context, ref string, opt sourceresolver.Opt, sm *session.Manager, g session.Group) (digest digest.Digest, config []byte, retErr error) {
|
||||||
|
span, ctx := tracing.StartSpan(ctx, "resolving "+ref)
|
||||||
|
defer func() {
|
||||||
|
tracing.FinishWithError(span, retErr)
|
||||||
|
}()
|
||||||
|
|
||||||
key := ref
|
key := ref
|
||||||
var (
|
var (
|
||||||
rm resolver.ResolveMode
|
rm resolver.ResolveMode
|
||||||
|
Reference in New Issue
Block a user