[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:
parent
31ce37f526
commit
d2cfc871be
@ -108,6 +108,11 @@
|
|||||||
<artifactId>kyuubi-relocated-hive-service-rpc</artifactId>
|
<artifactId>kyuubi-relocated-hive-service-rpc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.kyuubi</groupId>
|
||||||
|
<artifactId>kyuubi-relocated-util</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.module</groupId>
|
<groupId>com.fasterxml.jackson.module</groupId>
|
||||||
<artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
|
<artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
|
||||||
|
|||||||
@ -17,18 +17,20 @@
|
|||||||
|
|
||||||
package org.apache.kyuubi.util
|
package org.apache.kyuubi.util
|
||||||
|
|
||||||
|
import java.util
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import scala.collection.JavaConverters._
|
||||||
|
import scala.collection.mutable
|
||||||
|
|
||||||
import org.apache.commons.lang3.SystemUtils
|
import org.apache.commons.lang3.SystemUtils
|
||||||
import org.slf4j.Logger
|
import org.slf4j.Logger
|
||||||
import sun.misc.{Signal, SignalHandler}
|
|
||||||
|
|
||||||
import org.apache.kyuubi.Logging
|
import org.apache.kyuubi.Logging
|
||||||
|
import org.apache.kyuubi.shaded.util.{Signal, SignalHandler}
|
||||||
|
|
||||||
object SignalRegister extends Logging {
|
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 = {
|
def registerLogger(log: Logger): Unit = {
|
||||||
Seq("TERM", "HUP", "INT").foreach { sig =>
|
Seq("TERM", "HUP", "INT").foreach { sig =>
|
||||||
@ -41,7 +43,7 @@ object SignalRegister extends Logging {
|
|||||||
ActionHandler(signal)
|
ActionHandler(signal)
|
||||||
})
|
})
|
||||||
handler.register({
|
handler.register({
|
||||||
log.error(s"RECEIVED SIGNAL ${signal.getNumber}: " + sig)
|
log.error(s"RECEIVED SIGNAL ${signal.getNumber}: $sig")
|
||||||
false
|
false
|
||||||
})
|
})
|
||||||
} catch {
|
} catch {
|
||||||
@ -52,7 +54,7 @@ object SignalRegister extends Logging {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case class ActionHandler(signal: Signal) extends SignalHandler {
|
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)
|
private val prevHandler: SignalHandler = Signal.handle(signal, this)
|
||||||
|
|
||||||
override def handle(sig: Signal): Unit = {
|
override def handle(sig: Signal): Unit = {
|
||||||
|
|||||||
@ -46,6 +46,11 @@
|
|||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.kyuubi</groupId>
|
||||||
|
<artifactId>kyuubi-relocated-util</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.hadoop</groupId>
|
<groupId>org.apache.hadoop</groupId>
|
||||||
<artifactId>hadoop-client-api</artifactId>
|
<artifactId>hadoop-client-api</artifactId>
|
||||||
|
|||||||
@ -24,8 +24,8 @@ package org.apache.hive.beeline;
|
|||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import sun.misc.Signal;
|
import org.apache.kyuubi.shaded.util.Signal;
|
||||||
import sun.misc.SignalHandler;
|
import org.apache.kyuubi.shaded.util.SignalHandler;
|
||||||
|
|
||||||
public class SunSignalHandler implements BeeLineSignalHandler, SignalHandler {
|
public class SunSignalHandler implements BeeLineSignalHandler, SignalHandler {
|
||||||
private Statement stmt = null;
|
private Statement stmt = null;
|
||||||
|
|||||||
45
pom.xml
45
pom.xml
@ -113,10 +113,10 @@
|
|||||||
</distributionManagement>
|
</distributionManagement>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>8</java.version>
|
|
||||||
<maven.version>3.9.10</maven.version>
|
<maven.version>3.9.10</maven.version>
|
||||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
<maven.compiler.source>8</maven.compiler.source>
|
||||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
<maven.compiler.target>8</maven.compiler.target>
|
||||||
|
<enforcer.maxJdkVersion>8</enforcer.maxJdkVersion>
|
||||||
<scala.version>2.12.19</scala.version>
|
<scala.version>2.12.19</scala.version>
|
||||||
<scala.binary.version>2.12</scala.binary.version>
|
<scala.binary.version>2.12</scala.binary.version>
|
||||||
<scala-collection-compat.version>2.12.0</scala-collection-compat.version>
|
<scala-collection-compat.version>2.12.0</scala-collection-compat.version>
|
||||||
@ -310,6 +310,11 @@
|
|||||||
<artifactId>kyuubi-relocated-hive-service-rpc</artifactId>
|
<artifactId>kyuubi-relocated-hive-service-rpc</artifactId>
|
||||||
<version>${kyuubi-relocated.version}</version>
|
<version>${kyuubi-relocated.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.kyuubi</groupId>
|
||||||
|
<artifactId>kyuubi-relocated-util</artifactId>
|
||||||
|
<version>${kyuubi-relocated.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.kyuubi</groupId>
|
<groupId>org.apache.kyuubi</groupId>
|
||||||
<artifactId>${kyuubi-relocated-zookeeper.artifacts}</artifactId>
|
<artifactId>${kyuubi-relocated-zookeeper.artifacts}</artifactId>
|
||||||
@ -1891,7 +1896,8 @@
|
|||||||
<configuration>
|
<configuration>
|
||||||
<rules>
|
<rules>
|
||||||
<enforceBytecodeVersion>
|
<enforceBytecodeVersion>
|
||||||
<maxJdkVersion>${java.version}</maxJdkVersion>
|
<maxJdkVersion>${enforcer.maxJdkVersion}</maxJdkVersion>
|
||||||
|
<ignoredScopes>provided</ignoredScopes>
|
||||||
<ignoredScopes>test</ignoredScopes>
|
<ignoredScopes>test</ignoredScopes>
|
||||||
<ignoreClasses>
|
<ignoreClasses>
|
||||||
<!--
|
<!--
|
||||||
@ -1935,7 +1941,6 @@
|
|||||||
<jdk>8</jdk>
|
<jdk>8</jdk>
|
||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>8</java.version>
|
|
||||||
<!--
|
<!--
|
||||||
Iceberg drops support for Java 8 since 1.7.0.
|
Iceberg drops support for Java 8 since 1.7.0.
|
||||||
And it may have compatible issue with Spark 3.5.4+, see Iceberg #11731
|
And it may have compatible issue with Spark 3.5.4+, see Iceberg #11731
|
||||||
@ -1945,30 +1950,12 @@
|
|||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>java-11</id>
|
<id>jdk9+</id>
|
||||||
<activation>
|
<activation>
|
||||||
<jdk>11</jdk>
|
<jdk>[9,)</jdk>
|
||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>11</java.version>
|
<maven.compiler.release>8</maven.compiler.release>
|
||||||
<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>
|
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
@ -1978,10 +1965,6 @@
|
|||||||
<jdk>21</jdk>
|
<jdk>21</jdk>
|
||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<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)
|
<!-- 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.
|
does not support Java 21, but new version produces different outputs.
|
||||||
Re-evaluate once we dropped support for Java 8. -->
|
Re-evaluate once we dropped support for Java 8. -->
|
||||||
@ -2064,6 +2047,7 @@
|
|||||||
<module>extensions/spark/kyuubi-spark-connector-hive</module>
|
<module>extensions/spark/kyuubi-spark-connector-hive</module>
|
||||||
</modules>
|
</modules>
|
||||||
<properties>
|
<properties>
|
||||||
|
<enforcer.maxJdkVersion>17</enforcer.maxJdkVersion>
|
||||||
<spark.version>4.0.0</spark.version>
|
<spark.version>4.0.0</spark.version>
|
||||||
<spark.binary.version>4.0</spark.binary.version>
|
<spark.binary.version>4.0</spark.binary.version>
|
||||||
<antlr4.version>4.13.1</antlr4.version>
|
<antlr4.version>4.13.1</antlr4.version>
|
||||||
@ -2084,6 +2068,7 @@
|
|||||||
<profile>
|
<profile>
|
||||||
<id>spark-master</id>
|
<id>spark-master</id>
|
||||||
<properties>
|
<properties>
|
||||||
|
<enforcer.maxJdkVersion>17</enforcer.maxJdkVersion>
|
||||||
<spark.version>4.0.0-SNAPSHOT</spark.version>
|
<spark.version>4.0.0-SNAPSHOT</spark.version>
|
||||||
<antlr4.version>4.13.1</antlr4.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>
|
<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>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user