66 "github.com/cschleiden/go-workflows/internal/contextpropagation"
77 "github.com/cschleiden/go-workflows/internal/core"
88 "github.com/cschleiden/go-workflows/internal/sync"
9+ "github.com/cschleiden/go-workflows/internal/workflowtracer"
910 "go.opentelemetry.io/otel/propagation"
1011 "go.opentelemetry.io/otel/trace"
1112)
@@ -15,52 +16,40 @@ var propagator propagation.TextMapPropagator = propagation.NewCompositeTextMapPr
1516 propagation.Baggage {},
1617)
1718
18- func InjectSpan (ctx context.Context , metadata * core.WorkflowMetadata ) {
19+ func injectSpan (ctx context.Context , metadata * core.WorkflowMetadata ) {
1920 propagator .Inject (ctx , metadata )
2021}
2122
22- func ExtractSpan (ctx context.Context , metadata * core.WorkflowMetadata ) context.Context {
23+ func extractSpan (ctx context.Context , metadata * core.WorkflowMetadata ) context.Context {
2324 return propagator .Extract (ctx , metadata )
2425}
2526
26- type traceContextKeyType int
27-
28- const currentSpanKey traceContextKeyType = iota
29-
30- func WorkflowContextWithSpan (ctx sync.Context , span trace.Span ) sync.Context {
31- return sync .WithValue (ctx , currentSpanKey , span )
32- }
33-
34- func SpanFromWorkflowContext (ctx sync.Context ) trace.Span {
35- if span , ok := ctx .Value (currentSpanKey ).(trace.Span ); ok {
36- return span
37- }
38-
39- panic ("no span in context" )
40- }
41-
4227type TracingContextPropagator struct {
4328}
4429
4530var _ contextpropagation.ContextPropagator = & TracingContextPropagator {}
4631
4732func (* TracingContextPropagator ) Inject (ctx context.Context , metadata * core.WorkflowMetadata ) error {
48- InjectSpan (ctx , metadata )
33+ injectSpan (ctx , metadata )
4934 return nil
5035}
5136
5237func (* TracingContextPropagator ) Extract (ctx context.Context , metadata * core.WorkflowMetadata ) (context.Context , error ) {
53- return ExtractSpan (ctx , metadata ), nil
38+ return extractSpan (ctx , metadata ), nil
5439}
5540
5641func (* TracingContextPropagator ) InjectFromWorkflow (ctx sync.Context , metadata * core.WorkflowMetadata ) error {
57- // Ignore
42+ span := workflowtracer .SpanFromContext (ctx )
43+ sctx := trace .ContextWithSpan (context .Background (), span )
44+
45+ injectSpan (sctx , metadata )
5846
5947 return nil
6048}
6149
6250func (* TracingContextPropagator ) ExtractToWorkflow (ctx sync.Context , metadata * core.WorkflowMetadata ) (sync.Context , error ) {
63- // Ignore
51+ sctx := extractSpan (context .Background (), metadata )
52+ span := trace .SpanFromContext (sctx )
6453
65- return ctx , nil
54+ return workflowtracer . ContextWithSpan ( ctx , span ) , nil
6655}
0 commit comments