This is an automated email from the ASF dual-hosted git repository.

simhadrig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new d9191dfaf4f HIVE-28915: Use com.esotericsoftware.kryo:kryo5 (#5778)
d9191dfaf4f is described below

commit d9191dfaf4f589ae2d6e80040b0279da7cb9baf7
Author: Vlad Rozov <[email protected]>
AuthorDate: Fri Apr 25 08:48:03 2025 -0700

    HIVE-28915: Use com.esotericsoftware.kryo:kryo5 (#5778)
---
 iceberg/pom.xml                                    |  1 -
 itests/qtest-accumulo/pom.xml                      |  4 +-
 itests/qtest-kudu/pom.xml                          |  4 +-
 pom.xml                                            |  9 +----
 ql/pom.xml                                         | 12 ++----
 .../hadoop/hive/ql/exec/MapJoinOperator.java       |  2 +-
 .../hive/ql/exec/SerializationUtilities.java       | 43 +++++++++++-----------
 .../org/apache/hadoop/hive/ql/exec/Utilities.java  |  2 +-
 .../exec/persistence/HybridHashTableContainer.java |  8 ++--
 .../ql/exec/persistence/KeyValueContainer.java     |  4 +-
 .../hive/ql/exec/persistence/ObjectContainer.java  |  6 +--
 .../hadoop/hive/ql/io/orc/ExternalCache.java       |  4 +-
 .../hive/ql/io/sarg/ConvertAstToSearchArg.java     |  6 +--
 .../hadoop/hive/ql/stats/fs/FSStatsAggregator.java |  4 +-
 .../hadoop/hive/ql/stats/fs/FSStatsPublisher.java  |  4 +-
 .../hadoop/hive/ql/udf/generic/GenericUDFIn.java   |  2 -
 16 files changed, 51 insertions(+), 64 deletions(-)

diff --git a/iceberg/pom.xml b/iceberg/pom.xml
index 5e7e0ca9677..310da750854 100644
--- a/iceberg/pom.xml
+++ b/iceberg/pom.xml
@@ -30,7 +30,6 @@
     <kryo-shaded.version>4.0.3</kryo-shaded.version>
     <iceberg.mockito-core.version>3.4.4</iceberg.mockito-core.version>
     <iceberg.avro.version>1.11.4</iceberg.avro.version>
-    <iceberg.kryo.version>5.5.0</iceberg.kryo.version>
     
<iceberg.checkstyle.plugin.version>3.5.0</iceberg.checkstyle.plugin.version>
     <spotless.maven.plugin.version>2.5.0</spotless.maven.plugin.version>
     
<google.errorprone.javac.version>9+181-r4173-1</google.errorprone.javac.version>
diff --git a/itests/qtest-accumulo/pom.xml b/itests/qtest-accumulo/pom.xml
index 9460a1ecc1a..b98ec5c934b 100644
--- a/itests/qtest-accumulo/pom.xml
+++ b/itests/qtest-accumulo/pom.xml
@@ -117,8 +117,8 @@
     <!-- Declare hive-exec dependencies that were shaded in instead of
        being listed as dependencies -->
     <dependency>
-      <groupId>com.esotericsoftware</groupId>
-      <artifactId>kryo</artifactId>
+      <groupId>com.esotericsoftware.kryo</groupId>
+      <artifactId>kryo5</artifactId>
       <version>${kryo.version}</version>
       <scope>test</scope>
     </dependency>
diff --git a/itests/qtest-kudu/pom.xml b/itests/qtest-kudu/pom.xml
index d008f282c6b..c1727b98007 100644
--- a/itests/qtest-kudu/pom.xml
+++ b/itests/qtest-kudu/pom.xml
@@ -118,8 +118,8 @@
     <!-- Declare hive-exec dependencies that were shaded in instead of
        being listed as dependencies -->
     <dependency>
-      <groupId>com.esotericsoftware</groupId>
-      <artifactId>kryo</artifactId>
+      <groupId>com.esotericsoftware.kryo</groupId>
+      <artifactId>kryo5</artifactId>
       <version>${kryo.version}</version>
       <scope>test</scope>
     </dependency>
diff --git a/pom.xml b/pom.xml
index cbf8f7aaca7..ecf70972b30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -292,15 +292,10 @@
         </exclusions>
       </dependency>
       <dependency>
-        <groupId>com.esotericsoftware</groupId>
-        <artifactId>kryo</artifactId>
+        <groupId>com.esotericsoftware.kryo</groupId>
+        <artifactId>kryo5</artifactId>
         <version>${kryo.version}</version>
       </dependency>
-      <dependency>
-        <groupId>com.esotericsoftware</groupId>
-        <artifactId>reflectasm</artifactId>
-        <version>${reflectasm.version}</version>
-      </dependency>
       <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
diff --git a/ql/pom.xml b/ql/pom.xml
index b667168a3b9..39daed65636 100644
--- a/ql/pom.xml
+++ b/ql/pom.xml
@@ -169,12 +169,8 @@
       <artifactId>aws-secretsmanager-caching-java</artifactId>
     </dependency>
     <dependency>
-      <groupId>com.esotericsoftware</groupId>
-      <artifactId>kryo</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.esotericsoftware</groupId>
-      <artifactId>reflectasm</artifactId>
+      <groupId>com.esotericsoftware.kryo</groupId>
+      <artifactId>kryo5</artifactId>
     </dependency>
     <dependency>
       <groupId>com.google.protobuf</groupId>
@@ -1062,9 +1058,7 @@
                   
<include>org.apache.hive:hive-standalone-metastore-common</include>
                   
<include>org.apache.hive:hive-standalone-metastore-server</include>
                   <include>org.apache.hive:hive-service-rpc</include>
-                  <include>com.esotericsoftware:kryo</include>
-                  <include>com.esotericsoftware:reflectasm</include>
-                  <include>com.esotericsoftware:minlog</include>
+                  <include>com.esotericsoftware.kryo:kryo5</include>
                   <include>org.objenesis:objenesis</include>
                   <include>org.apache.parquet:parquet-hadoop-bundle</include>
                   <include>org.apache.thrift:libthrift</include>
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
index 57b1786483c..a6f51b1609e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
@@ -77,7 +77,7 @@
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.esotericsoftware.kryo.KryoException;
+import com.esotericsoftware.kryo.kryo5.KryoException;
 import com.google.common.base.Preconditions;
 
 /**
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/SerializationUtilities.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/SerializationUtilities.java
index 8c95f5d5b2b..d83a94fd27f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/SerializationUtilities.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/SerializationUtilities.java
@@ -58,18 +58,19 @@
 import org.apache.hadoop.hive.ql.plan.PartitionDesc;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.serde2.Serializer;
-import org.objenesis.strategy.StdInstantiatorStrategy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.util.DefaultInstantiatorStrategy;
-import com.esotericsoftware.kryo.Registration;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
-import com.esotericsoftware.kryo.util.Pool;
+import com.esotericsoftware.kryo.kryo5.Kryo;
+import com.esotericsoftware.kryo.kryo5.util.DefaultInstantiatorStrategy;
+import 
com.esotericsoftware.kryo.kryo5.objenesis.strategy.StdInstantiatorStrategy;
+import com.esotericsoftware.kryo.kryo5.Registration;
+import com.esotericsoftware.kryo.kryo5.io.Input;
+import com.esotericsoftware.kryo.kryo5.io.Output;
+import com.esotericsoftware.kryo.kryo5.util.Pool;
+import com.esotericsoftware.kryo.kryo5.serializers.FieldSerializer;
+
 import com.google.common.annotations.VisibleForTesting;
-import com.esotericsoftware.kryo.serializers.FieldSerializer;
 
 /**
  * Utilities related to serialization and deserialization.
@@ -130,11 +131,11 @@ private static class KryoWithHooks extends Kryo 
implements Configurable {
     private long classCounter = 0;
 
     @SuppressWarnings({"unchecked", "rawtypes"})
-    private static final class SerializerWithHook extends 
com.esotericsoftware.kryo.Serializer {
-      private final com.esotericsoftware.kryo.Serializer old;
+    private static final class SerializerWithHook extends 
com.esotericsoftware.kryo.kryo5.Serializer {
+      private final com.esotericsoftware.kryo.kryo5.Serializer old;
       private final Hook hook;
 
-      private SerializerWithHook(com.esotericsoftware.kryo.Serializer old, 
Hook hook) {
+      private SerializerWithHook(com.esotericsoftware.kryo.kryo5.Serializer 
old, Hook hook) {
         this.old = old;
         this.hook = hook;
       }
@@ -201,7 +202,7 @@ public <T> T readObjectOrNull(Input input, Class<T> type) {
 
     @Override
     public <T> T readObjectOrNull(Input input, Class<T> type,
-        @SuppressWarnings("rawtypes") com.esotericsoftware.kryo.Serializer 
serializer) {
+        @SuppressWarnings("rawtypes") 
com.esotericsoftware.kryo.kryo5.Serializer serializer) {
       Hook hook = ponderGlobalPreReadHook(type);
       T result = super.readObjectOrNull(input, type, serializer);
       return ponderGlobalPostReadHook(hook, result);
@@ -216,7 +217,7 @@ public <T> T readObject(Input input, Class<T> type) {
 
     @Override
     public <T> T readObject(Input input, Class<T> type,
-        @SuppressWarnings("rawtypes") com.esotericsoftware.kryo.Serializer 
serializer) {
+        @SuppressWarnings("rawtypes") 
com.esotericsoftware.kryo.kryo5.Serializer serializer) {
       Hook hook = ponderGlobalPreReadHook(type);
       T result = super.readObject(input, type, serializer);
       return ponderGlobalPostReadHook(hook, result);
@@ -234,7 +235,7 @@ public Configuration getConf() {
     }
 
     @Override
-    public com.esotericsoftware.kryo.Registration getRegistration(Class type) {
+    public com.esotericsoftware.kryo.kryo5.Registration getRegistration(Class 
type) {
       // If PartitionExpressionForMetastore performs deserialization at remote 
HMS,
       // the first class encountered during deserialization must be an 
ExprNodeDesc,
       // throw exception to avoid potential security problem if it is not.
@@ -339,7 +340,7 @@ private static void removeField(Kryo kryo, Class type, 
String fieldName) {
    * Kryo serializer for timestamp.
    */
   private static class TimestampSerializer extends
-      com.esotericsoftware.kryo.Serializer<Timestamp> {
+      com.esotericsoftware.kryo.kryo5.Serializer<Timestamp> {
 
     @Override
     public Timestamp read(Kryo kryo, Input input, Class<? extends Timestamp> 
clazz) {
@@ -355,7 +356,7 @@ public void write(Kryo kryo, Output output, Timestamp ts) {
     }
   }
 
-  private static class TimestampTZSerializer extends 
com.esotericsoftware.kryo.Serializer<TimestampTZ> {
+  private static class TimestampTZSerializer extends 
com.esotericsoftware.kryo.kryo5.Serializer<TimestampTZ> {
 
     @Override
     public void write(Kryo kryo, Output output, TimestampTZ object) {
@@ -378,7 +379,7 @@ public TimestampTZ read(Kryo kryo, Input input, Class<? 
extends TimestampTZ> typ
    * java.sql.Date and java.util.Date while deserializing
    */
   private static class SqlDateSerializer extends
-      com.esotericsoftware.kryo.Serializer<java.sql.Date> {
+      com.esotericsoftware.kryo.kryo5.Serializer<java.sql.Date> {
 
     @Override
     public java.sql.Date read(Kryo kryo, Input input, Class<? extends 
java.sql.Date> clazz) {
@@ -391,7 +392,7 @@ public void write(Kryo kryo, Output output, java.sql.Date 
sqlDate) {
     }
   }
 
-  private static class PathSerializer extends 
com.esotericsoftware.kryo.Serializer<Path> {
+  private static class PathSerializer extends 
com.esotericsoftware.kryo.kryo5.Serializer<Path> {
 
     @Override
     public void write(Kryo kryo, Output output, Path path) {
@@ -408,7 +409,7 @@ public Path read(Kryo kryo, Input input, Class<? extends 
Path> type) {
    * Supports sublists created via {@link ArrayList#subList(int, int)} since 
java7 and {@link LinkedList#subList(int, int)} since java9 (openjdk).
    * This is from kryo-serializers package.
    */
-  private static class ArrayListSubListSerializer extends 
com.esotericsoftware.kryo.Serializer<List<?>> {
+  private static class ArrayListSubListSerializer extends 
com.esotericsoftware.kryo.kryo5.Serializer<List<?>> {
 
     private Field _parentField;
     private Field _parentOffsetField;
@@ -499,7 +500,7 @@ public List<?> copy(final Kryo kryo, final List<?> 
original) {
    * This is from kryo-serializers package. Added explicitly to avoid 
classpath issues.
    */
   private static class ArraysAsListSerializer
-      extends com.esotericsoftware.kryo.Serializer<List<?>> {
+      extends com.esotericsoftware.kryo.kryo5.Serializer<List<?>> {
 
     private Field _arrayField;
 
@@ -583,7 +584,7 @@ private Class<?> getPrimitiveWrapperClass(final Class<?> c) 
{
    * superclass declares most of its fields transient.
    */
   private static class CopyOnFirstWritePropertiesSerializer extends
-      com.esotericsoftware.kryo.serializers.MapSerializer<Map> {
+      com.esotericsoftware.kryo.kryo5.serializers.MapSerializer<Map> {
 
     @Override
     public void write(Kryo kryo, Output output, Map map) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
index 95167c3d383..e417e13f712 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
@@ -209,7 +209,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.kryo5.Kryo;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HybridHashTableContainer.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HybridHashTableContainer.java
index 1a45d5d6dcf..53bf42dafbb 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HybridHashTableContainer.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HybridHashTableContainer.java
@@ -63,7 +63,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.kryo5.Kryo;
 
 /**
  * Hash table container that can have many partitions -- each partition has 
its own hashmap,
@@ -179,7 +179,7 @@ public BytesBytesMultiHashMap getHashMapFromDisk(int 
rowCount)
         return new BytesBytesMultiHashMap(rowCount, loadFactor, wbSize, -1);
       } else {
         InputStream inputStream = Files.newInputStream(hashMapLocalPath);
-        com.esotericsoftware.kryo.io.Input input = new 
com.esotericsoftware.kryo.io.Input(inputStream);
+        com.esotericsoftware.kryo.kryo5.io.Input input = new 
com.esotericsoftware.kryo.kryo5.io.Input(inputStream);
         Kryo kryo = SerializationUtilities.borrowKryo();
         BytesBytesMultiHashMap restoredHashMap = null;
         try {
@@ -656,8 +656,8 @@ public long spillPartition(int partitionId) throws 
IOException {
         spillLocalDirs, "partition-" + partitionId + "-", null, false);
     OutputStream outputStream = new FileOutputStream(file, false);
 
-    com.esotericsoftware.kryo.io.Output output =
-        new com.esotericsoftware.kryo.io.Output(outputStream);
+    com.esotericsoftware.kryo.kryo5.io.Output output =
+        new com.esotericsoftware.kryo.kryo5.io.Output(outputStream);
     Kryo kryo = SerializationUtilities.borrowKryo();
     try {
       LOG.info("Trying to spill hash partition " + partitionId + " ...");
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/KeyValueContainer.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/KeyValueContainer.java
index 4861ed8717f..785f7e90ee2 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/KeyValueContainer.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/KeyValueContainer.java
@@ -17,8 +17,8 @@
  */
 package org.apache.hadoop.hive.ql.exec.persistence;
 
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
+import com.esotericsoftware.kryo.kryo5.io.Input;
+import com.esotericsoftware.kryo.kryo5.io.Output;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import org.slf4j.Logger;
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/ObjectContainer.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/ObjectContainer.java
index 1a848a1d2e0..387925a4b3a 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/ObjectContainer.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/ObjectContainer.java
@@ -29,9 +29,9 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
+import com.esotericsoftware.kryo.kryo5.Kryo;
+import com.esotericsoftware.kryo.kryo5.io.Input;
+import com.esotericsoftware.kryo.kryo5.io.Output;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ExternalCache.java 
b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ExternalCache.java
index bae96b1b67b..32d1e66e32a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ExternalCache.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ExternalCache.java
@@ -47,8 +47,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Output;
+import com.esotericsoftware.kryo.kryo5.Kryo;
+import com.esotericsoftware.kryo.kryo5.io.Output;
 import com.google.common.collect.Lists;
 
 /** Metastore-based footer cache storing serialized footers. Also has a local 
cache. */
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java 
b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
index 5bbe6b3f619..6fb38b75766 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
@@ -59,9 +59,9 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
+import com.esotericsoftware.kryo.kryo5.Kryo;
+import com.esotericsoftware.kryo.kryo5.io.Input;
+import com.esotericsoftware.kryo.kryo5.io.Output;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsAggregator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsAggregator.java
index 93bb1d8dda2..32c438a3efb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsAggregator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsAggregator.java
@@ -43,8 +43,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.kryo5.Kryo;
+import com.esotericsoftware.kryo.kryo5.io.Input;
 
 public class FSStatsAggregator implements StatsAggregator {
   private final Logger LOG = 
LoggerFactory.getLogger(this.getClass().getName());
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsPublisher.java 
b/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsPublisher.java
index 67ab51d81ef..b6d02eea276 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsPublisher.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/fs/FSStatsPublisher.java
@@ -34,8 +34,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Output;
+import com.esotericsoftware.kryo.kryo5.Kryo;
+import com.esotericsoftware.kryo.kryo5.io.Output;
 
 public class FSStatsPublisher implements StatsPublisher {
 
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIn.java 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIn.java
index fcfb9c7cb04..3933ab569d0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIn.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIn.java
@@ -38,8 +38,6 @@
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
 import org.apache.hadoop.io.BooleanWritable;
 
-import com.esotericsoftware.minlog.Log;
-
 /**
  * GenericUDFIn
  *

Reply via email to