[OpenTracing] Context propagation implementation#495
Conversation
|
I'm looking into adding some integration tests for the tracer, to test round-trip |
There was a problem hiding this comment.
There's a possible issue with round-trip propagation here. I'm anticipating there's a case where you could have baggage items with names containing either -s or uppercase characters. These should serialize to the carrier without issue, however, they'd probably fail to be extracted back to their original form, because how Rack forces headers to uppercase and underscores.
e.g. My-Baggage-Item --> #inject --> HTTP_OT_BAGGAGE_MY_BAGGAGE_ITEM --> #extract --> my_baggage_item.
I'm not sure this is possible to correct for, because we lose resolution on whether the key should have these dashes or uppercase characters when it goes through this conversion. Just something to watch out for.
3e1d548 to
0c4cc15
Compare
* Added: Propagators to OpenTracer. * Added: Specs for OpenTracer::Propagators. * Fixed: OpenTracer::Tracer#start_span not using provided SpanContext. * Added: OpenTracer context propagation integration specs.
* Added: Propagators to OpenTracer. * Added: Specs for OpenTracer::Propagators. * Fixed: OpenTracer::Tracer#start_span not using provided SpanContext. * Added: OpenTracer context propagation integration specs.
* Added: Propagators to OpenTracer. * Added: Specs for OpenTracer::Propagators. * Fixed: OpenTracer::Tracer#start_span not using provided SpanContext. * Added: OpenTracer context propagation integration specs.
This pull request implements context propagation using
Propagatorclasses, which serialize/deserialize trace context from carriers.It provides full implementation for
RackandTextMapformats.Binaryformat is still a no-op.