已开启
[缺陷]: WEB做CSR固件包升级操作,提示升级失败,实际升级成功 ,影响运维功能,出现概率 1/5 #496
豪华亮石创建于  5 天前
豪华亮石
豪华亮石
5 天前 创建

感谢您为社区报告缺陷!请按照以下提示提供详细信息,以便我们更好地理解并跟进。

版本分支

openUBMC LTS

问题发现版本

br_release_openUBMC2603_20260630

严重程度

提示

复现类型

有条件必然复现

环境信息

------------------- iBMC INFO -------------------
IPMC CPU: Hi1712
IPMI Version: 2.0
Active iBMC Version: 6.00.53.01
Active iBMC Build: 006
Active iBMC Built: 15:21:41 Sep 1 2026
Backup iBMC Version: 6.00.53.01
Available iBMC Version: 6.00.53.01
Available iBMC Build: 006
Active Uboot Version: 10.2.30.0 (11:27:26 Jun 25 2026)
Backup Uboot Version: 10.2.30.0 (11:27:26 Jun 25 2026)
Active Secure Bootloader Version: 10.2.30.0 (11:27:26 Jun 25 2026)
Backup Secure Bootloader Version: 10.2.30.0 (11:27:26 Jun 25 2026)
Active Secure Firmware Version: 10.2.30.0 (11:27:26 Jun 25 2026)
Backup Secure Firmware Version: 10.2.30.0 (11:27:26 Jun 25 2026)
Active BMCSDK Version: 5.14.00.01
Coprocessor Firmware Version: 1.1.3.4
----------------- Product INFO -----------------
Product ID: 0x0000
Product Name: KunLun 2280 V3
Product Unique ID: 0x000000010507B500
Active BIOS Version: (U75)12.20.03.04
Backup BIOS Version: 12.20.03.04
PSR Version: 4.03
--------------- Riser Card INFO ----------------
Riser1 BoardName: BC85PRUA
Riser1 BoardID: 0xffff
Riser1 CUID: 00000001040302084150
Riser1 PCB: .A
Riser1 CSR: 1.18
Riser1 MCU: 1.47.00
Riser9 BoardName: CM15PRUV
Riser9 BoardID: 0xffff
Riser9 CUID: 00000009040302YATV
Riser9 PCB: .A
Riser9 CPLD Version: (U0)1.02
Riser9 CSR: 4.01
-------------- HDD Backplane INFO --------------
DiskBP2 BoardName: BC85NHBA
DiskBP2 BoardID: 0xffff
DiskBP2 CUID: 00000001030302084145
DiskBP2 PCB: .A
DiskBP2 CPLD Version: (U5)1.10
DiskBP2 CSR: 1.37
---------------- CPU Board INFO ----------------
CpuBoard1 BoardName: BC85AMDATE
CpuBoard1 BoardID: 0xffff
CpuBoard1 CUID: 00000001020302080690
CpuBoard1 PCB: .A
CpuBoard1 CPLD1 Version: (U20020)2.05
CpuBoard1 CPLD2 Version: (U20021)2.05
CpuBoard1 CPLD3 Version: (U20022)2.05
CpuBoard1 CSR: 1.83
---------------- EXP Board INFO ----------------
ExpBoard1 BoardName: BC85SMMA
ExpBoard1 BoardID: 0xffff
ExpBoard1 CUID: 00000001010302084162
ExpBoard1 PCB: .A
ExpBoard1 CPLD Version: (U5)3.13
ExpBoard1 CSR: 4.00
---------------- FAN Board INFO ----------------
FanBoard1 BoardName: BC85SMMD
FanBoard1 BoardID: 0xffff
FanBoard1 CUID: 00000001050302084144
FanBoard1 PCB: .A
FanBoard1 CPLD Version: (U401)1.02
FanBoard1 CSR: 4.00
---------------- PCIe Card INFO ----------------
PCIe0 ProductName: Cathaya2.0-xline
PCIe0 BoardID: 0xffff
PCIe0 PCB:
PCIe0 ProductName: Cathaya2.0-xline
PCIe0 BoardID: 0x0000
PCIe0 PCB:
------------------- PSU INFO -------------------
PSU1 Version: DC:104 PFC:104
------------------ Power INFO ------------------
CpuBoard1VRD Version: 18.18.18.18.18.18
--------------- M.2 Adapter INFO ----------------
M2TransferCard1 BoardName: BC85ETHAA
M2TransferCard1 BoardID: 0xffff
M2TransferCard1 CUID: 00000009110302YAUM
M2TransferCard1 PCB: .A
M2TransferCard1 CPLD Version: N/A
M2TransferCard1 CSR: 4.00

预置条件

BMC运行正常、已登录系统;WEB做CSR固件包升级操作,提示升级失败,实际升级成功 ,影响运维功能,出现概率 1/5

