Skip to content

TracerProvider.shutdown should be optional #1288

Closed
@anuraaga

Description

After doing some investigation into usage of the SDK, I'm feeling that TracerProvider.shutdown may not be the best idiom at least in all languages. For example, a stateful span processor may be shared by multiple providers, and this seems reasonable. But this allows one provider to shutdown another one. It seems like if a span processor has state, it should be closed independently, similar to many objects that are shared, such as any old gRPC client used in an app. In Java this would be very idiomatic by just having anything that has state (e.g. Batch span processor, exporter) to implement Closeable - it makes it obvious what needs to be closed, and that can happen maybe with try/resources, or a DI container, without doing so in the TracerProvider, which is really just a bag of objects, not in itself requiring closing. Of course the shutdown maybe idiomatic in other languages so I don't know if it needs to be removed completely but it seems nice to give options that can use language features.

Metadata

Assignees

No one assigned

    Labels

    area:sdkRelated to the SDKneeds discussionNeed more information before all suitable labels can be appliedspec:traceRelated to the specification/trace directory

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions