Open zmitchell opened 8 months ago
I think the problem here is that you are using exec
.
Per documentation, this function never returns, and the docs also state that this means no destructors (guards) are run:
https://doc.rust-lang.org/std/os/unix/process/trait.CommandExt.html#tymethod.exec
AFAIK, execvp
just replaces the current process with another one. So the original process does not exist anymore as such, and there is no way to flush anything afterwards.
I believe you have three choices to go from here:
exec
. Disadvantage is that you now have a potentially slow flush operation in your critical path.I believe 2. provides the best tradeoffs here, but the choice is yours :-)
Unfortunately we need to call exec there. I've tried calling flush
via Hub
->get the client (current and main)->flush
and that didn't do the trick. Is there some other way to flush the span?
Hi, just checking back, how do you manually do option 3? As I mentioned above the method I tried didn't work.
Finishing the span (and the root transaction) would submit those to the transport. Then you would have to flush the transport. I don’t know enough about your usecase to fully answer this I’m afraid.
Environment
What version are you running? Etc.
tracing
feature enabledSteps to Reproduce
This code is open source, so you can peek through it.
tracing::instrument
macro to instrument different commands in our CLI. Here's an example of a working command (install command).exec
a user's shell.instrument
macro I would create a span manually so that I could drop it at the appropriate time.instrument
macro in case there's some cleanup that I'm not performing (I also removed the manualdrop
s), but there are still no spans sent for this command. I'm thinking that somehow a transaction isn't gettingfinish
ed?tracing
logs in my terminal, so theactivate
span is getting created, but it's not getting reported.Expected Result
I would expect spans to be reported for this command like all the others.
Actual Result
Sentry is initialized:
For commands that do work you later see logs like this:
For this
activate
command the second set of logs is missing.