Shutdown and Draining
The default behavior of most SDKs is to send out events over the network asynchronously in the background. This means that some events might be lost if the application shuts down unexpectedly. The SDKs provide mechanisms to cope with this.
When the Rust SDK initializes a guard is returned from the init
function. The destructor
will automatically wait shutdown_timeout
seconds. This means you just need to hold on to
the guard and make sure it disposes on shutdown. Alternatively the client can be closed:
Copied
use std::time::Duration;
if let Some(client) = sentry::Hub::current().client() {
client.close(Some(Duration::from_secs(2)));
}
After a call to close
, the client cannot be used anymore. It's important to
only call close
immediately before shutting down the application.
- Package:
- cargo:sentry
- Version:
- 0.34.0
- Repository:
- https://github.com/getsentry/sentry-rust