[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 <chengpan@apache.org>
Signed-off-by: Cheng Pan <chengpan@apache.org>
This commit is contained in:
Cheng Pan 2025-07-28 15:29:27 +08:00
parent 31ce37f526
commit d2cfc871be
No known key found for this signature in database
GPG Key ID: 8001952629BCC75D
5 changed files with 33 additions and 36 deletions

View File

@ -108,6 +108,11 @@
<artifactId>kyuubi-relocated-hive-service-rpc</artifactId>
</dependency>
<dependency>
<groupId>org.apache.kyuubi</groupId>
<artifactId>kyuubi-relocated-util</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-scala_${scala.binary.version}</artifactId>

View File

@ -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 = {

View File

@ -46,6 +46,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.kyuubi</groupId>
<artifactId>kyuubi-relocated-util</artifactId>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client-api</artifactId>

View File

@ -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;

45
pom.xml
View File

@ -113,10 +113,10 @@
</distributionManagement>
<properties>
<java.version>8</java.version>
<maven.version>3.9.10</maven.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<enforcer.maxJdkVersion>8</enforcer.maxJdkVersion>
<scala.version>2.12.19</scala.version>
<scala.binary.version>2.12</scala.binary.version>
<scala-collection-compat.version>2.12.0</scala-collection-compat.version>
@ -310,6 +310,11 @@
<artifactId>kyuubi-relocated-hive-service-rpc</artifactId>
<version>${kyuubi-relocated.version}</version>
</dependency>
<dependency>
<groupId>org.apache.kyuubi</groupId>
<artifactId>kyuubi-relocated-util</artifactId>
<version>${kyuubi-relocated.version}</version>
</dependency>
<dependency>
<groupId>org.apache.kyuubi</groupId>
<artifactId>${kyuubi-relocated-zookeeper.artifacts}</artifactId>
@ -1891,7 +1896,8 @@
<configuration>
<rules>
<enforceBytecodeVersion>
<maxJdkVersion>${java.version}</maxJdkVersion>
<maxJdkVersion>${enforcer.maxJdkVersion}</maxJdkVersion>
<ignoredScopes>provided</ignoredScopes>
<ignoredScopes>test</ignoredScopes>
<ignoreClasses>
<!--
@ -1935,7 +1941,6 @@
<jdk>8</jdk>
</activation>
<properties>
<java.version>8</java.version>
<!--
Iceberg drops support for Java 8 since 1.7.0.
And it may have compatible issue with Spark 3.5.4+, see Iceberg #11731
@ -1945,30 +1950,12 @@
</profile>
<profile>
<id>java-11</id>
<id>jdk9+</id>
<activation>
<jdk>11</jdk>
<jdk>[9,)</jdk>
</activation>
<properties>
<java.version>11</java.version>
<maven.compiler.source></maven.compiler.source>
<maven.compiler.target></maven.compiler.target>
<maven.compiler.release>${java.version}</maven.compiler.release>
<minimalJavaBuildVersion>${java.version}</minimalJavaBuildVersion>
</properties>
</profile>
<profile>
<id>java-17</id>
<activation>
<jdk>17</jdk>
</activation>
<properties>
<java.version>17</java.version>
<maven.compiler.source></maven.compiler.source>
<maven.compiler.target></maven.compiler.target>
<maven.compiler.release>${java.version}</maven.compiler.release>
<minimalJavaBuildVersion>${java.version}</minimalJavaBuildVersion>
<maven.compiler.release>8</maven.compiler.release>
</properties>
</profile>
@ -1978,10 +1965,6 @@
<jdk>21</jdk>
</activation>
<properties>
<java.version>21</java.version>
<maven.compiler.source></maven.compiler.source>
<maven.compiler.target></maven.compiler.target>
<maven.compiler.release>${java.version}</maven.compiler.release>
<!-- TODO: The current version of spotless(2.30.0) and google-java-format(1.7)
does not support Java 21, but new version produces different outputs.
Re-evaluate once we dropped support for Java 8. -->
@ -2064,6 +2047,7 @@
<module>extensions/spark/kyuubi-spark-connector-hive</module>
</modules>
<properties>
<enforcer.maxJdkVersion>17</enforcer.maxJdkVersion>
<spark.version>4.0.0</spark.version>
<spark.binary.version>4.0</spark.binary.version>
<antlr4.version>4.13.1</antlr4.version>
@ -2084,6 +2068,7 @@
<profile>
<id>spark-master</id>
<properties>
<enforcer.maxJdkVersion>17</enforcer.maxJdkVersion>
<spark.version>4.0.0-SNAPSHOT</spark.version>
<antlr4.version>4.13.1</antlr4.version>
<maven.plugin.scalatest.exclude.tags>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</maven.plugin.scalatest.exclude.tags>