Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ambiguous import error with opentelemetry collector builder #10476

Open
zdelagrange opened this issue Jun 27, 2024 · 7 comments
Open

Ambiguous import error with opentelemetry collector builder #10476

zdelagrange opened this issue Jun 27, 2024 · 7 comments
Labels
area:builder bug Something isn't working

Comments

@zdelagrange
Copy link

Describe the bug
cross posting from here: open-telemetry/opentelemetry.io#4738

After following the instructions up to Running and debugging the receiver
I get unexpected output

../go/pkg/mod/google.golang.org/[email protected]/status/status.go:35:2: ambiguous import: found package google.golang.org/genproto/googleapis/rpc/status in multiple modules:
	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 (/home/hanyang/go/pkg/mod/google.golang.org/[email protected]/googleapis/rpc/status)
	google.golang.org/genproto/googleapis/rpc v0.0.0-20240520151616-dc85e6b867a5 (/home/hanyang/go/pkg/mod/google.golang.org/genproto/googleapis/[email protected]/status)
../go/pkg/mod/go.opentelemetry.io/collector/exporter/[email protected]/otlp.go:13:2: ambiguous import: found package google.golang.org/genproto/googleapis/rpc/errdetails in multiple modules:
	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 (/home/hanyang/go/pkg/mod/google.golang.org/[email protected]/googleapis/rpc/errdetails)
	google.golang.org/genproto/googleapis/rpc v0.0.0-20240520151616-dc85e6b867a5 (/home/hanyang/go/pkg/mod/google.golang.org/genproto/googleapis/[email protected]/errdetails)
../go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/[email protected]/runtime/handler.go:12:2: ambiguous import: found package google.golang.org/genproto/googleapis/api/httpbody in multiple modules:
	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 (/home/hanyang/go/pkg/mod/google.golang.org/[email protected]/googleapis/api/httpbody)
	google.golang.org/genproto/googleapis/api v0.0.0-20240520151616-dc85e6b867a5 (/home/hanyang/go/pkg/mod/google.golang.org/genproto/googleapis/[email protected]/httpbody)
when running the  go run ./otelcol-dev --config config.yaml from the instructions

Steps to reproduce
Builder conf:

  name: otelcol-deb
  description: otel collector distribution for tenable
  output_path: ./otelcol-dev
  otelcol_version: 0.103.0

exporters:
  - gomod:
      go.opentelemetry.io/collector/exporter/debugexporter v0.103.0
  - gomod:
      go.opentelemetry.io/collector/exporter/otlpexporter v0.103.0
processors:
  - gomod:
      go.opentelemetry.io/collector/processor/batchprocessor v0.103.0
