Skip to content

Commit

Permalink
change resource.Default to be evaluated on first call, rather than on…
Browse files Browse the repository at this point in the history
… import
  • Loading branch information
bmon committed Nov 11, 2021
1 parent d0e5dd5 commit f975a15
Showing 1 changed file with 15 additions and 18 deletions.
33 changes: 15 additions & 18 deletions sdk/resource/resource.go
Expand Up @@ -36,26 +36,11 @@ type Resource struct {
}

var (
emptyResource Resource

defaultResource = func(r *Resource, err error) *Resource {
if err != nil {
otel.Handle(err)
}
return r
}(
Detect(
context.Background(),
defaultServiceNameDetector{},
fromEnv{},
telemetrySDK{},
),
)
emptyResource Resource
defaultResource *Resource
)

var (
errMergeConflictSchemaURL = errors.New("cannot merge resource due to conflicting Schema URL")
)
var errMergeConflictSchemaURL = errors.New("cannot merge resource due to conflicting Schema URL")

// New returns a Resource combined from the user-provided detectors.
func New(ctx context.Context, opts ...Option) (*Resource, error) {
Expand Down Expand Up @@ -211,6 +196,18 @@ func Empty() *Resource {
// Default returns an instance of Resource with a default
// "service.name" and OpenTelemetrySDK attributes.
func Default() *Resource {
if defaultResource == nil {
var err error
defaultResource, err = Detect(
context.Background(),
defaultServiceNameDetector{},
fromEnv{},
telemetrySDK{},
)
if err != nil {
otel.Handle(err)
}
}
return defaultResource
}

Expand Down

0 comments on commit f975a15

Please sign in to comment.