mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-11 03:36:37 +08:00
3.4 KiB
3.4 KiB
Session Context
Session ID: ses_34dfda207ffeiBV2rCgJW708ip Commit Message: 配置下发也没兼容,请全量检查一下,哪些功能需要一起改造
Prompts
Prompt 1
211 任务的没有完全完成1. 选择IP后诊断还会诊断默认IP 2. 选择隧道出口IP后,入口还是会链接默认IP,没有链接选择的IP 请分析后制定修复计划
Prompt 2
配置下发也没兼容,请全量检查一下,哪些功能需要一起改造
Summary
你提得很对,我按“配置下发全链路”重新过了一遍(只读分析)。结论是:需要一起改造的不是一个点,而是“诊断链路 + 重部署链路 + 回归测试链路”。
目前状态可以分成三类:
-
已兼容(创建/更新时下发)
- 隧道创建/更新时,
connectIp已进入运行时下发选择逻辑(selectTunnelDialHost)。 - 本地/联邦 runtime apply 都会吃
target.ConnectIP(前提是 state 里有值)。 - 参考:
go-backend/internal/http/handler/mutations.go:2588,go-backend/internal/http/handler/mutations.go:2348
- 隧道创建/更新时,
-
未兼容(你反馈的核心问题)
- 诊断链路未传
connectIp,导致总走默认IP。 - 参考:
go-backend/internal/http/handler/control_plane.go:75,go-backend/internal/http/handler/control_plane.go:1102
- 诊断链路未传
-
半兼容(配置重建时丢字段)
- 重部署时从 DB 重建 runtime state,没把
ConnectIP带回去,所以 redeploy 后会回退默认IP。 - 参考:
go-backend/internal/http/handler/mutations.go:883,go-backend/internal/http/handler/mutations.go:897
- 重部署时从 DB 重建 runtime state,没把
需要一起改造的功能范围(建议一次性做完)
-
诊断(非流式 + 流式)- 隧道诊断、转发诊断都要改(共用
prepare*Diagnosis+appendChainHopDiagnosis)。 - 流式 start 预览项也要改,否则 UI 一开始仍显示默认IP。
- 目标文件:
go-backend/internal/http/handler/control_plane.go,go-backend/internal/http/handler/diagnosis_stream.go
- 隧道诊断、转发诊断都要改(共用
-
配置下发(重部署路径)- 单条重部署、批量重部署都依赖
reconstructTunnelState,必须补ConnectIP回填。 - 目标文件:
go-backend/internal/http/handler/mutations.go
- 单条重部署、批量重部署都依赖
-
联邦节点运行时下发一致性- 逻辑本身已支持
ConnectIP,但受上一步 state 丢字段影响;修复后自动恢复一致。 - 重点验证:remote middle hop
ApplyRole.Targets的 Host 选取。
- 逻辑本身已支持
-
回归测试- 新增诊断用例:选了
connectIp后,targetIp必须是选中值(tunnel/forward + stream start/item)。 - 新增重部署用例:redeploy 后仍使用
connectIp,不回退默认IP。 - 目标文件建议:
go-backend/tests/contract/diagnosis_contract_test.go,补 handler 级或 contract 级 redeploy 用例。
- 新增诊断用例:选了
实施计划(修复包)
- 修
diagnosis调用链:所有resolveChainProbeTarget调用传入workItem.toNode.ConnectIP。 - 修
reconstructTunnelState:出口节点和中继节点都回填ConnectIP。 - 补测试:覆盖“诊断用选中IP”“重部署不丢IP”“connectIp为空仍走默认”的三组场景。
- 联调验证:创建/更新、诊断、单重部署、批量重部署、联邦节点场景各跑一遍。
我建议按这个范围做成一次完整修复(避免只修诊断后你再次遇到“重部署又回退”的问题)。
如果你同意,我下一步就按这个“全量改造范围”进入实施。