Skip to content

Commit

Permalink
Pass tracer as a function parameter
Browse files Browse the repository at this point in the history
I'm still trying to figure out what's the best way to share tracers. The SDK
encourages to operate with globals but for consistency I'm trying to share them
just like we share other values, e.g. context, logger, etc.

[skip codecov]
  • Loading branch information
sevein committed Mar 27, 2024
1 parent 9f316ef commit 1594992
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 9 deletions.
2 changes: 1 addition & 1 deletion cmd/enduro-a3m-worker/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ func main() {
}

w.RegisterActivityWithOptions(
activities.NewDownloadActivity(logger, wsvc).Execute,
activities.NewDownloadActivity(logger, tp.Tracer(activities.DownloadActivityName), wsvc).Execute,
temporalsdk_activity.RegisterOptions{Name: activities.DownloadActivityName},
)
w.RegisterActivityWithOptions(
Expand Down
2 changes: 1 addition & 1 deletion cmd/enduro-am-worker/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ func main() {
sftpClient := sftp.NewGoClient(logger, cfg.AM.SFTP)

w.RegisterActivityWithOptions(
activities.NewDownloadActivity(logger, wsvc).Execute,
activities.NewDownloadActivity(logger, tp.Tracer(activities.DownloadActivityName), wsvc).Execute,
temporalsdk_activity.RegisterOptions{Name: activities.DownloadActivityName},
)
w.RegisterActivityWithOptions(
Expand Down
11 changes: 6 additions & 5 deletions internal/workflow/activities/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ import (
temporal_tools "go.artefactual.dev/tools/temporal"
"go.opentelemetry.io/otel/trace"

"github.com/artefactual-sdps/enduro/internal/telemetry"
"github.com/artefactual-sdps/enduro/internal/watcher"
)

// DownloadActivity downloads the blob into the processing directory.
type DownloadActivity struct {
logger logr.Logger
tracer trace.Tracer
wsvc watcher.Service
}

Expand All @@ -28,9 +30,10 @@ type DownloadActivityResult struct {
Path string
}

func NewDownloadActivity(logger logr.Logger, wsvc watcher.Service) *DownloadActivity {
func NewDownloadActivity(logger logr.Logger, tracer trace.Tracer, wsvc watcher.Service) *DownloadActivity {
return &DownloadActivity{
logger: logger,
tracer: tracer,
wsvc: wsvc,
}
}
Expand All @@ -51,11 +54,9 @@ func (a *DownloadActivity) Execute(

dest := filepath.Clean(filepath.Join(destDir, params.Key))

ctx, span := trace.SpanFromContext(ctx).TracerProvider().Tracer(DownloadActivityName).Start(ctx, "download")
ctx, span := a.tracer.Start(ctx, "download")
if err := a.wsvc.Download(ctx, dest, params.WatcherName, params.Key); err != nil {

span.RecordError(err)
span.End()
telemetry.RecordError(span, err)
return &DownloadActivityResult{}, temporal_tools.NewNonRetryableError(fmt.Errorf("download: %v", err))
}
span.End()
Expand Down
5 changes: 3 additions & 2 deletions internal/workflow/processing_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/suite"
"go.artefactual.dev/amclient/amclienttest"
"go.opentelemetry.io/otel/trace/noop"
temporalsdk_activity "go.temporal.io/sdk/activity"
temporalsdk_testsuite "go.temporal.io/sdk/testsuite"
temporalsdk_worker "go.temporal.io/sdk/worker"
Expand Down Expand Up @@ -74,7 +75,7 @@ func (s *ProcessingWorkflowTestSuite) SetupWorkflowTest(taskQueue string) {
sftpc := sftp_fake.NewMockClient(ctrl)

s.env.RegisterActivityWithOptions(
activities.NewDownloadActivity(logger, wsvc).Execute,
activities.NewDownloadActivity(logger, noop.Tracer{}, wsvc).Execute,
temporalsdk_activity.RegisterOptions{Name: activities.DownloadActivityName},
)
s.env.RegisterActivityWithOptions(
Expand All @@ -86,7 +87,7 @@ func (s *ProcessingWorkflowTestSuite) SetupWorkflowTest(taskQueue string) {
temporalsdk_activity.RegisterOptions{Name: activities.BundleActivityName},
)
s.env.RegisterActivityWithOptions(
a3m.NewCreateAIPActivity(logger, &a3m.Config{}, pkgsvc).Execute,
a3m.NewCreateAIPActivity(logger, noop.Tracer{}, &a3m.Config{}, pkgsvc).Execute,
temporalsdk_activity.RegisterOptions{Name: a3m.CreateAIPActivityName},
)
s.env.RegisterActivityWithOptions(
Expand Down

0 comments on commit 1594992

Please sign in to comment.