receivers:
  - gomod:
      go.opentelemetry.io/collector/receiver/otlpreceiver v0.103.0```

**What did you expect to see?**
a clean build

**What did you see instead?**
ambiguous import error

**What version did you use?**
0.103.0

**What config did you use?**
<!-- Config: (e.g. the yaml config file) -->

**Environment**
macos with asdf golang install

**Additional context**
<!-- Add any other context about the problem here. -->
@zdelagrange zdelagrange added the bug Something isn't working label Jun 27, 2024
@mx-psi
Copy link
Member

mx-psi commented Jul 30, 2024

I am unable to reproduce with OCB v0.106.0 and the following manifest:

name: otelcol-deb
description: otel collector distribution for tenable
output_path: ./otelcol-dev
otelcol_version: 0.106.0

exporters:
  - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.106.0
  - gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.106.0
processors:
  - gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.106.0
receivers:
  - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.106.0

I get the following logs:

2024-07-30T17:19:04.603+0200	INFO	internal/command.go:125	OpenTelemetry Collector Builder	{"version": "0.106.0", "date": "2024-07-29T19:36:07Z"}
2024-07-30T17:19:04.605+0200	INFO	internal/command.go:161	Using config file	{"path": "manifest.yaml"}
2024-07-30T17:19:04.605+0200	INFO	builder/config.go:142	Using go	{"go-executable": "/home/pablo.baeyens/.gvm/gos/go1.22.4/bin/go"}
2024-07-30T17:19:04.606+0200	INFO	builder/main.go:100	Sources created	{"path": "/tmp/otelcol-distribution2888401949"}
2024-07-30T17:19:04.846+0200	INFO	builder/main.go:191	Getting go modules
2024-07-30T17:19:04.896+0200	INFO	builder/main.go:111	Compiling
2024-07-30T17:19:07.021+0200	INFO	builder/main.go:130	Compiled	{"binary": "/tmp/otelcol-distribution2888401949/otelcol-custom"}

@evan361425
Copy link

evan361425 commented Aug 8, 2024

You got same module but different versions, try force the version in go.mod. Something like:

require (
  // you should use the desired version in the error log
  google.golang.org/genproto v0.0.0-20240520151616-dc85e6b867a5
)

If you want to avoid go mod tidy discard your changes, try import any modules of the package, for example type/date:

// This is necessary to avoid ambiguous import error
// see https://github.com/open-telemetry/opentelemetry-collector/issues/10476
import _ "google.golang.org/genproto/googleapis/type/date"

@mattjohnsonpint
Copy link

I encountered the same issue, and found that the following fixed it:

go get google.golang.org/genproto/googleapis/api
go mod tidy

@tommed
Copy link

tommed commented Mar 19, 2025

I tried:

go get google.golang.org/genproto/googleapis/api
go mod tidy

I get:

go: upgraded google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422 => v0.0.0-20250313205543-e70fdf4c4cb4
go: dql-events/internal/web_data/exports imports
        cloud.google.com/go/storage imports
        google.golang.org/grpc/stats/opentelemetry: ambiguous import: found package google.golang.org/grpc/stats/opentelemetry in multiple modules:
        google.golang.org/grpc v1.71.0 (/Users/work/source/go/pkg/mod/google.golang.org/[email protected]/stats/opentelemetry)
        google.golang.org/grpc/stats/opentelemetry v0.0.0-20241028142157-ada6787961b3 (/Users/work/source/go/pkg/mod/google.golang.org/grpc/stats/[email protected])

I also tried and failed with:

go get -u cloud.google.com/go/storage

go: downloading cloud.google.com/go/iam v1.4.1
go: downloading google.golang.org/api v0.224.0
go: cloud.google.com/go/storage imports
        google.golang.org/grpc/stats/opentelemetry: ambiguous import: found package google.golang.org/grpc/stats/opentelemetry in multiple modules:
        google.golang.org/grpc v1.71.0 (/Users/work/source/go/pkg/mod/google.golang.org/[email protected]/stats/opentelemetry)
        google.golang.org/grpc/stats/opentelemetry v0.0.0-20241028142157-ada6787961b3 (/Users/work/source/go/pkg/mod/google.golang.org/grpc/stats/[email protected])
go: downloading cloud.google.com/go/longrunning v0.6.5

@mx-psi
Copy link
Member

mx-psi commented Mar 19, 2025

We need to see your manifest and have more details on whether you are using custom components to provide further help. If you are also facing this issue, could you please post the full Collector builder manifest you are using?

@tommed
Copy link

tommed commented Mar 19, 2025

Thanks. In the meantime Gemini provided a working fix:

"Historically, sub-packages of google.golang.org/grpc were not always treated as independent modules. Now they can be. This can lead to issues when dependencies rely on different module versions."

Complete Reset and Rebuild:

Remove go.mod and go.sum:
rm go.mod go.sum

Clean the Module Cache:
go clean -modcache

Reinitialize Modules:
go mod init your/module/name (Replace your/module/name with your actual module path.)

Add the Required Dependency:
go get cloud.google.com/go/storage

Tidy Dependencies:
go mod tidy

Build/Run Your Code:
go build or go run your_file.go

@kwgc-t
Copy link

kwgc-t commented Mar 21, 2025

i face same issue.

~~~/cloud.google.com/go/[email protected]/grpc_metrics.go:34:2: ambiguous import: found package google.golang.org/grpc/stats/opentelemetry in multiple modules:
        google.golang.org/grpc v1.71.0 (/Users/~~~/google.golang.org/[email protected]/stats/opentelemetry)
        google.golang.org/grpc/stats/opentelemetry v0.0.0-20240907200651-3ffb98b2c93a (/Users/~~~/google.golang.org/grpc/stats/[email protected])

i think, this issue happening cause is later google.golang.org/[email protected].

i add below code to go.mod then, resolve this issue

replace google.golang.org/grpc v1.71.0 => google.golang.org/grpc v1.68.0

but this solution is temporary.
the definitive solution is that  provided package is being corrected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:builder bug Something isn't working
Projects
None yet
Development

No branches or pull requests

6 participants