2.1.0 是 Seata 进入 Apache 基金会的第一个 Release Version。此次发布将 io.seata 包名更改为 org.apache.seata。除了按原有的 Roadmap 技术演进外,2.1.0 进行了大量兼容性工作,实现了 API、数据和协议的兼容。用户无需修改原有的 API 和配置,即可实现到 Apache 版本的平滑升级。
用户登记
欢迎已使用用户在此链接登记,便于我们更好的针对业务场景优化:
https://github.com/apache/incubator-seata/issues/1246
发布概览
功能特性方面,2.1.0 中对大家期待已久的 RocketMQ 消息事务集成做了支持;Raft 集群支持了 TC 多节点之间的元数据同步功能;Saga 事务模式与 Spring 框架解耦。
兼容性方面,针对原 io.seata 的 package 中的 API 做了全面的兼容处理,以保证从低版本升级至 Apache 版本上无需要修改任何代码。
另外,本次发布共通过了 110 多组 JDK(8/11/17/21) + Spring 版本+ OS(x86/arm64) + Druid 主要版本的严格交叉兼容测试,可放心平滑升级。
本次发布共修改文件数:4211,累计提交代码 +181157 −152729,合并 PR 数183 个,共 35 人参与代码 commit。
2.1.0 milestone:
https://github.com/apache/incubator-seata/milestone/34
seata-server:
https://dist.apache.org/repos/dist/release/incubator/seata/2.1.0/apache-seata-2.1.0-incubating-bin.tar.gz
docker image:
https://hub.docker.com/repository/docker/apache/seata-server
部署指南:
https://seata.apache.org/zh-cn/docs/ops/deploy-guide-beginner
升级指南:
https://seata.apache.org/zh-cn/docs/ops/upgrade
版本的主要更新如下
feature:
-
[#6370] Saga 模式与 Spring 框架解耦和重构。
-
[#6205] 提供 Mock Server 支持
-
[#6169] Saga 状态机在线设计器前端框架重构
-
[#6230] 支持 RocketMQ 消息事务
-
[#6326] 支持 Raft 集群节点间的元数据同步
-
[#6415] 支持 Saga 设计器的自动布局
bugfix:
-
[#6090] 修复 TCC 切面异常处理过程,不对内部调用异常做包装处理,直接向外抛出
-
[#6075] 修复镜像 SQL 对于 on update 列没有添加表别名的问题
-
[#6086] 修复 Oracle alias 解析异常
-
[#6085] 修复 JDK 9+ 版本编译后,引入后 ByteBuffer#flip NoSuchMethodError 的问题
-
[#6101] 修复 Apache Dubbo 3.x 版本中, 消费者端不能生成 TCC 代理的问题
-
[#6077] 修复表存在复合主键索引导致无法回滚问题
-
[#6121] 修复回滚分支事务时没有按照时间排序的问题
-
[#6182] 修复在 CI 中 guava-32.0.0-jre.jar zip 文件为空的问题
-
[#6196] 修复 asf 配置格式错误的问题
-
[#6143] 修复优雅停机问题
-
[#6204] 修复错误配置问题
-
[#6248] 修复 JDBC resultSet, statement, connection 关闭顺序
-
[#6261] AT 事务事务模式支持 PostgreSQL 集群模式 URI
-
[#6256] 修复使用 seata-all SDK 中 Raft-discovery 模块不能读取 registry.conf 的配置的问题
-
[#6232] 修复 MySQL 的 json 类型下出现Cannot create a JSON value from a string with CHARACTER SET 'binary'问题
-
[#6278] 修复 ProtocolV1SerializerTest 失败问题
-
[#6324] 修复 Parse protocol file failed 问题
-
[#6331] 修复 TCC 嵌套事务不能同时添加 TwoPhaseBusinessAction 和GlobalTransactional 两个注解的问题
-
[#6354] 修复动态升降级不能正常工作问题
-
[#6363] 修复 docker 镜像中的已知问题
-
[#6372] 修复初始化 SQL 文件postgresql.sql 索引名称冲突问题
-
[#6380] 修复 SQLServer 检查UNDO_LOG表是否存在时的SQL异常
-
[#6385] 修复 Role.Participant不执行 hook 但会清理的问题
-
[#6465] 修复 Saga 事务模式的context replay丢失start问题
-
[#6469] 修复在 SQLServer 数据库下[lock_table]数据表的插入操作sql中存在的错误
-
[#6496] 修复 XA 事务模式执行长时间SQL未完成回滚释放连接问题
-
[#6493] 修复 SQLServer SQL报错问题
-
[#6497] 修复自动装配时的 TCC 配置类
-
[#6554] 修复序列化器不固定使用对应配置序列化器的问题
-
[#6555] 修复 businessActionContext 对 io seata 包的不兼容问题
-
[#6553] 修复执行完 'ServiceTask' 后无法应用任何评估器的问题
-
[#6575] 修复io.seata ActionInterceptorHandler 兼容问题
optimize:
-
[#6031] 添加 undo_log 表的存在性校验
-
[#6089] 修改RaftServerFactory语义并删除不必要的单例构建
-
[#4473] RM appdata大小限制
-
[#6071] 添加git信息到JAR包中
-
[#6042] 增加raft模式鉴权机制
-
[#6091] 优化raft鉴权时获取tc地址的方式
-
[#6098] 优化acquireMetadata方法的重试逻辑
-
[#6034] 使用helm图表进行部署时使用命令行中的命名空间
-
[#6116] 移除 lgtm.com
-
[#6164] redis 注册中心推空保护优化
-
[#6174] 增加 ASF 基础配置
-
[#6148] 支持 Nacos ram role 鉴权方式
-
[#6181] 更新贡献指引文档
-
[#6179] 移除 @author 信息
-
[#6176] 更新源文件header信息
-
[#6178] 更新Apache License头信息
-
[#6186] 更新README.md(更新邮件列表和一些生态访问链接)
-
[#6184] 更新NOTICE文件
-
[#6192] 移除无用文件
-
[#6194] 修复 asf.yaml 解析错误问题
-
[#5399] 分支注册只在RM端
-
[#6154] 控制台日志优化 "kubectl logs -f"
-
[#6116] 重写NettyPoolKey的hashcode和equals,修复了channel对象池重复构建问题
-
[#6195] 更新 change log 中的 seata url 为 apache/incubator-seata
-
[#6200] 去除required_status_checks检查
-
[#6201] 恢复required_status_checks但去除context校验
-
[#6218] 移除Seata-Docker链接
-
[#6227] 校验pk中不含逗号
-
[#6004] 优化RM,TM连接server快速失败
-
[#6243] 优化控制台页眉中的链接
-
[#6238] 文件合规优化
-
[#6239] 更新security policy,disclaimer 和 notice 文件
-
[#6245] file模式下,在配置中心的spring配置改变时,使应用程序中的配置生效
-
[#6247] 优化 asf.yml 配置
-
[#6259] 修改全局会话大小超过配置的错误消息
-
[#6264] 修复 jib-maven-plugin 编译失败问题
-
[#6246] 在maven打包的同时打包前端资源
-
[#6268] 更新console模块 npmjs 过时依赖
-
[#6271] 统一git信息
-
[#6265] 优化在 arm64 上构建前端失败的问题
-
[#6267] 增加 Server 反序列化校验
-
[#6275] 优化.asf.yaml文件中的label格式
-
[#6291] 优化seata-server在idea等开发工具运行时,控制台未输出完整日志的问题
-
[#6283] 增加兼容模块支持 io.seata APIs
-
[#6294] 拆分前端资源打包流程到单独的profile
-
[#6285] 优化控台中时间查询条件不准确的问题
-
[#6297] 修复
maven-pmd-plugin
相关的问题 -
[#6298] 重命名包名为 org.apache.seata
-
[#6302] 增加 io.seata shade 打包方案
-
[#6306] 替换一些URL 至 org/apache/seata
-
[#6304] 禁用 OSSRH 发布工作流
-
[#6310] seata-server兼容io.seata包
-
[#6301] 升级console前端依赖及支持的nodejs版本
-
[#6301] 添加saga相关的io.seata兼容性API
-
[#6313] console展示版本号
-
[#6315] 兼容低版本的SPI
-
[#6327] 兼容 integration.http 和 integration.http.Jakarta API
-
[#6328] 兼容 integration.grpc API
-
[#6330] 去除 mariadb API
-
[#6329] 添加 saga 子组件的 io.seata 兼容性 API
-
[#6254] 优化Hessian 序列化
-
[#6343] 兼容tm 模块和rm-datasource模块
-
[#6345] 兼容tcc模块
-
[#6332] 分发包中移除 mysql 依赖
-
[#6343] 兼容 TM 模块和 rm-datasource 模块
-
[#6349] 迁移 dockerhub 仓库
-
[#6357] 优化协议编解码的序列化/反序列化
-
[#6356] 去除健康检查页面的鉴权
-
[#6360] 优化部分链接 401 的问题
-
[#6350] 移除 enableDegrade 配置
-
[#6366] 优化globaltransaction向下兼容性
-
[#6369] 优化 arm64 ci
-
[#6386] 在
ConfigurationCache
类中,将byte-buddy
替换为JDK代理 -
[#6391] 禁止重复注册TCC资源
-
[#6393] 元数据同步前判断版本,并增加重试功能
-
[#6387] 优化tcc使用兼容
-
[#6403] 优化 Config 兼容模块
-
[#6402] 优化rm-datasource向下兼容
-
[#6419] 优化integration-tx-api向下兼容
-
[#6427] 支持spi、saga、spring模块的向下兼容
-
[#6442] 阐明 if
-
[#6487] 修复错误包名以及单词
-
[#6458] 增加MAC地址null值检查
-
[#6516] 优化代码格式
-
[#6429] 移除重复注释
-
[#6405] 修复 kotlin 编译失败
-
[#6412] 优化 core 兼容模块
-
[#6518] 优化 ConfigurationCache 代理方法
-
[#6529] 优化发布插件
-
[#6548] 升级byte-buddy版本至1.14.15
-
[#6539] 增加组件 license
-
[#6540] 排除 com.google.guava:listenablefuture 依赖
-
[#6549] 支持macos arm架构单测
-
[#6558] 移除 mysql-connector-java 依赖
-
[#6570] 添加 notice 文件
-
[#6578] registry.conf 补充raft配置
-
[#6576] 移除 oracle 数据类型序列化扩展
-
[#6583] 优化默认编译不依赖 Git 环境
-
[#6585] 优化 compatible 模块的配置
-
[#6597] 从源码中移除 binary 包
-
[#6605] 订正 license 和 notice
security:
-
[#6069] 升级Guava依赖版本,修复安全漏洞
-
[#6144] 升级Nacos依赖版本至1.4.6
-
[#6145] 升级 jettison依赖版本至1.5.4
-
[#6147] 升级 kafka-clients依赖至3.6.1
-
[#6339] 升级 spring mvc 和 tomcat.embed 依赖
-
[#6340] 升级和整理依赖
-
[#6362] 升级 Spring 相关的依赖
-
[#6375] 覆盖 console 前端安全漏洞
test:
-
[#6081] 添加 test-os.yml 用于测试seata在各种操作系统下的运行情况
-
[#6125] TransactionTemplateTest单测unbind xid
-
[#6157] 增加common模块单测覆盖率
-
[#6250] 增加seata-core模块单测覆盖率
-
[#6325] 修复mock-server相关测试用例
-
[#6430] 增加 common 模块单元测试覆盖率
-
[#6456] 调整动态配置监听测试用例
-
[#6466] 支持redis的集成测试
-
[#6484] 修复FileConfigurationTest和MockServerTest失败
-
[#6545] 修复 TestConfigCustomSPI 兼容性测试失败
-
[#6560] 修复 mockserver Test
-
[#6565] 修复 testCompensationStateMachine 与mockServer单测冲突
refactor:
-
[#6280] 使用diagram-js重构Saga设计器
-
[#6269] 统一Seata异常规范
-
[#6420] 优化配置缓存
非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。
-
slievrly
-
ptyin
-
laywin
-
imcmai
-
DroidEye2ONGU
-
funky-eyes
-
Bughue
-
wangliang181230
-
ggbocoder
-
leezongjie
-
l81893521
-
baiyangtx
-
lightClouds917
-
xingfudeshi
-
PleaseGiveMeTheCoke
-
sunrui1225
-
PeppaO
-
AlbumenJ
-
dreamskyvision
-
jsbxyyx
-
liuqiufeng
-
saberyjs
-
gggyd123
-
jonasHanhan
-
Code-breaker1998
-
yixia
-
MikhailNavitski
-
deung
-
tanyaofei
-
xjlgod
-
TakeActionNow2019
-
sunxunle
-
bageyang
-
YeonCheolGit
同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。
社区任务
社区发布了大量的新手任务,欢迎认领。
https://github.com/apache/incubator-seata/issues?q=is%3Aissue+is%3Aopen+label%3A%22task%3A+help-wanted%22