diff --git a/changes/1.5.0.md b/changes/1.5.0.md index f82b4fdad4f..ae99078c401 100644 --- a/changes/1.5.0.md +++ b/changes/1.5.0.md @@ -82,6 +82,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#4220](https://github.com/seata/seata/pull/4220)] 修复 `zstd-compressor` 模块未合并到 `seata-all` 中的问题,同时修正其包名。另外,补充了 `kotlin-maven-plugin` 的版本号;顺便优化打包配置。 - [[#4222](https://github.com/seata/seata/pull/4222)] 修复字段列表为空时,插入语句无法回滚的问题 - [[#4233](https://github.com/seata/seata/pull/4233)] 修复 lock 和 branch 数据残留问题 + - [[#4276](https://github.com/seata/seata/pull/4276)] 修复 seata-test 单测不运行的问题 ### optimize: @@ -197,6 +198,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [portman](https://github.com/iportman) - [lcmvs](https://github.com/lcmvs) - [pengten](https://github.com/pengten) + - [anselleeyy](https://github.com/anselleeyy) 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。 diff --git a/changes/en-us/1.5.0.md b/changes/en-us/1.5.0.md index 5664e73a6d3..eeb0806d057 100644 --- a/changes/en-us/1.5.0.md +++ b/changes/en-us/1.5.0.md @@ -81,6 +81,7 @@ - [[#4220](https://github.com/seata/seata/pull/4220)] fix some problems with `zstd` compressor and add the version of the `kotlin-maven-plugin` - [[#4222](https://github.com/seata/seata/pull/4222)] fix could not rollback when insert field list is empty - [[#4233](https://github.com/seata/seata/pull/4233)] fix data remanence problems in lock and branch under specific circumstances. + - [[#4276](https://github.com/seata/seata/pull/4276)] fix seata-test module UT not work ### optimize: @@ -196,6 +197,7 @@ - [portman](https://github.com/iportman) - [lcmvs](https://github.com/lcmvs) - [pengten](https://github.com/pengten) + - [anselleeyy](https://github.com/anselleeyy) Also, we receive many valuable issues, questions and advices from our community. Thanks for you all. diff --git a/saga/seata-saga-engine/src/main/java/io/seata/saga/engine/invoker/impl/SpringBeanServiceInvoker.java b/saga/seata-saga-engine/src/main/java/io/seata/saga/engine/invoker/impl/SpringBeanServiceInvoker.java index 38754430ed5..9f4908a8b94 100644 --- a/saga/seata-saga-engine/src/main/java/io/seata/saga/engine/invoker/impl/SpringBeanServiceInvoker.java +++ b/saga/seata-saga-engine/src/main/java/io/seata/saga/engine/invoker/impl/SpringBeanServiceInvoker.java @@ -286,27 +286,23 @@ protected Object invokeMethod(Object serviceBean, Method method, Object... input } } - protected Object toJavaObject(Object value, Class paramType) { + protected Object toJavaObject(Object value, Class paramType) { if (value == null) { return value; } - if (value instanceof Map || value instanceof List) { - return jsonParseToJavaObject(value, paramType); - } else if (paramType.isAssignableFrom(value.getClass()) || isPrimitive(paramType)) { + if (paramType.isAssignableFrom(value.getClass())) { + return value; + } else if (isPrimitive(paramType)) { return value; } else { - return jsonParseToJavaObject(value, paramType); - } - } - - protected Object jsonParseToJavaObject(Object value, Class paramType) { - JsonParser jsonParser = JsonParserFactory.getJsonParser(getSagaJsonParser()); - if (jsonParser == null) { - throw new RuntimeException("Cannot get JsonParser by name : " + getSagaJsonParser()); + JsonParser jsonParser = JsonParserFactory.getJsonParser(getSagaJsonParser()); + if (jsonParser == null) { + throw new RuntimeException("Cannot get JsonParser by name : " + getSagaJsonParser()); + } + String jsonValue = jsonParser.toJsonString(value, true, false); + return jsonParser.parse(jsonValue, paramType, false); } - String jsonValue = jsonParser.toJsonString(value, true, false); - return jsonParser.parse(jsonValue, paramType, false); } protected boolean isPrimitive(Class clazz) { diff --git a/saga/seata-saga-statelang/src/main/java/io/seata/saga/statelang/parser/impl/FastjsonParser.java b/saga/seata-saga-statelang/src/main/java/io/seata/saga/statelang/parser/impl/FastjsonParser.java index 59e8b998d88..b7ccfb35a59 100644 --- a/saga/seata-saga-statelang/src/main/java/io/seata/saga/statelang/parser/impl/FastjsonParser.java +++ b/saga/seata-saga-statelang/src/main/java/io/seata/saga/statelang/parser/impl/FastjsonParser.java @@ -80,7 +80,7 @@ public String toJsonString(Object o, boolean ignoreAutoType, boolean prettyPrint @Override public T parse(String json, Class type, boolean ignoreAutoType) { if (ignoreAutoType) { - return JSON.parseObject(json, type, Feature.DisableSpecialKeyDetect, Feature.OrderedField); + return JSON.parseObject(json, type, Feature.IgnoreAutoType, Feature.OrderedField); } else { return JSON.parseObject(json, type, Feature.SupportAutoType, Feature.OrderedField); diff --git a/test/pom.xml b/test/pom.xml index 49a95b762a8..3faa9ae2267 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -35,7 +35,7 @@ methods true - true + false @@ -59,6 +59,12 @@ ${project.groupId} seata-server ${project.version} + + + io.seata + seata-spring-autoconfigure-core + + ${project.groupId} diff --git a/test/src/test/java/io/seata/core/rpc/netty/TmNettyClientTest.java b/test/src/test/java/io/seata/core/rpc/netty/TmNettyClientTest.java index c38ef420b26..a2ac66f3a2f 100644 --- a/test/src/test/java/io/seata/core/rpc/netty/TmNettyClientTest.java +++ b/test/src/test/java/io/seata/core/rpc/netty/TmNettyClientTest.java @@ -15,6 +15,11 @@ */ package io.seata.core.rpc.netty; +import java.lang.management.ManagementFactory; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + import io.netty.channel.Channel; import io.seata.common.XID; import io.seata.common.util.NetUtil; @@ -24,15 +29,9 @@ import io.seata.saga.engine.db.AbstractServerTest; import io.seata.server.UUIDGenerator; import io.seata.server.coordinator.DefaultCoordinator; +import io.seata.server.session.SessionHolder; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; - -import java.lang.management.ManagementFactory; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; /** * @author slievrly @@ -121,6 +120,7 @@ public void testSendMsgWithResponse() throws Exception { ThreadPoolExecutor workingThreads = initMessageExecutor(); NettyRemotingServer nettyRemotingServer = new NettyRemotingServer(workingThreads); new Thread(() -> { + SessionHolder.init(null); nettyRemotingServer.setHandler(DefaultCoordinator.getInstance(nettyRemotingServer)); // set registry XID.setIpAddress(NetUtil.getLocalIp()); @@ -147,7 +147,7 @@ public void testSendMsgWithResponse() throws Exception { BranchRegisterResponse branchRegisterResponse = (BranchRegisterResponse) tmNettyRemotingClient.sendSyncRequest(request); Assertions.assertNotNull(branchRegisterResponse); Assertions.assertEquals(ResultCode.Failed, branchRegisterResponse.getResultCode()); - Assertions.assertEquals("RuntimeException[SessionManager is NOT init!]", + Assertions.assertEquals("TransactionException[Could not found global transaction xid = 127.0.0.1:8091:1249853, may be has finished.]", branchRegisterResponse.getMsg()); nettyRemotingServer.destroy(); tmNettyRemotingClient.destroy(); diff --git a/test/src/test/resources/file.conf b/test/src/test/resources/file.conf index 3c143f95b53..5454c4dc81c 100644 --- a/test/src/test/resources/file.conf +++ b/test/src/test/resources/file.conf @@ -1,3 +1,36 @@ +transport { + # tcp, unix-domain-socket + type = "TCP" + #NIO, NATIVE + server = "NIO" + #enable heartbeat + heartbeat = true + # the tm client batch send request enable + enableTmClientBatchSendRequest = true + # the rm client batch send request enable + enableRmClientBatchSendRequest = true + #thread factory for netty + threadFactory { + bossThreadPrefix = "NettyBoss" + workerThreadPrefix = "NettyServerNIOWorker" + serverExecutorThread-prefix = "NettyServerBizHandler" + shareBossWorker = false + clientSelectorThreadPrefix = "NettyClientSelector" + clientSelectorThreadSize = 1 + clientWorkerThreadPrefix = "NettyClientWorkerThread" + # netty boss thread size + bossThreadSize = 1 + #auto default pin or 8 + workerThreadSize = "default" + } + shutdown { + # when destroy server, wait seconds + wait = 3 + } + serialization = "seata" + compressor = "none" +} + service { #transaction service group mapping vgroupMapping.default_tx_group = "default"