55<summary >Table of Contents</summary >
66
77* [ Sampling] ( #sampling )
8- * [ Tracer Creation ] ( #tracer-creation )
8+ * [ Tracer Provider ] ( #tracer-provider )
99* [ Additional Span Interfaces] ( #additional-span-interfaces )
1010* [ Span Processor] ( #span-processor )
1111* [ Span Exporter] ( #span-exporter )
@@ -180,7 +180,9 @@ Optional parameters:
180180| present| false| true| ` localParentSampled() ` |
181181| present| false| false| ` localParentNotSampled() ` |
182182
183- ## Tracer Creation
183+ ## Tracer Provider
184+
185+ ### Tracer Creation
184186
185187New ` Tracer ` instances are always created through a ` TracerProvider ` (see
186188[ API] ( api.md#tracerprovider ) ). The ` name ` and ` version ` arguments
@@ -201,6 +203,24 @@ Note: Implementation-wise, this could mean that `Tracer` instances have a
201203reference to their ` TracerProvider ` and access configuration only via this
202204reference.
203205
206+ ### Shutdown
207+
208+ This method provides a way for provider to do any cleanup required.
209+
210+ ` Shutdown ` MUST be called only once for each ` TracerProvider ` instance. After
211+ the call to ` Shutdown ` , subsequent attempts to get a ` Tracer ` are not allowed. SDKs
212+ SHOULD return a valid no-op Tracer for these calls, if possible.
213+
214+ ` Shutdown ` SHOULD provide a way to let the caller know whether it succeeded,
215+ failed or timed out.
216+
217+ ` Shutdown ` SHOULD complete or abort within some timeout. ` Shutdown ` can be
218+ implemented as a blocking API or an asynchronous API which notifies the caller
219+ via a callback or an event. Language library authors can decide if they want to
220+ make the shutdown timeout configurable.
221+
222+ ` Shutdown ` MUST be implemented at least by invoking ` Shutdown ` within all internal processors.
223+
204224## Additional Span Interfaces
205225
206226The [ API-level definition for Span's interface] ( api.md#span-operations )
0 commit comments