summaryrefslogtreecommitdiff
path: root/vendor/go.opentelemetry.io/otel/sdk/resource
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/go.opentelemetry.io/otel/sdk/resource')
-rw-r--r--vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go3
-rw-r--r--vendor/go.opentelemetry.io/otel/sdk/resource/resource.go25
2 files changed, 22 insertions, 6 deletions
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go
index ce455dc54..3d703c5d9 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go
@@ -5,6 +5,7 @@ package resource // import "go.opentelemetry.io/otel/sdk/resource"
import (
"encoding/xml"
+ "errors"
"fmt"
"io"
"os"
@@ -63,7 +64,7 @@ func parsePlistFile(file io.Reader) (map[string]string, error) {
}
if len(v.Dict.Key) != len(v.Dict.String) {
- return nil, fmt.Errorf("the number of <key> and <string> elements doesn't match")
+ return nil, errors.New("the number of <key> and <string> elements doesn't match")
}
properties := make(map[string]string, len(v.Dict.Key))
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
index ad4b50df4..09b91e1e1 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
@@ -21,11 +21,22 @@ import (
// Resources should be passed and stored as pointers
// (`*resource.Resource`). The `nil` value is equivalent to an empty
// Resource.
+//
+// Note that the Go == operator compares not just the resource attributes but
+// also all other internals of the Resource type. Therefore, Resource values
+// should not be used as map or database keys. In general, the [Resource.Equal]
+// method should be used instead of direct comparison with ==, since that
+// method ensures the correct comparison of resource attributes, and the
+// [attribute.Distinct] returned from [Resource.Equivalent] should be used for
+// map and database keys instead.
type Resource struct {
attrs attribute.Set
schemaURL string
}
+// Compile-time check that the Resource remains comparable.
+var _ map[Resource]struct{} = nil
+
var (
defaultResource *Resource
defaultResourceOnce sync.Once
@@ -137,15 +148,19 @@ func (r *Resource) Iter() attribute.Iterator {
return r.attrs.Iter()
}
-// Equal returns true when a Resource is equivalent to this Resource.
-func (r *Resource) Equal(eq *Resource) bool {
+// Equal returns whether r and o represent the same resource. Two resources can
+// be equal even if they have different schema URLs.
+//
+// See the documentation on the [Resource] type for the pitfalls of using ==
+// with Resource values; most code should use Equal instead.
+func (r *Resource) Equal(o *Resource) bool {
if r == nil {
r = Empty()
}
- if eq == nil {
- eq = Empty()
+ if o == nil {
+ o = Empty()
}
- return r.Equivalent() == eq.Equivalent()
+ return r.Equivalent() == o.Equivalent()
}
// Merge creates a new [Resource] by merging a and b.