+1 Looks like a good plan, and happy to see PR's up for it already :)

On 7/16/20 8:44 AM, [email protected] wrote:
Sounds like a good plan and good work Istvan! Having pre-shaded third party
repo and using in most of the dependent components like Omid, Tephra avoids
a lot of headaches with compatibility.


On Wed, Jul 15, 2020 at 11:07 AM Istvan Toth <[email protected]> wrote:

Hi!

I've just opened https://issues.apache.org/jira/browse/PHOENIX-6010 that
introduces a pre-shaded Hbase-style phoenx-thirdparty repo with pre-shaded
Guava.

Please check it out, and share your thoughts on it!

Copying most of the ticket here, in the hope of getting more eyes on it:

We have long-standing and well-documented problems with Guava, just like
the rest of the Hadoop components.

Adopt the solution used by HBase:

    - create phoenix-thirdparty repo
    - create a pre-shaded phoenix-shaded-guava artifact in it
    - Use the pre-shaded Guava in every phoenix component

The advantages are well-known, but to name a few:

    - Phoenix will work with Hadoop 3.1.3+
    - One less CVE in our direct dependencies
    - No more conflict with our consumer's Guava versions


Notes:

    - I've chosen 29.0-android for the thirdparty Guava version, as we need
    Java 7 compatibility.
       - The alternative would be Guava 20 (the last non-android release
       that supports Java 7), which has CVEs.
    - Tephra doesn't use phoenix-thirdparty, instead it is shaded with Twill
    and Guava 13, as its Twill dependency doesn't work with recent Guavas.
       - The long-term solution would be removing the EOL twill dependency
       from it, and then converting to thirdparty, but that's quite a
lot of work,
       and I wanted to have something that works now.
    - This is less of an issue for 4.x, where every component is on Guava 13
    - ish, but I think once it's done, it'd be worth backporting this to
4.x as
    well, if only to make backporting easier.
    - If/when we agree on doing this, and have worked out the details, I'll
    add the sub-tasks for getting this in master:
       - create a new repo for phoenix-thirdparty and release it
       - update and release Tephra with the shaded artifact
       - update and release Omid with the the thirdparty stuff
       - update the Omid and Tephra dependencies in Phoenix, and convert it
       to use thirdparty as well.

Please share your thoughts, opinion, and questions!


Reply via email to