Skip to content

Commit

Permalink
builder: Update detect usage for new detect API from buildkit
Browse files Browse the repository at this point in the history
Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
  • Loading branch information
jsternberg authored and vvoland committed May 15, 2024
1 parent c3a6c6e commit 2297899
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 14 deletions.
13 changes: 10 additions & 3 deletions builder/builder-next/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ import (
"github.com/moby/buildkit/util/archutil"
"github.com/moby/buildkit/util/entitlements"
"github.com/moby/buildkit/util/network/netproviders"
"github.com/moby/buildkit/util/tracing"
"github.com/moby/buildkit/util/tracing/detect"
"github.com/moby/buildkit/worker"
"github.com/moby/buildkit/worker/containerd"
Expand All @@ -67,11 +68,17 @@ func newController(ctx context.Context, rt http.RoundTripper, opt Opt) (*control
}

func getTraceExporter(ctx context.Context) trace.SpanExporter {
span, _, err := detect.Exporter()
if err != nil {
tc := make(tracing.MultiSpanExporter, 0, 2)
if detect.Recorder != nil {
tc = append(tc, detect.Recorder)
}

if exp, err := detect.NewSpanExporter(ctx); err != nil {
log.G(ctx).WithError(err).Error("Failed to detect trace exporter for buildkit controller")
} else if !detect.IsNoneSpanExporter(exp) {
tc = append(tc, exp)
}
return span
return tc
}

func newSnapshotterController(ctx context.Context, rt http.RoundTripper, opt Opt) (*control.Controller, error) {
Expand Down
33 changes: 22 additions & 11 deletions cmd/dockerd/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"tags.cncf.io/container-device-interface/pkg/cdi"
)

Expand Down Expand Up @@ -240,18 +241,12 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
setOTLPProtoDefault()
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))

// Override BuildKit's default Resource so that it matches the semconv
// version that is used in our code.
detect.OverrideResource(resource.Default())
// Initialize the trace recorder for buildkit.
detect.Recorder = detect.NewTraceRecorder()

tp, err := detect.TracerProvider()
if err != nil {
log.G(ctx).WithError(err).Warn("Failed to initialize tracing, skipping")
} else {
otel.SetTracerProvider(tp)
log.G(ctx).Logger.AddHook(tracing.NewLogrusHook())
}
tp := newTracerProvider(ctx)
otel.SetTracerProvider(tp)
log.G(ctx).Logger.AddHook(tracing.NewLogrusHook())

pluginStore := plugin.NewStore()

Expand Down Expand Up @@ -368,7 +363,9 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
return errors.Wrap(err, "shutting down due to ServeAPI error")
}

detect.Shutdown(context.Background())
if err := tp.Shutdown(context.Background()); err != nil {
log.G(ctx).WithError(err).Error("Failed to shutdown OTEL tracing")
}

log.G(ctx).Info("Daemon shutdown complete")
return nil
Expand Down Expand Up @@ -397,6 +394,20 @@ func setOTLPProtoDefault() {
}
}

func newTracerProvider(ctx context.Context) *sdktrace.TracerProvider {
opts := []sdktrace.TracerProviderOption{
sdktrace.WithResource(resource.Default()),
sdktrace.WithSyncer(detect.Recorder),
}

if exp, err := detect.NewSpanExporter(ctx); err != nil {
log.G(ctx).WithError(err).Warn("Failed to initialize tracing, skipping")
} else if !detect.IsNoneSpanExporter(exp) {
opts = append(opts, sdktrace.WithBatcher(exp))
}
return sdktrace.NewTracerProvider(opts...)
}

type routerOptions struct {
sessionManager *session.Manager
buildBackend *buildbackend.Backend
Expand Down

0 comments on commit 2297899

Please sign in to comment.