telemetry
telemetry copied to clipboard
Introduce start_span, stop_span
I want to report a span that, er, spans over an asynchronous call to a gen_statem
, using gen_statem:send_request()
and gen_statem:check_response()
.
It would be useful if there were telemetry:start_span()
and telemetry:stop_span()
functions for this use case.
An example without gen_statem
might make this clearer:
Span = telemetry:start_span([worker, processing], StartMetadata),
Parent = self(),
{MRef, Pid} = spawn_monitor(fun() -> Result = do_some_work(), Parent ! {reply, Result} end),
receive
{reply, Result} ->
telemetry:stop_span([worker, processing], Span);
{'DOWN', Ref, process, Pid, Error} when Error /= normal ->
telemetry:error_span([worker, processing], Span)
end.
...something like that, anyway.
Maybe the EventPrefix
ought to be stashed in the span, to avoid repetition.