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);
+  }
+}

Reply via email to