复现步骤

  1. 升级ibmc固件包;升级过程中点击界面任意位置;触发最新的keeplive接口;保证界面会话时间(会话超期出现弹窗会清除定时器)

  2. 升级任务完成后;会触发一个15s后的请求,这个请求有时候成功,有时候失败;成功后拿到空数组,清除定时器;如果失败,会触发2s一次的轮询接口;10次失败后且会话未超时情况下;界面提示升级失败;必现

实际结果及影响

参考社区:https://discuss.openubmc.cn/t/topic/7466

预期结果

升级成功;不应该提示升级失败

问题定位情况

参考社区: https://discuss.openubmc.cn/t/topic/7466

likedislike
openUBMC-robot
openUBMC-robot成员
5 天前 评论:

注意

此 Issue 需要负责人。 如果没有指派时, sameeen 是默认的负责人

likedislike
openUBMC-robotopenUBMC-robot成员
5 天前 将 sameeen 设为负责人
openUBMC-robotopenUBMC-robot成员
5 天前 添加了label:sig/sig-interface
openUBMC-robotopenUBMC-robot成员
5 天前 关联了看板:openUBMC 25.12 LTS 缺陷看板
openUBMC-robot
openUBMC-robot成员
5 天前 评论:

欢迎来到 openUBMC 社区

Hey @github_37195944 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册

联系指引

有疑问可以联系 SIG: sig-interface ,
维护者是: @DataSculptor, @WeliveWelove, @aaronlee, @huanghan ,
优秀贡献者是: @sameeen .

likedislike
openUBMC-robot
openUBMC-robot成员
5 天前 评论:

Issue 工作流介绍

社区的需求和缺陷的工作流状态处于纳管中。

类型 上个状态 下个状态 评论命令 谁可以操作
缺陷 待修复 修复中 /todo2fixing 仓库成员角色: Maintainer, Committer, Contributor, Owner
缺陷 修复中 待验收 /fixing2UAT 仓库成员角色: Maintainer, Committer, Contributor, Owner
缺陷 待验收 已修复 /UAT2done SIG组: sig-QA (maintainer,committer)
缺陷 待修复 已挂起 /todo2suspended 仓库成员角色: Maintainer, Committer, Contributor, Owner
缺陷 待修复 已拒绝 /todo2rejected 仓库成员角色: Maintainer, Committer, Contributor, Owner
likedislike
Ffangzhengbo成员
5 天前 issue状态由 待修复 改变为 修复中
j1103成员
4 天前 评论:

针对该缺陷的修复 !569,在本地 mock 环境用 Playwright 编排接口返回做了回归检视,改动前后各跑了一遍,确认修复有效:

  • 改动前:升级完成 15 秒后那次查询失败,之后每 2 秒重试一次,第 10 次弹出"升级失败"(15.0s → 33.1s),与缺陷描述的现象一致。
  • 改动后:15 秒那次失败后就不再重试,只留"升级成功",没有误报。

有三点建议,供参考:

1. 失败次数没有清零

UpgradeModeStep1.vue:827-830 停掉重试的时候,failCount 还停在 1。原来这个计数只有两个清零时机:请求成功(:865),或者攒满 10 次弹出失败提示(:658)。新加的这段把重试掐断了,两条路都没走到,计数就一直卡在 1。

实测:延迟重查失败过一次之后,再发起一轮升级并让接口持续失败,第 9 次就弹"升级失败";而没有这次残留时是第 10 次。也就是不刷新页面的话,上一轮欠的次数会带到下一轮,少扛一次失败。

建议停重试时顺手 failCount.value = 0

2. 这段判断放的位置,和注释说的不是一回事

注释写的是"任务已结束就不再启动持续轮询",但实测下来真正起作用的是另一条路:

  • 查询成功、任务确实结束时,轮询在 taskParallelCompleted 第一行(:568)就已经停掉了,这里的 clearQueryProgress() 什么也没做。
  • 真正管用的是查询失败时 —— 失败会排一个 2 秒后的重试,这里把那个重试取消掉了。这才是本次修复生效的地方。

也就是说,它能生效是因为"失败重试的定时器碰巧和正常轮询存在同一个变量里"。以后要是有人改了失败重试的写法,这段会悄悄失效,注释还会把人往另一个方向带。

如果放到处理请求失败的地方直接判断"这次是不是那个 15 秒后的补查",是就不重试,意图会清楚很多。

3. service.json 的版本号实际没有递增

这次改动把 mds/service.json 从 1.100.107 提到 1.100.108,但 !570 先合入、已经占用了 1.100.108,rebase 时这个改动因为内容相同被静默吸收了。合入后 main 上的版本仍是 1.100.108,git log -- mds/service.json 里也查不到这次合入。

也就是说代码合进去了,版本号没有变化。这个 version 是构建时的组件包版本(bingo 生成 conanbase.py 时从这里读),如果下游按版本号取包,最新版本可能没带上这次修复。建议确认一下出包情况,或者在下一个 PR 递增版本号时留意一下。


本条检视由 Claude Opus 5 完成,结论均经本地 mock 环境实测复现。

likedislike