This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-spi-extensions.git
The following commit(s) were added to refs/heads/master by this push:
new cb02a63 feature: support kryo 5.3.0 (#142)
cb02a63 is described below
commit cb02a63a8dff79d4929025fda082079a485d524d
Author: CrazyLionLi <[email protected]>
AuthorDate: Sun Oct 9 09:03:53 2022 +0800
feature: support kryo 5.3.0 (#142)
* feature: support kryo 5.3.0
* fix 修复 循环引用被默认关闭问题
* update 增加 dubbo-extensions-dependencies-bom 覆盖全局依赖版本
---
dubbo-extensions-dependencies-bom/pom.xml | 4 ++--
.../common/serialize/kryo/utils/AbstractKryoFactory.java | 9 ++++-----
.../dubbo/common/serialize/kryo/utils/PooledKryoFactory.java | 12 ++----------
.../common/serialize/kryo/utils/ThreadLocalKryoFactory.java | 7 +------
.../dubbo-serialization-kryo-test/pom.xml | 9 +++++++++
5 files changed, 18 insertions(+), 23 deletions(-)
diff --git a/dubbo-extensions-dependencies-bom/pom.xml
b/dubbo-extensions-dependencies-bom/pom.xml
index eb50dac..207ec3e 100644
--- a/dubbo-extensions-dependencies-bom/pom.xml
+++ b/dubbo-extensions-dependencies-bom/pom.xml
@@ -112,8 +112,8 @@
<fastjson_version>1.2.83</fastjson_version>
<fst_version>2.48-jdk-6</fst_version>
<gson_version>2.8.9</gson_version>
- <kryo_version>4.0.2</kryo_version>
- <kryo_serializers_version>0.42</kryo_serializers_version>
+ <kryo_version>5.3.0</kryo_version>
+ <kryo_serializers_version>0.45</kryo_serializers_version>
<msgpack_version>0.8.22</msgpack_version>
<protostuff_version>1.5.9</protostuff_version>
<mina_version>1.1.7</mina_version>
diff --git
a/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java
b/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java
index 62422fc..54e0db4 100644
---
a/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java
+++
b/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java
@@ -16,12 +16,12 @@
*/
package org.apache.dubbo.common.serialize.kryo.utils;
+import com.esotericsoftware.kryo.util.Pool;
import org.apache.dubbo.common.serialize.kryo.CompatibleKryo;
import org.apache.dubbo.common.serialize.support.SerializableClassRegistry;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.Serializer;
-import com.esotericsoftware.kryo.pool.KryoFactory;
import com.esotericsoftware.kryo.serializers.DefaultSerializers;
import com.esotericsoftware.kryo.serializers.JavaSerializer;
import de.javakaffee.kryoserializers.ArraysAsListSerializer;
@@ -57,7 +57,7 @@ import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
-public abstract class AbstractKryoFactory implements KryoFactory {
+public abstract class AbstractKryoFactory extends Pool<Kryo> {
private final Set<Class> registrations = new LinkedHashSet<Class>();
@@ -66,7 +66,7 @@ public abstract class AbstractKryoFactory implements
KryoFactory {
private volatile boolean kryoCreated;
public AbstractKryoFactory() {
-
+ super(true, true);
}
/**
@@ -90,8 +90,7 @@ public abstract class AbstractKryoFactory implements
KryoFactory {
Kryo kryo = new CompatibleKryo();
- // TODO
-// kryo.setReferences(false);
+ kryo.setReferences(true);
kryo.setRegistrationRequired(registrationRequired);
kryo.addDefaultSerializer(Throwable.class, new JavaSerializer());
diff --git
a/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/PooledKryoFactory.java
b/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/PooledKryoFactory.java
index d9102e1..42dd7f2 100644
---
a/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/PooledKryoFactory.java
+++
b/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/PooledKryoFactory.java
@@ -17,24 +17,16 @@
package org.apache.dubbo.common.serialize.kryo.utils;
import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.pool.KryoPool;
public class PooledKryoFactory extends AbstractKryoFactory {
- private KryoPool pool;
-
- public PooledKryoFactory() {
- // Build pool with SoftReferences enabled (optional)
- pool = new KryoPool.Builder(this).softReferences().build();
- }
-
@Override
public Kryo getKryo() {
- return pool.borrow();
+ return this.obtain();
}
@Override
public void returnKryo(Kryo kryo) {
- pool.release(kryo);
+ this.free(kryo);
}
}
diff --git
a/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java
b/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java
index d3599ec..de4b35d 100644
---
a/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java
+++
b/dubbo-serialization-extensions/dubbo-serialization-kryo/src/main/java/org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java
@@ -20,12 +20,7 @@ import com.esotericsoftware.kryo.Kryo;
public class ThreadLocalKryoFactory extends AbstractKryoFactory {
- private final ThreadLocal<Kryo> holder = new ThreadLocal<Kryo>() {
- @Override
- protected Kryo initialValue() {
- return create();
- }
- };
+ private final ThreadLocal<Kryo> holder =
ThreadLocal.withInitial(this::create);
@Override
public void returnKryo(Kryo kryo) {
diff --git
a/test/scenarios/scenarios-dubbo-serialization/dubbo-serialization-kryo-test/pom.xml
b/test/scenarios/scenarios-dubbo-serialization/dubbo-serialization-kryo-test/pom.xml
index 101a411..b0fb19e 100644
---
a/test/scenarios/scenarios-dubbo-serialization/dubbo-serialization-kryo-test/pom.xml
+++
b/test/scenarios/scenarios-dubbo-serialization/dubbo-serialization-kryo-test/pom.xml
@@ -32,6 +32,7 @@
<dubbo.version>3.0.4</dubbo.version>
<junit.version>4.12</junit.version>
<spring.version>4.3.16.RELEASE</spring.version>
+ <dubbo.extensions.version>1.0.3-SNAPSHOT</dubbo.extensions.version>
<dubbo.serialization.version>1.0.1-SNAPSHOT</dubbo.serialization.version>
<maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
</properties>
@@ -46,6 +47,14 @@
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.dubbo.extensions</groupId>
+ <artifactId>dubbo-extensions-dependencies-bom</artifactId>
+ <version>${dubbo.extensions.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-bom</artifactId>