I want to bring this back to attention - with the concern raised here we are still looking for a potentially better answer to the original issue [1].
We have a class that depends on Guava (in its implementation, not the public interface) and we want to make it available for use with multiple connectors. Thanks, Thomas [1] https://lists.apache.org/thread.html/3de9d2353cf22aea0448fb744314103b5f88195216acc3bff449354a@%3Cdev.flink.apache.org%3E On Wed, Mar 6, 2019 at 7:13 AM Thomas Weise <t...@apache.org> wrote: > How I managed to do that.. > > Here is the discussion about the shared package: > > > https://lists.apache.org/thread.html/3de9d2353cf22aea0448fb744314103b5f88195216acc3bff449354a@%3Cdev.flink.apache.org%3E > > > On Wed, Mar 6, 2019 at 7:10 AM Aljoscha Krettek <aljos...@apache.org> > wrote: > >> I think the two links are identical. >> >> > On 6. Mar 2019, at 16:05, Thomas Weise <t...@apache.org> wrote: >> > >> > For more context, see [1] [2] >> > >> > The GuavaFlinkConnectorRateLimiter is an implementation of the rate >> limiter >> > interface that uses Guava. It is not a test class, it is intended to be >> > used in applications and the (shaded) Guava isn't user facing. >> > >> > [1] >> > >> https://lists.apache.org/thread.html/3599d95020604e2476bd794c55a11bc1c3a958a83a3c9c45c50630c1@%3Cdev.flink.apache.org%3E >> > [2] >> > >> https://lists.apache.org/thread.html/3599d95020604e2476bd794c55a11bc1c3a958a83a3c9c45c50630c1@%3Cdev.flink.apache.org%3E >> > >> > >> > On Wed, Mar 6, 2019 at 6:41 AM Chesnay Schepler <ches...@apache.org> >> wrote: >> > >> >> I fully agree that we should write down this kind of conventions that >> >> committers have setup implicitly. >> >> >> >> I agree that we should keep flink-core as lean as possible. >> >> >> >> On guava usages in general my current stance is that we should only use >> >> guava if necessary. Spreading it (or other dependencies for that >> matter) >> >> to far just creates headaches when bumping the dependency. >> >> >> >> One core principle that we *must* follow is that shaded dependencies >> are >> >> neither exposed to user-code nor contained in the user-jar. Otherwise >> we >> >> end up again in a situation where we cannot increment dependencies >> >> without breaking compatibility for users. >> >> >> >> The PR at hand has a few issues in this regard. The guava limiter is >> >> only used in tests but is not a test class, yet isn't annotated with >> >> either Public(Evolving)/Internal. As it stands I cannot judge whether >> >> this is truly supposed to be an example / test utility or actually a >> >> user-facing class. >> >> If this is to be used by connectors, which are included in the >> user-jar, >> >> then we're violating the principle above, in which case the class >> should >> >> be relocated/removed. >> >> >> >> On 06.03.2019 15:10, Aljoscha Krettek wrote: >> >>> Hi, >> >>> >> >>> I recently saw that we added a dependency on our shaded-guava to >> >> flink-core [1]. Just for the record, I don’t want do diminish the >> >> contributions of anyone involved in the PR in any way. It just made me >> >> realise that we have some implicit agreements or assumptions about >> adding >> >> certain things to core packages that we might never have really >> discussed. >> >> I think we should do that now. >> >>> >> >>> Quite some time ago an effort was started to reduce our dependency on >> >> Guava [2] because of some problems with version stability and >> dependency >> >> conflicts. At some later point, we created shaded guava so that we >> could >> >> use it without clashes [3]. I believe we now have shaded Guava only in >> >> runtime modules where it wasn’t easy to remove and CEP. >> >>> >> >>> With the creation of shaded guava, I think we are in a bit of a limbo >> >> situation where it is not exactly clear what our stance towards it is, >> >> because it is easy to add to modules, as evident by the aforementioned >> PR. >> >> I think we should discuss that situation and agree upon a common >> stance on >> >> the topic. >> >>> >> >>> In general, I think the surface (which includes classes, interfaces, >> and >> >> dependencies, among other things) of core modules should be kept as >> lean as >> >> possible. (all modules really) >> >>> >> >>> What do you think? >> >>> >> >>> Best, >> >>> Aljoscha >> >>> >> >>> [1] https://github.com/apache/flink/pull/7679 < >> >> https://github.com/apache/flink/pull/7679> >> >>> [2] https://issues.apache.org/jira/browse/FLINK-3700 < >> >> https://issues.apache.org/jira/browse/FLINK-3700> >> >>> [3] https://issues.apache.org/jira/browse/FLINK-6982 >> >> >> >> >> >> >> >>