wenxiangchao
3 天以前 b544d5cccd76735e034c8055918a50927b437474
refs
用户 wenxiangchao <wenxiangchao@ihengxin.com.cn>
星期二, 十一月 10, 2026 08:29 +0800
提交者 wenxiangchao <wenxiangchao@ihengxin.com.cn>
星期二, 十一月 10, 2026 08:29 +0800
提交b544d5cccd76735e034c8055918a50927b437474
目录 6dc9c12e90e11813d7a59e17276b062b10fd7818 目录 | zip | gz
parent 559890c482f5973f06aafdfec9550fee5ba3c7f2 查看 | 对比
fix: 维护模式重复进入失败与按钮灰死 + Broker 并发验证用例

调试会话生命周期修复:
- DebugSessionManager.CloseSession 不再删除 _sessionOwnerTokens 缓存
令牌 TokenId 每次 new 都是新 GUID,删除后再次进入维护会创建新令牌,
导致 LayeredResourceManager.FindGrant 落空、旧租约永不释放、
arb.db 卡 Phase=Active 使第二次进入维护永久失败
- DeviceDebugTab.CloseSessionSilently 关闭后重新 OpenSession(ReadOnly)
并刷新按钮状态,修复退出维护后"进入维护控制"按钮变灰不可点击

运行环境修复:
- IntegrationTest.TryStartDeviceBroker 增加进程存在性检查
多实例各自拉起 DeviceBroker 会争抢同一命名管道与 arb.db,
使 Broker 物理驱动连接失败,报"设备 CAN-003 未连接,请先 CONNECT"

测试:
- BrokerE2ETests 新增 5 个并发与生命周期用例:
双客户端并发发送经 SessionGate 串行化、双 Production 租约竞争返回
ConflictHeld、租约 Acquire→Send→Release→再 Acquire 完整生命周期、
单客户端 5 次快速发送与 20 任务并发压力
- 全量单测 56/56 通过
4个文件已修改
205 ■■■■■ 已修改文件
Plugin.DeviceDebug/DeviceDebugTab.xaml.cs 5 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
Plugin.DeviceDebug/Model/DebugSessionManager.cs 6 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
Plugin.IntegrationTest/MainWindow.xaml.cs 7 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
tests/Aging.MvpTests/BrokerE2ETests.cs 187 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史