census-instrumentation / opencensus-java

A stats collection and distributed tracing framework
https://opencensus.io
Apache License 2.0
672 stars 201 forks source link

opencensus-exporter-stats-stackdriver has transitive dependency on old incompatible version of google-cloud-monitoring #2066

Open jacobg opened 3 years ago

jacobg commented 3 years ago

Please answer these questions before submitting a bug report.

What version of OpenCensus are you using? 0.28.2

What JVM are you using (java -version)? 11

What did you do?

Updated to latest version of OpenCensus 0.28.2 and latest version of Google Cloud APIs 1.105.+.

What did you expect to see?

Everything working as before

What did you see instead?

Runtime error:

Exception in thread "main" java.lang.AbstractMethodError: Receiver class com.google.api.gax.grpc.InstantiatingGrpcChannelProvider does not define or inherit an implementation of the resolved method 'abstract com.google.api.gax.rpc.TransportChannelProvider withExecutor(java.util.concurrent.Executor)' of interface com.google.api.gax.rpc.TransportChannelProvider.
    at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:157)
    at com.google.cloud.monitoring.v3.stub.GrpcMetricServiceStub.create(GrpcMetricServiceStub.java:176)
    at com.google.cloud.monitoring.v3.stub.MetricServiceStubSettings.createStub(MetricServiceStubSettings.java:187)
    at com.google.cloud.monitoring.v3.MetricServiceClient.<init>(MetricServiceClient.java:157)
    at com.google.cloud.monitoring.v3.MetricServiceClient.create(MetricServiceClient.java:138)
    at io.opencensus.exporter.stats.stackdriver.StackdriverStatsExporter.createMetricServiceClient(StackdriverStatsExporter.java:432)
    at io.opencensus.exporter.stats.stackdriver.StackdriverStatsExporter.createInternal(StackdriverStatsExporter.java:397)
    at io.opencensus.exporter.stats.stackdriver.StackdriverStatsExporter.createAndRegister(StackdriverStatsExporter.java:225)

Additional context

The latest version of OpenCensus is pinned to google-cloud-monitoring version 1.82.0, which is from July 2019. It has transitive dependency on old version of gax-grpc which is incompatible with the more recent versions of gax and grpc libraries. Bumping google-cloud-monitoring to the latest version 2.0.8 will fix this problem.