rust-zipkin icon indicating copy to clipboard operation
rust-zipkin copied to clipboard

provide examples

Open softprops opened this issue 6 years ago • 8 comments

I'm reading the structure of this crate to understand the pieces but I feel like I'm missing parts. It may be helpful to provide some cargo /examples application to demonstrate how these pieces fit together

softprops avatar Feb 26 '19 05:02 softprops

Sure - I think a little toy HTTP server would make sense as a decent example.

sfackler avatar Feb 26 '19 05:02 sfackler

In particular I'm wanting to see how to transfer contexts across threads. Since CurrentGuard can't be Send, I'm missing what the pattern in practice looks like

softprops avatar Feb 27 '19 05:02 softprops

If you have an OpenSpan and want to fully transfer it to the other thread, you can use the detach and attach methods:

let span = my_tracer.next_span()
    .with_name("background-thingy")
    .detach();

thread::spawn(move || {
    let span = span.attach();
    // do stuff...
});

If you don't have an OpenSpan (or have one but don't want to transfer ownership), you can just grab the context from it and send that to the other thread:

let context = current_guard.context();

thread::spawn(move || {
    let current_guard = tracer.set_current(context);
    // do stuff...
});

sfackler avatar Feb 27 '19 06:02 sfackler

In that first example, does the span information associated with "background-thing" get discarded when detaching? It seems the both detach/attach operations discard any built up span state. When attaching, it seems all operations on the open span would have no effect. I'm I understanding this right?

softprops avatar Feb 28 '19 06:02 softprops

No, attaching and detaching doesn't discard any state. The only thing it changes is if the OpenSpan acts as a CurrentGuard in addition.

sfackler avatar Feb 28 '19 06:02 sfackler

I'm looking to understand the use of mem::replace here

softprops avatar Feb 28 '19 06:02 softprops

Detach consumes the old OpenSpan by value and returns a new one with the span's state.

sfackler avatar Feb 28 '19 06:02 sfackler

Ah I see. Thanks!

softprops avatar Feb 28 '19 06:02 softprops