diff options
Diffstat (limited to 'vendor/go.opentelemetry.io/otel/sdk/resource/auto.go')
-rw-r--r-- | vendor/go.opentelemetry.io/otel/sdk/resource/auto.go | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go b/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go index 324dd4baf..c1d220408 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go @@ -18,7 +18,6 @@ import ( "context" "errors" "fmt" - "strings" ) var ( @@ -46,65 +45,28 @@ type Detector interface { // Detect calls all input detectors sequentially and merges each result with the previous one. // It returns the merged error too. func Detect(ctx context.Context, detectors ...Detector) (*Resource, error) { - r := new(Resource) - return r, detect(ctx, r, detectors) -} - -// detect runs all detectors using ctx and merges the result into res. This -// assumes res is allocated and not nil, it will panic otherwise. -func detect(ctx context.Context, res *Resource, detectors []Detector) error { - var ( - r *Resource - errs detectErrs - err error - ) - + var autoDetectedRes *Resource + var errInfo []string for _, detector := range detectors { if detector == nil { continue } - r, err = detector.Detect(ctx) + res, err := detector.Detect(ctx) if err != nil { - errs = append(errs, err) + errInfo = append(errInfo, err.Error()) if !errors.Is(err, ErrPartialResource) { continue } } - r, err = Merge(res, r) + autoDetectedRes, err = Merge(autoDetectedRes, res) if err != nil { - errs = append(errs, err) + errInfo = append(errInfo, err.Error()) } - *res = *r } - if len(errs) == 0 { - return nil - } - return errs -} - -type detectErrs []error - -func (e detectErrs) Error() string { - errStr := make([]string, len(e)) - for i, err := range e { - errStr[i] = fmt.Sprintf("* %s", err) + var aggregatedError error + if len(errInfo) > 0 { + aggregatedError = fmt.Errorf("detecting resources: %s", errInfo) } - - format := "%d errors occurred detecting resource:\n\t%s" - return fmt.Sprintf(format, len(e), strings.Join(errStr, "\n\t")) -} - -func (e detectErrs) Unwrap() error { - switch len(e) { - case 0: - return nil - case 1: - return e[0] - } - return e[1:] -} - -func (e detectErrs) Is(target error) bool { - return len(e) != 0 && errors.Is(e[0], target) + return autoDetectedRes, aggregatedError } |