A staged release reads as live while a newer 5.4 rolling deploy is already live on its node

未关闭 适合新手
#2,070 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
typescript
领域
frontend, testing

调研方向

从 src/features/instance/config/deployments/functions/stagedRelease.ts 和 StagedReleaseDetail 组件开始;追踪后续的 rolling_out 部署如何影响已暂存 release 的状态和 Activate 控件。然后阅读 src/integrations/api/instance/deployments/types.ts 中关于 rolling_out 的文档,并扩展 stagedRelease.test.ts,覆盖另一个 release 后续进行 rolling deploy 的情况。完成标准是:当 B 已在接收它的节点上 live 时,面板不再称 A 为 live,并且现有的激活行为也得到覆盖。

由索引模型根据 Issue 内容生成。

描述

Problem

On Harper 5.4, a staged release reads as live while a newer rolling deploy of the same component is already running on the node that received it.

stagedReleaseState (src/features/instance/config/deployments/functions/stagedRelease.ts:45-74) counts a deploy still in progress as changing nothing ("A deploy still running does not count"). Only a success later deploy makes the staged release replaced, and only failed or partial makes it uncertain. Before 5.4 that held, because a running deploy hadn't swapped yet. A 5.4 rolling deploy is different: it reads rolling_out while it is already live on the receiving node and its activation job takes it to the other nodes one at a time (src/features/instance/applications/DESIGN.md, and the rolling_out doc in src/integrations/api/instance/deployments/types.ts).

Steps
  1. Activate staged release A of a component. It ends success.
  2. Start a certified rolling deploy B of the same component, which isn't an activation of A (no activated_from). While it reads rolling_out, open A in Config → Deployments.

Expected: the panel says another deploy is taking over, live on the node that received it.
Actual: StagedReleaseDetail (components/StagedReleaseDetail.tsx:57-61) says A is live. It also hides Activate (:80) until B ends success or partial.

Hiding Activate during a rolling deploy is arguably right, since a second activation would start another rolling restart. The wrong part is the "live" claim. stagedRelease.test.ts covers a rolling_out activation of the staged release itself, and a later partial, but not a later rolling_out deploy of something else.

Context

Found by a cross-model review of HarperFast/studio#2031. It reached that branch through its merge of stage, which brought in #2060 (5.4 rolling statuses), so it isn't that PR's change.

Review-Deferral: 1442a057ba5e7606 severity=minor category=correctness

🤖 Generated by Claude Code (Claude Opus 5.5); posted via @dawsontoth.

主要语言
TypeScript
星标
5
派生
4
平均合并
1 天 20 小时
30 天内合并 PR
140

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

HarperFast/studio 的其他 Issue

查看 HarperFast/studio 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。