Skip to main content

Lifecycle Overview

Use Observe.flush() and Observe.shutdown() to control when finished spans are exported and when the SDK releases tracing resources.

Flush

Observe.flush() forces the current provider to export finished spans.
Flush spans
Use flush() when the process may terminate before the batch exporter sends spans in the background: Flushing inside every web request can add latency. In long-running services, let the batch processor export normally and flush during shutdown.

Shutdown

Observe.shutdown() disables instrumentations, shuts down the provider, and clears SDK state so the process can initialize again with different options.
Shut down tracing
Use shutdown when the process owns the provider lifecycle:
Handle graceful shutdown

Reinitialization

Observe.initialize() rejects conflicting reinitialization while the SDK is active. To change exporter settings, shut down first:
Reinitialize with a new exporter
If the SDK is already initialized, a later Observe.initialize({ instrumentModules }) call patches additional modules without replacing the provider.

Short-Lived Example

Short-lived job example