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
*