From d2cfc871be66ebdb546f855f17beeb424e7eb80b Mon Sep 17 00:00:00 2001 From: Cheng Pan Date: Mon, 28 Jul 2025 15:29:27 +0800 Subject: [PATCH] [KYUUBI #7144] Remove direct usage of `sun.misc.Signal` ### Why are the changes needed? This PR replaces the `sun.misc.Signal` with the Kyuubi wrapped one, see https://github.com/apache/kyuubi-shaded/pull/64, which allows Kyuubi to use any of Java 8+ to compile with `-release:8` while still ensuring compatibility with Java 8. ### How was this patch tested? Pass GHA. Local tested by building against JDK 21, running on JDK 8, everything works as expected. ### Was this patch authored or co-authored using generative AI tooling? No. Closes #7144 from pan3793/signal. Closes #7144 64804060a [Cheng Pan] enforcer.maxJdkVersion 2eb263573 [Cheng Pan] cleanup b699c345a [Cheng Pan] remove staging repo 12eeae3ab [Cheng Pan] fix 08eba7695 [Cheng Pan] RC 53e4e6cce [Cheng Pan] Use Kyuubi Signal Authored-by: Cheng Pan Signed-off-by: Cheng Pan --- kyuubi-common/pom.xml | 5 +++ .../apache/kyuubi/util/SignalRegister.scala | 10 +++-- kyuubi-hive-beeline/pom.xml | 5 +++ .../apache/hive/beeline/SunSignalHandler.java | 4 +- pom.xml | 45 +++++++------------ 5 files changed, 33 insertions(+), 36 deletions(-) diff --git a/kyuubi-common/pom.xml b/kyuubi-common/pom.xml index cb592948d..29a98ab7f 100644 --- a/kyuubi-common/pom.xml +++ b/kyuubi-common/pom.xml @@ -108,6 +108,11 @@ kyuubi-relocated-hive-service-rpc + + org.apache.kyuubi + kyuubi-relocated-util + + com.fasterxml.jackson.module jackson-module-scala_${scala.binary.version} diff --git a/kyuubi-common/src/main/scala/org/apache/kyuubi/util/SignalRegister.scala b/kyuubi-common/src/main/scala/org/apache/kyuubi/util/SignalRegister.scala index bff962f69..00294e9a2 100644 --- a/kyuubi-common/src/main/scala/org/apache/kyuubi/util/SignalRegister.scala +++ b/kyuubi-common/src/main/scala/org/apache/kyuubi/util/SignalRegister.scala @@ -17,18 +17,20 @@ package org.apache.kyuubi.util +import java.util import java.util.Collections import scala.collection.JavaConverters._ +import scala.collection.mutable import org.apache.commons.lang3.SystemUtils import org.slf4j.Logger -import sun.misc.{Signal, SignalHandler} import org.apache.kyuubi.Logging +import org.apache.kyuubi.shaded.util.{Signal, SignalHandler} object SignalRegister extends Logging { - private val handlers = new scala.collection.mutable.HashMap[String, ActionHandler] + private val handlers = new mutable.HashMap[String, ActionHandler] def registerLogger(log: Logger): Unit = { Seq("TERM", "HUP", "INT").foreach { sig => @@ -41,7 +43,7 @@ object SignalRegister extends Logging { ActionHandler(signal) }) handler.register({ - log.error(s"RECEIVED SIGNAL ${signal.getNumber}: " + sig) + log.error(s"RECEIVED SIGNAL ${signal.getNumber}: $sig") false }) } catch { @@ -52,7 +54,7 @@ object SignalRegister extends Logging { } case class ActionHandler(signal: Signal) extends SignalHandler { - private val actions = Collections.synchronizedList(new java.util.LinkedList[() => Boolean]) + private val actions = Collections.synchronizedList(new util.LinkedList[() => Boolean]) private val prevHandler: SignalHandler = Signal.handle(signal, this) override def handle(sig: Signal): Unit = { diff --git a/kyuubi-hive-beeline/pom.xml b/kyuubi-hive-beeline/pom.xml index dafae9509..32a602d6c 100644 --- a/kyuubi-hive-beeline/pom.xml +++ b/kyuubi-hive-beeline/pom.xml @@ -46,6 +46,11 @@ ${project.version} + + org.apache.kyuubi + kyuubi-relocated-util + + org.apache.hadoop hadoop-client-api diff --git a/kyuubi-hive-beeline/src/main/java/org/apache/hive/beeline/SunSignalHandler.java b/kyuubi-hive-beeline/src/main/java/org/apache/hive/beeline/SunSignalHandler.java index db4fc5b9e..382d55709 100644 --- a/kyuubi-hive-beeline/src/main/java/org/apache/hive/beeline/SunSignalHandler.java +++ b/kyuubi-hive-beeline/src/main/java/org/apache/hive/beeline/SunSignalHandler.java @@ -24,8 +24,8 @@ package org.apache.hive.beeline; import java.sql.SQLException; import java.sql.Statement; -import sun.misc.Signal; -import sun.misc.SignalHandler; +import org.apache.kyuubi.shaded.util.Signal; +import org.apache.kyuubi.shaded.util.SignalHandler; public class SunSignalHandler implements BeeLineSignalHandler, SignalHandler { private Statement stmt = null; diff --git a/pom.xml b/pom.xml index a1715243e..cb1b97787 100644 --- a/pom.xml +++ b/pom.xml @@ -113,10 +113,10 @@ - 8 3.9.10 - ${java.version} - ${java.version} + 8 + 8 + 8 2.12.19 2.12 2.12.0 @@ -310,6 +310,11 @@ kyuubi-relocated-hive-service-rpc ${kyuubi-relocated.version} + + org.apache.kyuubi + kyuubi-relocated-util + ${kyuubi-relocated.version} + org.apache.kyuubi ${kyuubi-relocated-zookeeper.artifacts} @@ -1891,7 +1896,8 @@ - ${java.version} + ${enforcer.maxJdkVersion} + provided test @@ -2064,6 +2047,7 @@ extensions/spark/kyuubi-spark-connector-hive + 17 4.0.0 4.0 4.13.1 @@ -2084,6 +2068,7 @@ spark-master + 17 4.0.0-SNAPSHOT 4.13.1 org.scalatest.tags.Slow,org.apache.kyuubi.tags.DeltaTest,org.apache.kyuubi.tags.IcebergTest,org.apache.kyuubi.tags.PaimonTest,org.apache.kyuubi.tags.HudiTest,org.apache.kyuubi.tags.PySparkTest