Skip to content

fix(update): synchronize auto-update installation with session creation - #377

Open
MakerFlyFly wants to merge 1 commit into
Tencent:mainfrom
MakerFlyFly:fix/bsk-m-004-update-session-race
Open

MakerFlyFly wants to merge 1 commit into
Tencent:mainfrom
MakerFlyFly:fix/bsk-m-004-update-session-race

Conversation

@MakerFlyFly

Copy link
Copy Markdown
Contributor

自动更新在下载前读取空闲会话快照,下载期间创建的会话无法阻止后续安装。本次将下载校验与安装分开,在下载完成后将“会话为空并取得安装资格”与会话 ID 预留同步;有会话时延期,安装已开始时新建请求收到明确的重试提示。

修改

  • 保留下载前的快速检查;下载期间允许会话启动,安装前的原子检查也计入等待扩展确认的会话占位。
  • 用自动释放的准入守卫覆盖安装、自检、启动替代进程与旧服务关闭;失败时在回滚处理完成后恢复会话准入,不在网络下载或安装期间持有注册表互斥锁。
  • 新建请求在发送扩展创建指令前返回现有 protocol_error 和重试提示,不新增 RPC 方法或错误码。
  • 下载后延期记录为 skipped / active_sessions,保持在下载阶段,不触发失败退避;同步更新 doctor 说明。
  • 新增 7 项测试,覆盖受控下载、会话与安装的两种顺序、错误码映射、延期重试以及更新失败后的会话恢复。手动更新沿用原有行为,无新增依赖。

验证

  • 新增下载竞态回归:修复前失败,观察到 stage=install;修复后通过。
  • Rust 库测试:414 通过、2 项原有忽略;自动更新策略集成测试:1 通过。
  • 隔离 Chrome 复核:释放下载前后均有 1 个活动会话,更新记录为 download / skipped / active_sessions,可执行文件字节未变,原会话仍可执行 tool.tab_list。
  • 本机选定的 6 项更新生命周期测试:4 通过、2 失败。两项失败均在取消/回滚断言之后的独立后台启动环节遇到 Windows Job Object breakaway 拒绝;新增竞态和失败恢复测试均通过。
  • CLI 构建、Rust 格式及 git diff --check 通过。
  • 全仓严格 Clippy 仍因既有 Windows 警告失败;对本次相关库、二进制及更新集成测试放行既有三类诊断后,定向 Clippy 通过。
  • 已尝试仓库独立宿主测试入口,但宿主进程提前退出,未产出报告。完整有效升级交接尚未在本机验证。

Fixes #376

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

自动更新在下载期间出现活动会话后仍进入安装阶段

1 participant