This is an automated email from the ASF dual-hosted git repository.
chengpan pushed a commit to branch branch-1.10
in repository https://gitbox.apache.org/repos/asf/kyuubi.git
The following commit(s) were added to refs/heads/branch-1.10 by this push:
new 72b7991eb0 [KYUUBI #7003] Cut out JNA dependencies for authZ plugin
72b7991eb0 is described below
commit 72b7991eb08052cb6187462d0f8fa20a8547d746
Author: Cheng Pan <[email protected]>
AuthorDate: Wed Mar 26 11:19:58 2025 +0800
[KYUUBI #7003] Cut out JNA dependencies for authZ plugin
### Why are the changes needed?
This PR provides an alternative for RANGER-4125 to cut out JNA dependencies
for authZ plugin.
### How was this patch tested?
Pass GHA, and I checked the content of authz-shaded jar
```
$ jar tf
extensions/spark/kyuubi-spark-authz-shaded/target/kyuubi-spark-authz-shaded_2.12-1.11.0-SNAPSHOT.jar
| grep Hostname
org/apache/kyuubi/shade/com/kstruct/gethostname4j/Hostname.class
```
### Was this patch authored or co-authored using generative AI tooling?
No.
Closes #7003 from pan3793/authz-hostname.
Closes #7003
42e246856 [Cheng Pan] Cut out JNA dependencies for authz plugin
Authored-by: Cheng Pan <[email protected]>
Signed-off-by: Cheng Pan <[email protected]>
(cherry picked from commit 176bc293fc142b3b9bf07dddd40e525072905efb)
Signed-off-by: Cheng Pan <[email protected]>
---
extensions/spark/kyuubi-spark-authz-shaded/pom.xml | 4 --
extensions/spark/kyuubi-spark-authz/pom.xml | 21 ---------
.../java/com/kstruct/gethostname4j/Hostname.java | 52 ++++++++++++++++++++++
3 files changed, 52 insertions(+), 25 deletions(-)
diff --git a/extensions/spark/kyuubi-spark-authz-shaded/pom.xml
b/extensions/spark/kyuubi-spark-authz-shaded/pom.xml
index 952cf6a5fb..5afc095e7e 100644
--- a/extensions/spark/kyuubi-spark-authz-shaded/pom.xml
+++ b/extensions/spark/kyuubi-spark-authz-shaded/pom.xml
@@ -51,11 +51,7 @@
<include>org.apache.ranger:*</include>
<include>org.codehaus.jackson:*</include>
<include>com.sun.jersey:*</include>
- <include>com.kstruct:gethostname4j</include>
<include>javax.ws.rs:jsr311-api</include>
- <!-- JNA is the transitive dependency of
gethostname4j -->
- <include>net.java.dev.jna:jna</include>
- <include>net.java.dev.jna:jna-platform</include>
</includes>
</artifactSet>
<filters>
diff --git a/extensions/spark/kyuubi-spark-authz/pom.xml
b/extensions/spark/kyuubi-spark-authz/pom.xml
index 240c74e0fe..dd9f1dfa03 100644
--- a/extensions/spark/kyuubi-spark-authz/pom.xml
+++ b/extensions/spark/kyuubi-spark-authz/pom.xml
@@ -33,10 +33,7 @@
<properties>
<ranger.version>2.5.0</ranger.version>
- <!-- the following components' version may need to tune to align w/
the ranger.version-->
- <gethostname4j.version>1.0.0</gethostname4j.version>
<jersey.client.version>1.19.4</jersey.client.version>
- <jna.version>5.7.0</jna.version>
</properties>
<dependencies>
@@ -108,24 +105,6 @@
<version>${jersey.client.version}</version>
</dependency>
- <dependency>
- <groupId>com.kstruct</groupId>
- <artifactId>gethostname4j</artifactId>
- <version>${gethostname4j.version}</version>
- </dependency>
-
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna</artifactId>
- <version>${jna.version}</version>
- </dependency>
-
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna-platform</artifactId>
- <version>${jna.version}</version>
- </dependency>
-
<dependency>
<groupId>org.apache.ranger</groupId>
<artifactId>ranger-plugin-classloader</artifactId>
diff --git
a/extensions/spark/kyuubi-spark-authz/src/main/java/com/kstruct/gethostname4j/Hostname.java
b/extensions/spark/kyuubi-spark-authz/src/main/java/com/kstruct/gethostname4j/Hostname.java
new file mode 100644
index 0000000000..ac384326ac
--- /dev/null
+++
b/extensions/spark/kyuubi-spark-authz/src/main/java/com/kstruct/gethostname4j/Hostname.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.kstruct.gethostname4j;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
+
+// Alternative for RANGER-4125 to cut out JNA dependencies
+public class Hostname {
+
+ // The highest priority environment variable which allows user to
+ // set hostname for Ranger client
+ public static final String RANGER_CLIENT_HOSTNAME = "RANGER_CLIENT_HOSTNAME";
+
+ /** @return the hostname the of the current machine */
+ public static String getHostname() {
+ String hostname = System.getenv(RANGER_CLIENT_HOSTNAME);
+ if (isValid(hostname)) return hostname;
+
+ // Gets the host name from an environment variable
+ // (COMPUTERNAME on Windows, HOSTNAME elsewhere)
+ hostname = SystemUtils.getHostName();
+ if (isValid(hostname)) return hostname;
+
+ try {
+ return InetAddress.getLocalHost().getHostName();
+ } catch (UnknownHostException rethrow) {
+ throw new RuntimeException(rethrow);
+ }
+ }
+
+ private static boolean isValid(String hostname) {
+ return StringUtils.isNotBlank(hostname) && !"localhost".equals(hostname);
+ }
+}