IHi Yuxin, That would be the way to go for flink-shaded and Flink 1.17. Generally, netty upgrades are a source of instability based on past experiences. But considering that we have newer versions (4.1.91.Final) tested with flink-shaded 17.0 in Flink 1.18, it should be alright bumping netty in flink-shaded 16.2 to netty 4.1.83.Final.
One argument against such an upgrade would be that the Flink community is not supporting arm officially (i.e. there's no CI setup). In this sense I want to wait whether other's have objections against doing the upgrade. If no other objections are shared, the next step would be to create a Jira issue, do the change in flink-shaded, release flink-shaded 16.2 and update the flink-shaded version in the 1.17 branch. Matthias On Mon, Oct 16, 2023 at 5:07 AM Yuxin Tan <tanyuxinw...@gmail.com> wrote: > Hi, devs, > > I would like to revive the discussion again. > > In our ARM environment, we encounter a compile error when > using Flink 1.17. > > Flink 1.17 depends on flink-shaded 16.1, which uses netty 4.1.82. > However, flink-shaded 16.1 fails to compile in the ARM > environment. As a result, we are unable to compile Flink 1.17 > due to this issue. > > We have tested compiling flink-shaded using netty 4.1.83 or > a later version in ARM env, and it can compile successfully. > > I believe this is a critical bug that needs to be addressed first. > > Taking into consideration the previous discussions regarding > compatibility and the dependency of external connectors on > this version, I propose addressing the bug by only updating > flink-shaded's netty to a minor version (e.g., 4.1.83) rather than > backporting FLINK-32032. This approach can avoid introducing > other changes, such as updating to a higher netty version (4.1.91), > potential guava version alterations, Curator version modifications, > and so on. > > WDYT? > > > Best, > Yuxin > > > Jing Ge <j...@ververica.com.invalid> 于2023年10月5日周四 14:39写道: > > > Hi Chesnay, > > > > Thanks for joining this discussion and sharing your thoughts! > > > > > > > Connectors shouldn't depend on flink-shaded. > > > > > > > Perfect! We are on the same page. If you could read through the > discussion, > > you would realize that, currently, there are many connectors depend on > > flink-shaded. > > > > > > > Connectors are small enough in scope that depending directly on > > > guava/jackson/etc. is a fine approach, and they have plenty of other > > > dependencies that they need to manage anyway; let's treat these the > same > > > way. > > > > > > > It is even better, if we could do that. Jira tickest[1] are created. > > > > > > > As for class-loading, there has been a long-standing goal of each > > > connector being loaded in their own classloader. That still is the > north > > > star and the only reasonable way to ensure that multiple connectors can > > > be safely used with SQL. > > > > > > > What is the current status? Do we have any Jira ticket for that? > > > > Best regards, > > Jing > > > > [1] https://issues.apache.org/jira/browse/FLINK-33190 > > > > On Wed, Oct 4, 2023 at 4:43 PM Chesnay Schepler <ches...@apache.org> > > wrote: > > > > > There is no "monolithic" flink-shaded dependency. > > > Connectors shouldn't depend on anything that Flink provides, but be > > > self-contained as Martijn pointed out. > > > > > > > > > > > Connectors shouldn't depend on flink-shaded. > > > > > > > > > > The overhead and/or risks of doing/supporting that right now far > > > outweigh the benefits. > > > ( Because we either have to encode the full version for all > dependencies > > > into the package, or accept the risk of minor/patch dependency clashes) > > > > > > > > > > Connectors are small enough in scope that depending directly on > > > guava/jackson/etc. is a fine approach, and they have plenty of other > > > dependencies that they need to manage anyway; let's treat these the > same > > > way. > > > > > > > > > > Naturally this is also an argument against flink-shaded-connectors; on > > > top of that we already experience repo creep and managing releases is > > > difficult enough as-is. > > > > > > > > > > > As for class-loading, there has been a long-standing goal of each > > > connector being loaded in their own classloader. That still is the > north > > > star and the only reasonable way to ensure that multiple connectors can > > > be safely used with SQL. > > > > > > > > > > On 02/10/2023 18:32, Jing Ge wrote: > > > > Hi Sergey, > > > > > > > > Thanks for sharing your thoughts. It could somehow help but didn't > get > > to > > > > the root of this issue. > > > > > > > > According to the documentation, Flink shaded is used to provide a > > single > > > > instance of a shaded dependency across sub-modules in Flink repo. > > Shaded > > > > namespaces should be used where shaded dependencies are configured. > > After > > > > connectors have been externalized, it ends up with more repos > depending > > > on > > > > one shaded jar, e.g. guava. This is a "monolithic" dependency setup > > that > > > > makes it difficult to change the root(flink-shade), because any > changes > > > of > > > > the root have to be propagated to all downstream repos. Even worse is > > > that > > > > not every downstream repo is known while modifying the root. > > > > > > > > Since all externalized connectors have their own repos and are not > > > > sub-modules of Flink anymore, I would suggest the following upgrade: > > > > > > > > 1. Connectors should use their own classloader instead of Flink's > > > > classloader. This will break the monolithic dependency. Connectors > and > > > > Flink can use different versions of flink-shaded. > > > > 2. [optional] It would be even better that all connector repos depend > > on > > > > their own individual shaded repo, e.g. flink-connector-shaded. > > > flink-shaded > > > > should only be used by Flink. > > > > > > > > WDYT? > > > > > > > > Best regards, > > > > Jing > > > > > > > > > > > > On Thu, Sep 14, 2023 at 11:28 PM Sergey Nuyanzin < > snuyan...@gmail.com> > > > > wrote: > > > > > > > >> Yes, that's a reasonable question, thanks for raising it. > > > >> > > > >> I think this is not only about flink-shaded, rather about > dependencies > > > in > > > >> general > > > >> > > > >> I guess there is no rule of thumb, or at least I'm not aware of > > > >> Here are my thoughts > > > >> 1. If bumping dependency doesn't require breaking changes and passes > > > >> existing tests then just bump it > > > >> 2. In case there are breaking changes we could consider doing this > > > within > > > >> next major release > > > >> for minor release > > > >> a. try to answer a question whether it impacts Flink or not > > > >> b. in case it impacts Flink and fix itself is relatively small > > > then to > > > >> avoid breaking change > > > >> we could copy classes with solutions to Flink repo like it > > > usually > > > >> happens with Calcite related fixes. > > > >> The problem of this approach is that I guess it will not > work > > > for > > > >> non jvm deps like e.g. RocksDB > > > >> c. In case no way to do it without breaking changes for minor > > > release > > > >> then probably need sort of announcement motivating to move to > another > > > major > > > >> version where the issue is fixed > > > >> > > > >> looking forward to seeing other opinions about that > > > >> > > > >> On Wed, Sep 13, 2023 at 9:47 PM Jing Ge <j...@ververica.com.invalid > > > > > >> wrote: > > > >> > > > >>> Hi Sergey, > > > >>> > > > >>> Thanks for doing the analysis and providing the great insight. I > did > > my > > > >> own > > > >>> analysis and got the same conclusion. I just wanted to use this > > example > > > >> to > > > >>> kick off a discussion and check if there is a common guideline or > > > concept > > > >>> in the community to handle such cases, since it seems any bump-up > > might > > > >>> have a big impact. This time, we are kind of lucky. What if CVE > > related > > > >>> code has been used in Flink? I do see it is an issue that > upgrading a > > > lib > > > >>> in the flink-shaded repo is not recommended because of the > > complexity. > > > >>> IMHO, we don't want to put the cart before the horse. > > > >>> > > > >>> Best regards, > > > >>> Jing > > > >>> > > > >>> On Wed, Sep 13, 2023 at 9:11 PM Sergey Nuyanzin < > snuyan...@gmail.com > > > > > > >>> wrote: > > > >>> > > > >>>> Thanks for raising this > > > >>>> > > > >>>> I would suggest trying to double check whether it actually impacts > > > >> Flink > > > >>> or > > > >>>> not. > > > >>>> > > > >>>> For instance from one side Calcite between 1.22.0..1.31.0 has a > > > >> critical > > > >>>> CVE-2022-39135 [1] > > > >>>> from another side Flink does not use this functionality and is not > > > >>> impacted > > > >>>> by this. > > > >>>> > > > >>>> Regarding guava > > > >>>> After closer look at Guava's high CVE you've mentioned [2] > > > >>>> Based on Github issue describing the problem (exists since 2016) > [3] > > > >>>> there is a security issue with class > > > >>>> com.google.common.io.FileBackedOutputStream > > > >>>> > > > >>>> While looking at source code for > > > >>>> com.google.common.io.FileBackedOutputStream usage I was not able > to > > > >> find > > > >>>> such. > > > >>>> Also I was not able to find usage of > > > >>>> org.apache.flink.shaded.guava30.com.google.common.io > > > >> .Files#createTempDir > > > >>>> which was fixed within commit [4] > > > >>>> Also I was not able to find other Guava classes which use the > > problem > > > >>> one. > > > >>>> Currently I tend to think that it probably does not impact Flink > as > > > >> well. > > > >>>> Please correct me if I'm wrong > > > >>>> > > > >>>> [1] https://nvd.nist.gov/vuln/detail/CVE-2022-39135 > > > >>>> [2] https://nvd.nist.gov/vuln/detail/CVE-2023-2976 > > > >>>> [3] https://github.com/google/guava/issues/2575 > > > >>>> [4] > > > >>>> > > > >>>> > > > >> > > > > > > https://github.com/google/guava/commit/b3719763b9ca777b94554d7ea2d2b92e27ac6164 > > > >>>> On Wed, Sep 13, 2023 at 6:26 PM Jing Ge > <j...@ververica.com.invalid > > > > > > >>>> wrote: > > > >>>> > > > >>>>> Hi Sergey, Hi Martijn, > > > >>>>> > > > >>>>> Thanks for the information and suggestions. It is rational. > > > >>>>> > > > >>>>> Since on one hand, we should not do the upgrade according to all > > your > > > >>>>> thoughts, and on the other hand, Guava 30.1.1-jre has known > CVEs[1] > > > >> and > > > >>>> the > > > >>>>> next closest version that has no CVEs is 32.0.1-jre. Without the > > > >>> upgrade, > > > >>>>> users might not be able to use Flink 1.17 in their production and > > > >> Flink > > > >>>>> 1.18 has not been released yet. Do we have any known concept, > rule, > > > >> or > > > >>>>> process in the community to handle such a common CVE issue? > > > >>>>> > > > >>>>> Best regards, > > > >>>>> Jing > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> [1] > > > >>> > https://mvnrepository.com/artifact/com.google.guava/guava/30.1.1-jre > > > >>>>> On Wed, Sep 13, 2023 at 4:31 PM Martijn Visser < > > > >>> martijnvis...@apache.org > > > >>>>> wrote: > > > >>>>> > > > >>>>>> Hi Jing, > > > >>>>>> > > > >>>>>> Like Sergey said, making that change would break all connectors > > > >> that > > > >>>> used > > > >>>>>> Flink Shaded in the released versions, given that Guava is part > of > > > >>> the > > > >>>>>> package name. I think that was the case for Kafka, Pulsar, JDBC, > > > >>>> PubSub, > > > >>>>>> HBase, Cassandra and maybe even more. We shouldn't do this > > upgrade. > > > >>>>>> > > > >>>>>> Best regards, > > > >>>>>> > > > >>>>>> Martijn > > > >>>>>> > > > >>>>>> On Wed, Sep 13, 2023 at 2:54 PM Sergey Nuyanzin < > > > >> snuyan...@gmail.com > > > >>>>>> wrote: > > > >>>>>> > > > >>>>>>> Hi Jing, > > > >>>>>>> > > > >>>>>>> If I remember correctly, bumping of guava to another major > > > >> version > > > >>>>>> usually > > > >>>>>>> leads to package rename > > > >>>>>>> since the major version number is a part of the package name... > > > >>>>>>> Not 100% sure however this could be the reason for some > potential > > > >>>>>> breaking > > > >>>>>>> changes (we also faced that with connectors while the last > > > >>>> flink-shaded > > > >>>>>>> update) > > > >>>>>>> > > > >>>>>>> On Wed, Sep 13, 2023 at 2:43 PM Jing Ge > > > >> <j...@ververica.com.invalid > > > >>>>>>> wrote: > > > >>>>>>> > > > >>>>>>>> Hi Martijn, > > > >>>>>>>> > > > >>>>>>>> For example, bump up guava from 30.1.1-jre to 32.1.2-jre. > > > >>>>>>>> > > > >>>>>>>> Best regards, > > > >>>>>>>> Jing > > > >>>>>>>> > > > >>>>>>>> On Wed, Sep 13, 2023 at 2:37 PM Martijn Visser < > > > >>>>>> martijnvis...@apache.org > > > >>>>>>>> wrote: > > > >>>>>>>> > > > >>>>>>>>> Hi Jing, > > > >>>>>>>>> > > > >>>>>>>>> A PR to update the readme sounds like a good plan. > > > >>>>>>>>> > > > >>>>>>>>> I think it depends on what are the expected updates for a > > > >>>>>> flink-shaded > > > >>>>>>>>> 16.2, since that version doesn't exist. > > > >>>>>>>>> > > > >>>>>>>>> Best regards, > > > >>>>>>>>> > > > >>>>>>>>> Martijn > > > >>>>>>>>> > > > >>>>>>>>> On Wed, Sep 13, 2023 at 1:48 PM Jing Ge > > > >>>> <j...@ververica.com.invalid > > > >>>>>>>>> wrote: > > > >>>>>>>>> > > > >>>>>>>>>> Hi Martijn, > > > >>>>>>>>>> > > > >>>>>>>>>> Thanks for your reply with details. Appreciate it. > > > >>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>>>> Flink-Shaded is usually only updated whenever a > > > >>>>>>>>>>> new Flink minor version is released and only at the > > > >>> beginning > > > >>>>> of > > > >>>>>>> the > > > >>>>>>>>>>> release cycle, so that there's enough time to stabilize > > > >>>> Flink. > > > >>>>>>>>>> > > > >>>>>>>>>> This is the information I am looking for. It will help devs > > > >>>>>>> understand > > > >>>>>>>>> the > > > >>>>>>>>>> compatibility between different versions of flink and > > > >>>>> flink-shaded, > > > >>>>>>> if > > > >>>>>>>> it > > > >>>>>>>>>> could be described in the readme. If you don't mind, I can > > > >>>>> create a > > > >>>>>>> pr > > > >>>>>>>>> and > > > >>>>>>>>>> update it. > > > >>>>>>>>>> > > > >>>>>>>>>> Speaking of this rule, I have a follow-up question: do you > > > >>> have > > > >>>>> any > > > >>>>>>>>> concern > > > >>>>>>>>>> if flink-shaded 16.2 will be released and upgraded(from > > > >> 16.1 > > > >>> to > > > >>>>>> 16.2) > > > >>>>>>>> in > > > >>>>>>>>>> Flink 1.17? Is there anything we should pay attention to > > > >>> while > > > >>>>>>>> releasing > > > >>>>>>>>> a > > > >>>>>>>>>> new minor flink-shaded version? > > > >>>>>>>>>> > > > >>>>>>>>>> Best regards, > > > >>>>>>>>>> Jing > > > >>>>>>>>>> > > > >>>>>>>>>> On Wed, Sep 13, 2023 at 9:01 AM Martijn Visser < > > > >>>>>>>> martijnvis...@apache.org > > > >>>>>>>>>> wrote: > > > >>>>>>>>>> > > > >>>>>>>>>>> Hi Jing, > > > >>>>>>>>>>> > > > >>>>>>>>>>> Flink Shaded exists so that Flinks internal usage of > > > >>> commonly > > > >>>>>> used > > > >>>>>>>>>> packages > > > >>>>>>>>>>> such as Guava, Jackson inside of Flink don't clash with > > > >>>>> different > > > >>>>>>>>>> versions > > > >>>>>>>>>>> that users might use when creating a Flink application. > > > >>> When > > > >>>> I > > > >>>>>> did > > > >>>>>>>> the > > > >>>>>>>>>>> upgrade of Flink Shaded, we already ran into a bunch of > > > >>>>> problems > > > >>>>>>>>> because > > > >>>>>>>>>> a > > > >>>>>>>>>>> lot of the externalized connectors relied on Flink > > > >> Shaded, > > > >>>>> which > > > >>>>>>> made > > > >>>>>>>>> it > > > >>>>>>>>>>> problematic to get the connector to work on both Flink > > > >> 1.17 > > > >>>> and > > > >>>>>>> Flink > > > >>>>>>>>>> 1.18. > > > >>>>>>>>>>> There's been quite a lot of effort put into making sure > > > >>> that > > > >>>>>>>>> externalized > > > >>>>>>>>>>> connectors don't rely on Flink Shaded at all anymore, by > > > >>>> either > > > >>>>>>> using > > > >>>>>>>>>> their > > > >>>>>>>>>>> own versions of shaded artifacts (which was the case with > > > >>> the > > > >>>>>>> Pulsar > > > >>>>>>>>>>> connector) or just removing the dependency on Flink > > > >> Shaded > > > >>>> all > > > >>>>>>>>> together, > > > >>>>>>>>>> by > > > >>>>>>>>>>> using regular Java. > > > >>>>>>>>>>> > > > >>>>>>>>>>> If you would upgrade flink-shaded from 16.1 to 17.0 in > > > >>> Flink > > > >>>>>> 1.17, > > > >>>>>>>> you > > > >>>>>>>>>>> would break all externalized connectors that rely on > > > >> Flink > > > >>>>>> Shaded's > > > >>>>>>>>> Guava > > > >>>>>>>>>>> version, plus you potentially would impact the runtime > > > >>> given > > > >>>>> that > > > >>>>>>>>>> there's a > > > >>>>>>>>>>> newer Netty version etc. Flink-Shaded is usually only > > > >>> updated > > > >>>>>>>> whenever > > > >>>>>>>>> a > > > >>>>>>>>>> new Flink minor version is released and only at the > > > >> beginning > > > >>>> of > > > >>>>>> the > > > >>>>>>>>>>> release cycle, so that there's enough time to stabilize > > > >>>> Flink. > > > >>>>>>>>>> All in all, we shouldn't upgrade flink-shaded in Flink > > > >> 1.17. > > > >>>>>>>>>>> Best regards, > > > >>>>>>>>>>> > > > >>>>>>>>>>> Martijn > > > >>>>>>>>>>> > > > >>>>>>>>>>> On Tue, Sep 12, 2023 at 7:26 PM Jing Ge > > > >>>>>> <j...@ververica.com.invalid > > > >>>>>>>>>>> wrote: > > > >>>>>>>>>>> > > > >>>>>>>>>>>> Hi Dev, > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> Currently Flink 1.17 is using flink-shaded 16.1 and > > > >> Flink > > > >>>>> 1.18 > > > >>>>>> is > > > >>>>>>>>> using > > > >>>>>>>>>>>> flink-shaded 17.0. Do we need to consider any > > > >>> compatibility > > > >>>>>> rules > > > >>>>>>>>>> between > > > >>>>>>>>>>>> them? E.g. is there any concern to upgrade flink-shaded > > > >>>> from > > > >>>>>> 16.1 > > > >>>>>>>> to > > > >>>>>>>>>> 17.x > > > >>>>>>>>>>>> for Flink 1.17? Or there are some implicit dependency > > > >>> rules > > > >>>>>>> between > > > >>>>>>>>>>>> them. Looking > > > >>>>>>>>>>>> forward to hearing from you. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> Best regards, > > > >>>>>>>>>>>> Jing > > > >>>>>>>>>>>> > > > >>>>>>> > > > >>>>>>> -- > > > >>>>>>> Best regards, > > > >>>>>>> Sergey > > > >>>>>>> > > > >>>> > > > >>>> -- > > > >>>> Best regards, > > > >>>> Sergey > > > >>>> > > > >> > > > >> -- > > > >> Best regards, > > > >> Sergey > > > >> > > > > > > > > >