-
Notifications
You must be signed in to change notification settings - Fork 8.8k
20240817
参会人:清铭,陈健斌,张嘉伟,吴江坷,汪忠祥,刘秋枫,蒋俊敏等
会议时间:2024/08/17
下次会议时间:2024/8/31 ReleaseManager: 陈健斌
如有时间变更,再另行通知,请订阅邮件列表:[email protected]、[email protected]
会议规范:
- 每次开会时,如果完成掉的任务,会上就直接移除掉该部分内容。
- 一些比较大的功能点/设计,需要在讨论前形成技术文档,避免在大家不了解背景的情况下进行讨论。
- 同时做到事后可追溯 不开没有结论的会。哪怕“方案取消”或“下次再议”,也是结论的一种。
-
seata主项目目前存在18个安全漏洞,seata sample 剩余59个安全漏洞,2个外链问题;漏洞官网3个;@清铭
https://github.com/apache/incubator-seata/discussions/6233
20240706:无进展
20240720:无进展,剩余漏洞放在2.2版本进行修复。
20240803:针对raft集群模式中使用jdk反序列化时没有进行白名单校验,存在REC问题进行了修复,暂不同步至2.1版本,后续有相关安全漏洞修复需要按照apache 规范流程来,避免在标题等地方暴露其漏洞相关信息
漏洞报告:https://github.com/apache/incubator-seata/wiki/security%E2%80%90report
20240817: 目前还有8个漏洞,基本上是前端的漏洞,升级依赖不一定能解决,需要替换相关依赖。
-
合规相关问题 @刘秋枫- 控制台前端侧license
如果解决不了,源码侧去除控制台后发布通过maven打包方式引入前端依赖,而不是直接放入源码中
20240803:已完成前端合规处理 -
Apache Logo:Seata的Logo加上Apache元素。@清铭
20240706: 需要有设计同学帮忙设计
20240720: 等待设计师抽空
20240803
20240817:等排期
-
开源之夏议题,4个议题,具体可以参考[email protected];
20240803:@亦夏 相关议题同步到wiki ,将相关设计同步到dev邮件组
-
ALC hangzhou活动 在详细设计阶段;
20240803:后续会继续开展相关活动
-
Apache Con 7.26周五健斌,7月28周日 祥坤20240803:已完成,相关pr发到公众号和官网博客 @祥琨 @健斌 -
蚂蚁外滩大会(上海)
20240803:待沟通
20240817: 10-15 9月7号周六上午,参与seata开源分享 @健斌
-
官网访问流量治理 @刘秋枫 还是搜不到
- nacos和higress 已改版,后续dubbo,之后seata也进行改版。
- 智能答疑,参考nacos/higress
20240803:交由阿里内部人员统一处理
20240817:sentinel改完后再改seata,需要几个月后才能完成,涉及合规相关问题,尽量小改。
-
官网关键词优化(长期):前两周暂未处理,后面与提升页面体验分一起弄
20240803:暂无进展
20240817:暂无进展
-
提升页面体验分;todo(放二期;
一期先关注合规 done; -
文档
博客问题:@刘秋枫 官网文档目前是整体一篇,需要治理下;
-
市面上与Seata相关的文章混乱问题,博客转载到csdn,文章挂官网地址;@汪忠祥 目前转载30篇左右,有1w左右的阅读量;
20240803:已转载完成,目前有5W+阅读量,后续需要长期对博客进行更新
20240817:后续有更新再同步
-
2.1 apache rc5投票 (第一个版本比较慢,不要着急)
20240803:node版本与glibc不兼容,其余已知合规问题已经全部解决 @秋枫
20240817:目前投票人数较少,需要ipmc member参与帮忙投票 @清铭
-
2.0与2.1的新feature的需要一些博客pr,发布在官网,公众号等渠道
- rocketmq集成 @嘉伟
20240803:暂无进展
20240817:暂无进展
- api重构 设计文档发布到官网,然后再编写一篇博客 @瑞姗
20240803:
- namingserver @俊敏
20240803:等pr合并完成后再进行
20240817:pr已合并,但还有一些问题还不是最终版,等最终版完成后撰写。
- seata-k8s @祥琨
20240817:明后天左右完成
- seata默认序列化优化 @亦夏
- 多版本协议 @明华
20240817:done
- Seata最佳实践博客 @健斌
20240803:预计下周完成
20240817:预计下周完成
-
单测/变更覆盖率目标@汪忠祥
目标覆盖率: 70%
配置注册通过mockserver,增加覆盖度该模块整体覆盖度
- nacos @清铭
- apollo @清铭
redis- etcd
当前pr进展:
-
test: Improve the test case coverage of [sqlparser] module to 70% #6608 开发完成,review完成;覆盖率是下降的;模块覆盖不全,还可以继续完善,一个模块可以分多次;20240720:已合并,剩余覆盖度已留言让其另外提交pr20240803:暂未回复 -
fix(6502): supplement the store unit test cases in the [core] module. #6524 只搞了四个文件,需要继续联系;@忠祥
20240803: 先联系是否有时间继续提升覆盖度,再考虑合并
20240817:暂无时间投入
-
test:Increase [integration-tx-api] module test case coverage #6533 开发完成,review中;20240803:已完成合并 -
Test: increase spring autoconfigure module unit test coverage #6198 开发完成,reviw中修改中,嘉伟
20240803:先解决代码冲突
20240817:done
20240706:覆盖率下降的,是因为机器人有问题。拉本地看下覆盖率,没问题就merge;健斌;
问题:
- 覆盖率计算不准确问题(https://app.codecov.io/gh/apache/incubator-seata/tree/2.x/integration-tx-api%2Fsrc%2Fmain%2Fjava%2Fio%2Fseata%2Fintegration%2Ftx%2Fapi%2Fjson)
- https://github.com/apache/incubator-seata/pull/6417 这个pr就加了打印版本,未添加测试用例,就增加了0.61%的覆盖率?
- 无assert,无效单测,工作量较大,需要逐步治理;
-
集测回归能力建设 @张嘉伟 @熊靖浏
目标:完整、自动化、持续集成,能够完成功能、稳定性、用户体验、安全上能力的验证
进度:
old: 集测框架,方案已确认,并进行了初步演示:先按照skywalking-e2e编写的方式,按照一个个sample去编写e2e的集成测试,本地测试需要安装go依赖和docker。pr准备中;
升级到2.1,针对sample
20240720:完成AT方面的集测,近期会提交相关pr
20240803:AT-API已完成集测,待review @嘉伟 @靖浏
20240817:进度50%
-
兼容性测试@王良
目标:兼容性测试需要包含:jdk、mysql-driver,arch等,确保在各个环境下稳定运行
整体依赖集成测试的进度
20240817:先完成mysql-driver的兼容性测试
-
目标:建立seata性能基线、能够获取到当前系统/服务的性能以及变化,并且进行图形化输出;支持火焰图、trace、基准比对,异常预警等能力;
-
进度:
已完成:提交第一版pr,支持微基准、profiler能力
后续:压力、吞吐量测试需要new出不同的seataClient,依赖api改造
20240803:暂时无进展
优化undolog 前后镜像批量插入过大 pr 6483 @健斌 @嘉伟 review中
20240803:已合并
- naming server 和 client对接相关的pr
20240720:server module review中,这周会做一个整体回归测试,预计下周末前merge
20240803:server pr已经合并,client侧由于前两个pr进行了修改,目前已解决冲突,目前测试下来还有些bug需要修复。
20240817:已经完成合并,剩下一些bug修复。
5个测试内容:
namingserver集群测试通过
单集群多seata-server节点通过
namingserver宕机测试通过
seata-server宕机测试通过
切流量场景目前有bug
存储模式测试:file,db通过,redis还未测试
遗留问题:
- namingserver 目前接口没有鉴权 @依霖
- namingserver changeVGroup 请求server,但是namingserver没有seata-server的token,暂定对相关接口不鉴权
- TM,RM -> TC registryRequest鉴权 @俊敏 @依霖
20240720:待namingserver pr合并后推进,统一交由summercode同学进行梳理,后续拉会沟通。
20240817:
-
日志优化 总体进度:20%不到(@清铭 PR已提交,能满足国际化的要求,打出的堆栈都有对应的errorCode,错误信息里会显示一个链接链到FAQ页面中。)
根据定制的规范对其他的 exception 的格式做改造,待分配任务;待认领;
20240720:按模块先进行拆分,发布任务。
20240803:raft侧序列化白名单未命中时会通过seata exception进行输出日志,目前问题是输出的code可能无法与faq侧一样是自增的。
faq保留,另外提供一个错误码解决方案的文档模块- faq不保存
- faq梳理成按错误的大类型来分类,比如config相关异常是0001-0099,其他的是xxx-xxx,不必直接自增这种方式。
-
seata-go 代码的错误码、日志输出等规范,待分配任务;链接的官方的 FAQ 上;和 seata java 保持一致,等 java 完成再开始;
20240803:目前已与1.5.2版本对齐,samples需要更新版本。
-
事务模式松耦合调整,拆分scanner 待评估 健斌
20240803:暂时先不做
-
tcc防悬挂时偶发间隙锁导致死锁问题 @烈烽
20240803:新pr下周提交
20240817:目前transactional 读取后,注册分支时携带到tc侧,二阶段的时候读取使用
-
seata序列化性能优化 @亦夏20240803:pr已提交,等待review20240817:done -
TM/RM 快速失败只有在节点全部不可用才失败 @正涛
20240803:待提交pr
-
相同数据源中进行跨库操作,由于没有携带库名,导致获取table meta异常
关联issue:get table meta error · Issue #6685 · apache/incubator-seata (github.com)
20240803: 准备修复该问题 @树杰
20240817:已提交pr,待review @嘉伟
-
提供相关查询全局锁的api
关联issue: Issues · apache/incubator-seata (github.com)
20240803:等后续开放全局锁给用户作为分布式锁使用时再考虑该需求
-
seata-go 1.5.2 功能对齐 https://github.com/apache/incubator-seata/pulls?q=is%3Apr+label%3Amultilingual+is%3Aclosed
-
tcc 多数据源支持方案沟通 @烈烽
20240817:已讨论4种方案1.增加before after hook 2.调整本地事务切面至springfencehandle之前 3.两者结合 4.数据源代理方式做防悬挂,不强依赖spring
结论:先考虑方案1,before异常server重试,afterhook出现异常,分支事务不重试只打印日志提示。
-
启动apache/seata-server:2.1.0.jre17镜像时,无法加载mysql驱动 · Issue #6760 · apache/incubator-seata (github.com) 校验driver是否存在的classloader和加载driver的classloader不同,导致用户使用mysql时无发生启动 @云龙
20240817: mysql driver还是放在lib/jdbc下,要区分开不合规的依赖路径,是否去调mysql多版本加载的driver后面再讨论下。
-
client对raft节点健康检查
- 目前raft的discovery模块并没有针对metadata中的节点列表做健康检查,导致如果有follower宕机有几率会请求至宕机节点
- 如果用户使用的是lb地址做init address,当所有tc节点同时宕机时,不会复用这个lb节点重新进行发现服务
故需要将initaddress与metadata的nodes地址进行结合出一个地址列表,针对地址列表进行健康检查
-
raft集群nat场景支持
- 跨机房调用时,不同机房网段不同,通过nat转换后再不同的机房同一个tc的ip是不同的
- k8s场景,k8spodip无法被集群外直连,需要映射出一组可用的ip供外部使用
20240817: 前期先把server元数据,如权重等信息暴露到注册中心中供客户端使用,再讨论该问题
-
client多连接支持优化lb直连场景体验
- 无注册中心下,由于通过file读取lb地址后,针对一个地址只创建单一连接,导致tm,rm可能通过lb负载到了不同的tc节点,导致tm决议时,rm无法提交/回滚事务
- 单一连接可能存在连接异常,无限重传包等问题
20240817: xid->解析出server真实地址,然后rm侧建立连接,问题先暂缓,后续再评审。
-
resource id + application name唯一标识/Server端寻址逻辑确认 resource id可能重复,导致下发问题,保证唯一,最终方案暂定,重新拉会议讨论 ,优先级较低 @亦夏
20240803: client侧已经针对相同resourceid做了禁止处理,其余问题后续再跟进
-
token自动续期方案选型讨论完成、PR待提交 @清铭20240803:交由木合(summercode)进行 -
批量删除undolog @明华 (依赖多版本协议支持及协议协商)
-
tm/rm 注册失败需要返回原因 @明华(依赖多版本协议支持及协议协商)
20240817:序列化少了一个字段,server抛异常时序列化时没有写回去。高版本上需要解决该问题
-
达梦数据库:schema只能填一个(已向达梦技术人员确认)王良20240720:达梦没有答复 -
jackson依赖问题 是强依赖 scope-provided 修改成compile依赖, jackson高版本禁用autotype,saga如何适配 @亦夏 方案设计中
20240803:使用Jackson 白名单方式,文档上要体现出来
-
TM/RM未init,rm注册,不再忽略,直接异常;改动影响比较大,暂定2.2版本去做; @亦夏 方案设计中
20240803:等修复单测后开始review
-
global_table积压问题 @付德蓉 下周一单独拉会 目前的现状是,committing状态在定时器扫描每次捞1000条数据的情况下,过滤出超过130s的事务,进行单条更新删除操作,在高并发5000r/s下,前者更新删除操作太缓慢,导致global_table数据太多了。 相关issue: https://github.com/apache/incubator-seata/issues/6615 单个节点,global_table累积多 上周结论: 方案1.数据分片,简单但是运维复杂,可靠性低, 方案2.使用多个锁. 缺点:global_table需要增加字段 20240720
进展: 1.先解决单节点的问题,使用多线程的方式 2. 先不往复杂分布式的情况考虑
1.rollbacking 50线程5000 query limit,业务线程也是50 3000tps,iftop 网卡,top -H,包括数据库40c,40c 6c 600%,xmx 2g
-
单点服务限流 @靖浏
20240720:已经提交sip至邮件组,目前限流组件选定为bucket4j
20240803:下次周会前提交pr,遗留问题,因为bucket4j内部使用了concmap 有synchronized关键字,所以可能与虚拟线程的pr有冲突,可能考虑自实现令牌桶/滑动窗口。
20240817:bucket4j内没有使用synchronized,所以不影响虚拟线程,可继续完成该任务。目前由于限流后client会报错,但是不方便追踪,故通过生成雪花id+client相关信息放入异常中,可通过server日志和client日志进行排查是否被限流,再增加一个metrics以便排查。
遗漏问题:server与nacos结合时,metrics消失 @靖浏
-
oracle 因为sql的table name不同导致锁被其事务占用AT回滚失败问题@树杰20240720:已合并,遗留问题:tc侧是否要适配,以便高低版本都能解决这个情况,但是目前如何解决tc无法获取真实的table meta是个问题。 -
https://github.com/apache/incubator-seata/issues/6561, 被删除的数据其中一列是一个唯一索引,然后回滚的时候要插回来这个数据,但是唯一索引被其他行给用了,导致回滚失败
结论:提交pr,这种情况认定向tc返回无法回滚的状态,将事务置为不可恢复回滚失败,人工介入
20240803:已提交review意见,暂未答复。
-
https://github.com/apache/incubator-seata/pull/6629 针对只读的xa事务,二阶段是无法提交的,导致全局事务失败,该pr实现增加了一个XA_RDONLY的状态,使tc提交或回滚时忽略该分支。但是由于仅对oracle的xa做了处理,故该方案还需要商讨
结论:
- 通过originalConnection.isReadOnly(); 提前判断,如果是只读就不注册分支及xa的任何操作。
- 通过prepare的result来判断是否是只读xa分支,tc进行跳过(pr方案,但是要放开只针对oracle的限制)
20240803:第二点已完成合并,1需要单独开发,第一点由 @树杰 进行跟进
- 达梦driver无法获取on update的列,导致回滚时会漏回滚该列 @华栋
20240803:
- faq增加达梦使用说明,建议用户自行sql维护更新时间戳的列
- 达梦数据库时only_care_update_column默认关闭,这样就会查询所有列的值作为前镜像,可保证回滚时被成功回滚。
20240817: 考虑将only_care_update_column自动化配置,通过数据类型等方式来指定,而不是让用户自己配置。
-
apache fury 序列化集成 @树杰
20240803:首先要保证其已经没有license问题,其次再进行集成,必须要开启白名单,下次周会同步调研结果
20240817: 放入2.3中,测试报告届时提交到pr中
-
jdk19+ 虚拟线程适配
- 去除非单例模式的synchronized关键字,改为ReentrantLock Prevent virtual thread pinned · Issue #6724 · apache/incubator-seata (github.com)
- 梳理seata client+server 中所有线程池,将线程池统一使用一个threadpoolfactory构建,以便在不同的java版本上使用不同的线程池,比如高版本可以统一为虚拟线程池
20240803: 进行适配 @忠祥
20240817:预计下周投入人力
-
java独立日志文件输出,不和其他混在一起(现在框架和业务日志混在一起)@尹祥琨 todo
20240720:暂未投入
-
全链路支持gRPC协议
20240720:方案实践下来后,实际上属于类似于dubbo的triple协议,将seata协议转换在http2上。但无法直接兼容grpc协议,目前明俊正在做到在seata http2协议之中兼容grpc协议。
- seata server http2已跑通两阶段测试用例 seata 协议 转 http2
- 直接与grpc原生客户端通信正在测试
20240803:已完成与seata-server 跟 grpc原生客户端通信功能,grpc客户端需使用bi-stream(双向流)模式,下周会拉个进度会,演示http2,与grpc原生客户端通信能力
20240817:已完成对grpc的双向流支持,事务流程已通过,pr已提交,接下来完成server的http协议适配,并去除springmvc相关依赖
遗留问题:考虑seata协议在grpc之上,并且要关注grpc后续升级是否会存在不兼容,要保持协议版本的扩展的兼容。
-
与 Kubernetes 进行集成增强 seata-ctl 的运维能力
20240720:本周已完成文件与k8s部分,日志方面正在进行
-
实现控制台OpenAPI和提升系统安全性
20240720:正在设计方案
20240803:已经完成方案设计,投入开发中
20240817:下周同步进度
-
基于Raft和RocksDB实现配置中心
20240720:正常进行中
20240803:初步功能已经完成,已经达到可演示程度,细节如多租户采用列族进行存储,界面显示为一个大keyvalue拆分成小的显示,实际是大key。
20240817:基本上已完成,下周找时间演示。
主持人改为release manager,直接2个月为一个周期,并且2个月发版一次,本次release manager: @陈健斌
发版规则:
- 大版本计划改为每个版本有一个重点feature,只要这个重点feature完成,就可以考虑发大版本
- 如果没有达到第一点要求,release manager认为将bugfix和optimize的commits梳理后merge到小版本上进行pr提交,测试,验证,然后进行独立的小版本release. 本次2.2剩余问题
里程碑进展:
- namingserver从2.3挪至2.2里程碑,并列为首要目标,并且需要达到基本可用
- polardb-pg @清铭 后续同步进展
- k8s-apiserver 优先级降低
- grpc 预计2.2不上,2个月的发版周期应该来不及,纳入2.3