From 96ec1323ac8a113beb614bb89a47159ac82df5f5 Mon Sep 17 00:00:00 2001 From: Cheng Pan Date: Fri, 23 Aug 2024 00:40:35 +0800 Subject: [PATCH] [KYUUBI #6638] Shade jsr311-api in Authz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # :mag: Description I faced the following error when trying to run authz with Spark 4.0 ``` Cause: java.lang.NoClassDefFoundError: javax/ws/rs/core/Cookie at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:375) at org.apache.ranger.plugin.policyengine.RangerPluginContext.createAdminClient(RangerPluginContext.java:96) at org.apache.ranger.plugin.util.PolicyRefresher.(PolicyRefresher.java:90) at org.apache.ranger.plugin.service.RangerBasePlugin.init(RangerBasePlugin.java:251) at org.apache.kyuubi.plugin.spark.authz.ranger.SparkRangerAdminPlugin$.initialize(SparkRangerAdminPlugin.scala:68) ``` The `javax.ws.rs:jsr311-api` is the transitive dep of `jersey-client`, we should shade and relocate it correctly. Why does it work with Spark 3? Spark 3 provides `jakarta.ws.rs:jakarta.ws.rs-api:2.1.6` which provides `java.ws.rs.*` classes, but Spark 4 upgrades to `jakarta.ws.rs:jakarta.ws.rs-api:3.0.0` which changed package name to`jakarta.ws.rs.*`. ## Types of changes :bookmark: - [x] Bugfix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) ## Test Plan ๐Ÿงช Pass GHA and manually tested with Spark 4 --- # Checklist ๐Ÿ“ - [x] This patch was not authored or co-authored using [Generative Tooling](https://www.apache.org/legal/generative-tooling.html) **Be nice. Be informative.** Closes #6638 from pan3793/jsr311. Closes #6638 5699200cf [Cheng Pan] Shade jsr311-api in Authz Authored-by: Cheng Pan Signed-off-by: Cheng Pan --- extensions/spark/kyuubi-spark-authz-shaded/pom.xml | 4 ++++ extensions/spark/kyuubi-spark-authz/pom.xml | 6 ------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/extensions/spark/kyuubi-spark-authz-shaded/pom.xml b/extensions/spark/kyuubi-spark-authz-shaded/pom.xml index d7bfd3db819..0cc69d1b9c9 100644 --- a/extensions/spark/kyuubi-spark-authz-shaded/pom.xml +++ b/extensions/spark/kyuubi-spark-authz-shaded/pom.xml @@ -92,6 +92,10 @@ com.sun.ws.rs.ext ${kyuubi.shade.packageName}.com.sun.ws.rs.ext + + javax.ws.rs + ${kyuubi.shade.packageName}.javax.ws.rs + com.kstruct.gethostname4j ${kyuubi.shade.packageName}.com.kstruct.gethostname4j diff --git a/extensions/spark/kyuubi-spark-authz/pom.xml b/extensions/spark/kyuubi-spark-authz/pom.xml index f420b338600..038869adb2f 100644 --- a/extensions/spark/kyuubi-spark-authz/pom.xml +++ b/extensions/spark/kyuubi-spark-authz/pom.xml @@ -106,12 +106,6 @@ com.sun.jersey jersey-client ${jersey.client.version} - - - javax.ws.rs - jsr311-api - -