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>

Reply via email to