googleapis / google-cloud-java

Google Cloud Client Library for Java
https://cloud.google.com/java/docs/reference
Apache License 2.0
1.89k stars 1.06k forks source link

Integrating with stackdriver leads to dependency hell #6203

Open igorbernstein2 opened 5 years ago

igorbernstein2 commented 5 years ago

This issue falls somewhere between google-cloud-java clients, stackdriver and the oss bom. It doesn't seem like there is consensus on how to deal with this issue. So I'll start the discussion here and we can move it else where.

As it stands it's really not easy for customers to get dependencies right when trying to integrate a google-cloud-java client with an opencensus stackdriver exporter.

Issue 1: google-cloud-java clients only depend on opencensus-api, to enable metrics they need to add at least 2 more dependencies: opencensus-impl and an exporter. Which means customers will need to manually track the version opencensus used by google-cloud-java and bump their versions of opencensus-impl and an exporter. I spoke to @chingor13 about this and he thought this should be in the oss bom. But it seems like there is some push back: https://github.com/GoogleCloudPlatform/cloud-opensource-java/issues/862

Issue 2: since the stackdriver exporters use google-cloud-java clients, they will always have older versions grpc & friends. Which requires customers to either exclude common deps from the stack driver exporters or import the grpc bom and then manually bump versions to stay in sync with google-cloud-java's grpc bom

/cc @elharo @chingor13 @suztomo @kolea2

elharo commented 5 years ago

Which libraries do you mean by google-cloud-java clients? Somehting in this repo or something that uses this repo?

igorbernstein2 commented 5 years ago

In this repo. Specifically bigtable: https://github.com/googleapis/google-cloud-java/pull/6143

But it also applies to other clients in this repo that don't have explicit integration with opencensus. It would be very useful for customers to be able to export underlying grpc metrics to stack driver.