Skip to content

Commit 7ac4a67

Browse files
committed
Merge remote-tracking branch 'origin/master' into feature/saga
# Conflicts: # README_ZH.md # go.mod # go.sum # goimports.sh # pkg/client/client.go # pkg/client/config.go # pkg/remoting/getty/rpc_client.go # pkg/remoting/loadbalance/loadbalance.go # pkg/remoting/loadbalance/random_loadbalance_test.go # pkg/remoting/loadbalance/round_robin_loadbalance_test.go # pkg/remoting/loadbalance/xid_loadbalance_test.go # pkg/rm/rm_remoting.go # pkg/tm/global_transaction.go # pkg/util/errors/code.go
2 parents 1503f5f + b818a65 commit 7ac4a67

File tree

474 files changed

+32874
-2513
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

474 files changed

+32874
-2513
lines changed

.asf.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ github:
3737
required_approving_review_count: 1
3838
notifications:
3939
40-
issues: dev@seata.apache.org
41-
pullrequests: dev@seata.apache.org
40+
issues: notifications@seata.apache.org
41+
pullrequests: notifications@seata.apache.org
4242
discussions: [email protected]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"question": "模块路径与依赖版本如何统一?",
3+
"why": "go.mod/goimports.sh 冲突直接影响构建与格式化,需决定以 master 的 seata.apache.org 为准并补充 saga 所需依赖。",
4+
"evidence": [
5+
"go.mod(HEAD)模块名为 github.com/seata/seata-go,依赖 dubbo-getty v1.4.10、arana parser v0.2.5、grpc v1.57.0 等;含 koanf v1.4.4、cel-go、etcd 未配置。",
6+
"go.mod(master)模块名 seata.apache.org/seata-go,依赖 dubbo-getty v1.5.0、arana parser v0.2.17、grpc v1.56.3、etcd v3.5.6、koanf v1.5.0 等。",
7+
"goimports.sh(HEAD)使用 -local github.com/seata/seata-go,安装 [email protected];master 使用 -local seata.apache.org/seata-go,未固定版本。"
8+
],
9+
"direction": "采用 master 模块路径与依赖基线,补齐 feature/saga 引入的额外依赖并重新 tidy/goimports 设置。"
10+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"question": "remoting 初始化采用哪个实现,如何兼容 Saga/TCC?",
3+
"why": "client.Init 冲突点在于调用 InitRpcClient(feature/saga)或 InitGetty(master),且 Saga/TCC 初始化参数不同,影响所有事务模式的连接建立。",
4+
"evidence": [
5+
"pkg/client/client.go(HEAD)initRemoting 使用 getty.InitRpcClient,随后 rm.InitRm + integration.Init + tcc.InitTCC() + saga.InitSaga()。",
6+
"pkg/client/client.go(master)initRemoting 调用 getty.InitGetty,InitRmClient 中 tcc.InitTCC(cfg.TCCConfig.FenceConfig) 未包含 Saga 初始化。",
7+
"pkg/remoting/getty/rpc_client.go 仅存在于 feature/saga,master 已删除,取而代之的是 getty_init.go + session_manager.go 初始化。",
8+
"SessionManager 实现负载均衡与心跳,依赖 config.InitConfig(seataConfig) 与 loadbalance.Select。"
9+
],
10+
"direction": "以 master 的 InitGetty/SessionManager 作为基础,保留 Saga 初始化与 TCC FenceConfig 参数,删除废弃 rpc_client 调用,并确保 remoting 配置仍传递 LoadBalanceType 等信息。"
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"question": "错误码及 RM/TM 错误处理采用何种合并策略?",
3+
"why": "BranchReport 返回值处理、超时提交/回滚逻辑和错误码枚举不一致,直接影响事务状态判断和重试行为。",
4+
"evidence": [
5+
"pkg/rm/rm_remoting.go(HEAD)BranchReport 对 BranchTransactionNotExist 不视为错误,使用 serrors.SeataError 包装;master 仅返回 errors.New(res.Msg)。",
6+
"pkg/tm/global_transaction.go(master)Commit 若检测超时会转向 Rollback,并在重试循环中检查 err||bf.Err();feature/saga 缺少超时判断,重试错误只看 bf.Err()。",
7+
"pkg/util/errors/code.go(feature/saga)包含 Saga/状态机相关枚举、AsyncStartDisabled 等;master 新增 SQLUndoDirtyError 但缺少前述枚举。"
8+
],
9+
"direction": "保留对 BranchTransactionNotExist 的容错与 Saga/TCC 相关错误码,同时合并 master 的 SQLUndoDirtyError 与超时回滚逻辑,确保重试错误判断完整。",
10+
"cost_notice": "第3次深挖,评估成本:合并需同步下游调用与测试覆盖。"
11+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"known": [
3+
"PR #1019 以 master 为基线,feature/saga 分支需与 seata.apache.org 模块路径和新版 remoting 对齐。",
4+
"master 已移除 rpc_client.go,使用 InitGetty+SessionManager;loadbalance 新增一致性哈希和最少活跃算法;TCC 需要 FenceConfig。",
5+
"feature/saga 引入 SagaConfig、InitSaga,RM BranchReport 忽略 BranchTransactionNotExist,错误码包含 Saga 相关枚举。"
6+
],
7+
"questions": [
8+
{
9+
"q": "模块路径与依赖版本如何统一?是否保留 master 的 seata.apache.org 路径并补充 saga 所需依赖?",
10+
"priority": "high"
11+
},
12+
{
13+
"q": "remoting 初始化应采用 master 的 InitGetty 还是保留旧的 InitRpcClient?Saga/TCC 初始化如何适配新 remoting?",
14+
"priority": "high"
15+
},
16+
{
17+
"q": "错误码与 RM/TM 错误处理应该合并哪一套逻辑(Saga 额外枚举 vs SQLUndoDirtyError、超时回滚逻辑)?",
18+
"priority": "high"
19+
},
20+
{
21+
"q": "README_ZH.md 应保留还是删除?若保留需如何合并更新内容?",
22+
"priority": "medium"
23+
}
24+
]
25+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"location": [
3+
"依赖与模块:go.mod/go.sum、goimports.sh(模块路径 github.com/seata/seata-go vs seata.apache.org/seata-go;依赖版本差异 dubbo-getty、arana parser、grpc、etcd 等)",
4+
"客户端初始化:pkg/client/client.go、pkg/client/config.go(saga 配置与 InitSaga,TCC fence 配置、remoting 初始化方式差异)",
5+
"网络与负载均衡:pkg/remoting/getty/rpc_client.go(master 已移除,使用 InitGetty+SessionManager)、pkg/remoting/loadbalance/*(新增 Consistent/LeastActive 选择与 IPv6 测试)",
6+
"事务交互:pkg/rm/rm_remoting.go(BranchReport 错误处理差异)、pkg/tm/global_transaction.go(提交超时回滚逻辑、重试错误处理差异)",
7+
"错误码:pkg/util/errors/code.go(Saga 相关枚举 vs SQLUndoDirtyError)",
8+
"文档:README_ZH.md(master 更新但 feature/saga 删除)"
9+
],
10+
"current_state": {
11+
"feature_saga": [
12+
"模块路径为 github.com/seata/seata-go,客户端 remoting 调用 InitRpcClient;ClientConfig 额外包含 SagaConfig,InitRmClient 会 InitSaga。",
13+
"RM 报告错误会忽略 BranchTransactionNotExist,TM 提交/回滚重试结束后仅根据 bf.Err() 包装。",
14+
"错误码包含 Saga 状态机和异步启动等枚举。"
15+
],
16+
"master": [
17+
"模块路径 seata.apache.org/seata-go,remoting 初始化改为 InitGetty + SessionManager(rpc_client 文件删除),TCC.InitTCC 需要 FenceConfig。",
18+
"负载均衡 Select 支持 ConsistentHash 与 LeastActive,xid 测试覆盖 IPv6;goimports.sh 使用 seata.apache.org 前缀。",
19+
"TM Commit/Rollback 先检测超时,重试错误判断基于 err 或 bf.Err;错误码新增 SQLUndoDirtyError。",
20+
"README_ZH.md 仍保留并更新。"
21+
],
22+
"similar_cases": [
23+
"pkg/remoting/loadbalance/consistent_hash_loadbalance.go 和 least_active_loadbalance.go 已在仓库存在,可作为新算法实现基线。",
24+
"remoting/getty/getty_init.go 与 session_manager.go 展示 master remoting 初始化流程。"
25+
]
26+
},
27+
"tech_stack": [
28+
"语言/版本:Go 1.20",
29+
"框架/依赖:dubbo-go、dubbo-getty、gost、grpc、koanf、prometheus、etcd client(master)、saga/tcc 模块",
30+
"工具:goimports、license-eye、make unit-test/go test ./pkg/..."
31+
],
32+
"tests": [
33+
"单测集中于改动模块:pkg/remoting/loadbalance/*_test.go、pkg/client/client_test.go、pkg/rm/rm_api_test.go、pkg/tm/global_transaction_test.go、pkg/util/errors/*",
34+
"常用命令:go test ./pkg/... 或 make unit-test;冲突文件所在包均有 *_test.go 可验证。"
35+
],
36+
"observation": {
37+
"issues": [
38+
"模块路径和 goimports 前缀不一致会导致依赖解析与格式化失败,需要统一为 seata.apache.org。",
39+
"remoting 初始化接口变更(InitRpcClient -> InitGetty),需要在 client.go 等处对齐并清理废弃文件。",
40+
"配置结构需兼容 Saga 与新的 TCC FenceConfig;错误码需合并两侧新增项。",
41+
"README_ZH.md 在 feature/saga 被删除但 master 更新,需决定保留并合并。"
42+
],
43+
"gaps": [
44+
"需确定 Saga 功能在新 remoting 初始化下的兼容需求。",
45+
"需要明确 error code 顺序/兼容性是否有额外约束。"
46+
]
47+
}
48+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"checklist": {
3+
"interface_contract": {
4+
"status": true,
5+
"note": "冲突点均为已有函数/配置(InitPath/InitRmClient、BranchReport/Commit/Rollback、loadbalance.Select)输入输出明确,依赖配置字段已知。"
6+
},
7+
"tech_choices_understood": {
8+
"status": true,
9+
"note": "master 统一使用 seata.apache.org 模块与 InitGetty/SessionManager;feature/saga 额外引入 Saga 支持与旧 RpcClient。优先采用 master 标准化方案并补齐 Saga 能力。"
10+
},
11+
"risks_identified": {
12+
"status": true,
13+
"items": [
14+
"模块路径/依赖未统一可能导致编译失败或 goimports 失效",
15+
"InitGetty 替换旧 RpcClient 时 Saga/TCC 初始化可能遗漏导致功能回退",
16+
"错误码合并不当会影响事务状态判断与重试行为",
17+
"README_ZH 取舍需避免文档缺失"
18+
]
19+
},
20+
"validation_plan": {
21+
"status": true,
22+
"note": "完成合并后运行 go mod tidy、针对改动包的 go test(pkg/client、pkg/remoting/loadbalance、pkg/rm、pkg/tm、pkg/util),必要时扩展/修复单测。"
23+
}
24+
},
25+
"conclusion": "信息充分,可进入任务规划与实现阶段。"
26+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## Operations Log
2+
- 2025-12-06: Fetch PR #1019 (feature/saga) from origin,尝试合并 origin/master 暴露冲突文件(go.mod、client.go、loadbalance 等)。
3+
- 2025-12-06: 完成阶段0上下文收集,生成 structured-request、context-scan、关键疑问与充分性检查文件。
4+
- 2025-12-06: 统一模块路径为 seata.apache.org/seata-go,合并 go.mod/go.sum 与 goimports.sh,并批量替换旧导入路径。
5+
- 2025-12-06: 对齐客户端 remoting 初始化为 InitGetty,保留 Saga/TCC 初始化;删除废弃 rpc_client;合并负载均衡新算法与测试、RM/TM 错误处理及错误码。
6+
- 2025-12-06: 运行 gofmt 与 go test(排除 pkg/tm 时通过;包含 pkg/tm 时报 gomonkey 在 macOS 上 SIGBUS),记录测试结果与风险。
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"task": "解决 GitHub PR #1019(feature/saga -> master)的合并冲突",
3+
"goal": [
4+
"同步 master 最新变更到 feature/saga 并清理所有冲突文件",
5+
"保持 Saga 模式功能与现有 AT/TCC 能力同时可用",
6+
"统一模块路径与依赖版本,确保构建与测试可通过"
7+
],
8+
"scope": {
9+
"branches": {
10+
"source": "feature/saga",
11+
"target": "master"
12+
},
13+
"conflict_files": [
14+
"README_ZH.md",
15+
"go.mod",
16+
"go.sum",
17+
"goimports.sh",
18+
"pkg/client/client.go",
19+
"pkg/client/config.go",
20+
"pkg/remoting/getty/rpc_client.go",
21+
"pkg/remoting/loadbalance/*.go",
22+
"pkg/rm/rm_remoting.go",
23+
"pkg/tm/global_transaction.go",
24+
"pkg/util/errors/code.go"
25+
]
26+
},
27+
"constraints": [
28+
"优先复用 master 分支的标准化方案(模块路径 seata.apache.org/seata-go 等)",
29+
"禁止新增自研组件,复用现有框架与工具",
30+
"移除或避免任何新增的安全性设计",
31+
"工作文件放置于 .codex/pr-1019-conflict/ 下"
32+
],
33+
"acceptance": [
34+
"所有冲突标记清理完毕,代码能正常编译",
35+
"关键功能(客户端初始化、负载均衡、RM/TM 交互、错误码)逻辑一致且完整",
36+
"相关测试用例更新并可执行通过"
37+
],
38+
"validation": [
39+
"运行针对改动模块的 go test(如 pkg/client、pkg/remoting/loadbalance、pkg/rm、pkg/tm、pkg/util)",
40+
"必要时运行 go mod tidy 确认依赖一致"
41+
]
42+
}

.codex/pr-1019-conflict/testing.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## 测试记录(2025-12-06)
2+
3+
- 命令:`go test ./pkg/client/... ./pkg/remoting/loadbalance/... ./pkg/rm/... ./pkg/tm/... ./pkg/util/...`
4+
- 结果:失败。`pkg/tm` 在 macOS ARM64 下 gomonkey 打补丁触发 SIGBUS(`TestTransactionExecutorBegin`),同时 `SQLUndoDirtyError` 枚举偏移导致断言失败(已修正)。
5+
- 命令:`go test ./pkg/util/errors`
6+
- 结果:通过,验证错误码顺序调整后恢复。
7+
- 命令:`go test ./pkg/client/... ./pkg/remoting/loadbalance/... ./pkg/rm/... ./pkg/util/...`
8+
- 结果:通过(仅 ld_classic 库链接警告),覆盖改动相关包(不含 `pkg/tm` 以规避 gomonkey 崩溃)。

0 commit comments

Comments
 (0)