Hi Kyuubi developers and users,

I propose to introduce a new repo apache/kyuubi-shaded in this discussion.


Why?

To address the following issues:

Case 1:
Some dependencies which used by both Kyuubi and other dependencies, have
known CVEs, but due to the breaking changes of API, we can not upgrade it
to the security version.

For example, currently, Kyuubi uses thrift 0.9.3, which is affected by
CVE-2018-11798, CVE-2020-13949, CVE-2019-0205, but due to its breaking API
change breaks compatible w/ Hive 2.3 and Hive 3.1, we can not upgrade it to
0.16.0.

Case 2:
For some components, we decide to stay to a lower version of client to
compatible w/ an adopted widely version of server, hence we lack of some
newer functionality e.g. JDK 17 support.

For example, currently, Kyuubi uses Curator 2.12 and Zookeeper 3.4, because
Zookeeper 3.4 is adopted by CDH 5 and CDH 6, AWS EMR(although the recent
EMR distributions upgraded to Zookeeper 3.5).


How?

Kyuubi uses Apache Maven as the building tool, which is not good to handle
shaded stuff in multiple modules project. I believe most of us felt the bad
experience of kyuubi-hive-jdbc-shaded, so a separated repo should be a good
idea.

All shaded classes should be relocated to the new package which starting w/
`org.apache.kyuubi.shaded.`(or something else), to avoid the confliction
between the existing vanilla classes. In the meanwhile, we can override
some classes, which is kind of a patch to the existing third party
libraries.


What’s the scope?

The shading/relocation technology should be the final solution, we must
avoid using it as much as possible, because the relocation is not always
safe, it may break the reflection invoking, and the relocated class is not
fully tested.

Currently, I propose to limit the scope to Thrift, Curator, Zookeeper,
please list your reasons if you want to add other components.

Thanks,
Cheng Pan

Reply via email to