DC 重启测试时,出现前置风扇转速传感器丢失

// 此模板仅供参考,如果不适用可以修改

问题描述

DC 重启测试时,出现前置风扇转速传感器丢失,且日志中出现大量报错,DC不会恢复

环境信息

  • 操作系统:不涉及

  • 软件版本:OpenUBMC2512

  • 硬件配置:920 525T

重现步骤

  1. 跑DC重启测试

  2. 每次重启查看风扇传感器,发现前置风扇传感器丢失

  3. DC重启,现象不会消失,重启bmc后恢复正常

期望结果

DC重启无异常传感器丢失

实际结果

DC重启出现传感器丢失

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

硬件背景:前置8风扇版(双转子),和后置5风扇版(单转子)

DC重启时某一圈出现如下图所示报错

后续DC重启后上面报错没有出现,风扇connectors 信息存在问题,前置8盘connect 对象只创建5个(难道认错了风扇版?)

后台风扇类型识别一直失败

答案内容由AI生成,仅供参考:

解决方案与结论

解决方案: hwproxy 组件需要在 对象添加完成 和 对象删除完成后,添加临时数据清理逻辑。这可以保证 hwproxy 组件对象在下一次加载时,都能正确获取并使用新的数据,而不会因为错误的临时数据(nil)导致访问报错。

结论:

  • 根本原因:DC重启测试触发了hwproxy组件在初始化过程中的时序问题,导致传感器对象因位置注册超时及临时数据污染而注册失败。
  • 直接现象:position在注册到资源树时超时,引发topology data not exist错误,最终导致传感器对象被删除。
  • 恢复方法:重启BMC是有效的临时恢复措施,因为它清除了已损坏的内部状态。但彻底修复仍需落实上述代码层面的修改。
点击此处查看详细分析解答

好的,我已经仔细分析了您提供的上下文信息(包括知识图谱和文档片段),并将其与您描述的问题“DC重启测试时,出现前置风扇转速传感器丢失”进行了关联。请参考以下基于上下文信息的分析结果。

问题分析

根据上下文中的信息,您遇到的“DC重启测试时前置风扇转速传感器丢失”问题,其根本原因并非DC重启操作本身,而是该操作触发了底层软件组件的初始化时序问题,导致风扇传感器对象未能成功创建。

核心根因:对象注册超时与临时数据污染

根据文档片段和知识图谱中的关系,问题的核心链路如下:

  1. 触发条件:system restart(系统重启)或 BMC Restart(BMC重启)是问题的触发事件。在您的场景中,DC重启 也属于系统级重启,同样会触发此问题。
  2. 根本原因:风扇转速传感器对象的注册过程要求 position 信息在限定时间内注册到系统的资源树中。在您的场景中(DC反复重启),该注册过程发生了 超时。
  3. 故障表现:由于超时,组件 hwproxy 未能及时获取到正确的拓扑数据,导致系统在二次尝试加载时读取了 错误的临时数据(nil)。
  4. 最终结果:读取 nil 数据导致底层脚本 chip.lua 抛出 "table index is nil" 错误,中断了对象添加流程,并最终触发 DeleteObject(删除对象)操作。因此,您在前置面板上看到的传感器就会显示为“–”或丢失。

为什么DC重启无法自行恢复,而重启BMC可以?

  • DC重启无法恢复的原因:从上下文来看,问题的根因在于hwproxy组件在进行拓扑信息初始化时,未对临时数据进行清理。这意味着,一旦在第一次DC重启过程中触发了该异常,这个错误的临时数据(nil)就在系统状态中被保留了。后续的DC重启步骤无法清除这个已损坏的内部状态,导致问题持续存在。
  • 重启BMC可以恢复的原因:知识库明确指出 “重启 BMC 可恢复”。BMC重启 或 BMC Restart 是一个更深层次的、完整的控制器复位过程。它清空了所有动态运行时的数据状态和缓存,包括那个被污染的错误临时数据。当BMC重新启动后,hwproxy组件会从一个干净的初始状态开始,重新执行风扇传感器的注册流程,从而成功创建对象,传感器恢复正常。

解决方案与结论

综合以上分析,该问题的解决方案在上下文中已明确指出:

解决方案: hwproxy 组件需要在 对象添加完成 和 对象删除完成后,添加临时数据清理逻辑。这可以保证 hwproxy 组件对象在下一次加载时,都能正确获取并使用新的数据,而不会因为错误的临时数据(nil)导致访问报错。

结论:

  • 根本原因:DC重启测试触发了hwproxy组件在初始化过程中的时序问题,导致传感器对象因位置注册超时及临时数据污染而注册失败。
  • 直接现象:position在注册到资源树时超时,引发topology data not exist错误,最终导致传感器对象被删除。
  • 恢复方法:重启BMC是有效的临时恢复措施,因为它清除了已损坏的内部状态。但彻底修复仍需落实上述代码层面的修改。

[缺陷]: 修复组件没有加载风扇板对象-libmcpp-AtomGit 看下带上这个修改能不能解决这个问题

贴下一键日志文件

好的,我看下提交

R420KV2_2102314YCY12_20260725-1051.tar.gz (8.7 MB)

看着是风扇1-8的类型没有识别到
没拿到fantype

2026-07-25 08:17:25.818179 thermal_mgmt NOTICE: object_manage.lua(332): add objects callback, path: /bmc/kepler/ObjectGroup/010103, life cycle id: 1, count: 20, took 69490ms, uptime: 58702 s
2026-07-25 08:17:25.819675 thermal_mgmt NOTICE: base.lua(85): Receive cooling board 010103 cooling obj complete, cur num: 2, cooling board num: 2
2026-07-25 08:17:25.820645 thermal_mgmt ERROR: object_manage.lua(337): AddObjectComplete failed, path:/bmc/kepler/ObjectGroup/010103, life_cycle_id:1, error:…hermal_mgmt/lualib/basic_cooling/cooling_device/base.lua:109: table index is nil

分发CLU sr过程中,重分配风扇id出错了
add_objects_complete_callback
update_objs_recived_status 报错了
fantype对象又依赖的是complete信号,导致对象没了
这儿得改到on_add_object去

就把这个合入带上,应该能解决

好的,我试试

尝试修改方案后,还请记得及时反馈下结果呢

周末跑了200多圈,暂时没复习这个问题,后续继续再跑下

好的 :ok_hand: