Redfish接口设置事件订阅发送失败尝试间隔秒数,无法修改为1到10s

问题描述

redfish接口设置事件订阅发送失败尝试间隔秒数

想修改成1到10,无法生效

期望结果

可以支持修改取值范围1到10

尝试过的解决方案

在配置器中修改范围实际不生效

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

结论

当前无法将事件订阅失败重试间隔修改为1~10秒的主要原因是:虽然配置文件已更新,但系统运行时逻辑或服务未采纳新规则,且缺乏强制刷新机制。

建议通过标准的Configuration Import流程应用变更,并验证Schema是否被正确加载。若仍无效,需进一步排查后端服务是否支持该范围更改,必要时提交至相关SIG组进行定制化需求评审。

点击此处查看详细分析解答

Redfish接口设置事件订阅发送失败尝试间隔秒数无法修改为1到10秒的问题分析

问题描述

用户尝试通过修改Redfish接口的配置文件,将事件订阅在发送失败后的重试间隔时间(DeliveryRetryIntervalSeconds)从默认范围60~600秒调整为1~10秒,但修改后配置未生效。

问题原因分析

根据提供的上下文信息和配置修改内容,该问题的根本原因如下:

1. 多重校验机制导致配置不一致

用户已在两个关键位置修改了取值范围:

  • 映射配置文件:interface_config/redfish/mapping_config/EventService/EventService.json 中的 Validator 规则已更新为 [1, 10]
  • 静态资源Schema定义:eventservice.v1_0_2.json 中 DeliveryRetryIntervalSeconds 字段的最小值和最大值也已改为1和10

然而,尽管前端配置已更改,系统后端可能仍存在以下限制:

  • 运行时校验逻辑未同步更新:Redfish接口的实际处理逻辑中可能存在硬编码的范围校验(如60~600秒),与新配置不匹配。
  • Schema版本未正确加载:修改后的JSON Schema可能未被Redfish服务重新加载或编译,导致旧规则仍在执行。

2. 缺乏配置热更新机制

从知识库可知,Redfish Interface涉及多个组件协同工作(如EventService、event_policy模块等)。单纯修改静态配置文件可能不足以触发整个系统的重新初始化。需要执行配置导入(Configuration Import)或其他重启机制才能使变更生效。

3. 安全与稳定性策略限制

Redfish标准对事件重试间隔设为较长时间(至少60秒)通常是出于以下考虑:

  • 避免在网络短暂故障时产生过多重试请求,造成系统负载过高
  • 防止对接的网管系统因频繁接收重试事件而导致事件风暴
  • 符合工业级设备管理的稳定性和可靠性要求

直接缩短至1秒可能被视为不安全操作,因此系统可能隐式拒绝此类极端值。

解决方案建议

:white_check_mark: 推荐做法:使用标准配置导入流程

根据Sunpeijun在类似场景下的建议(如2506 Version中的配置持久化问题):

“没办法通过默认值修改,只能通过接口,例如配置导入这种会持久化的方式。”

应采用标准化的配置管理方式:

# 使用Redfish POST接口或CLI工具导入包含新参数的config.json
POST /redfish/v1/Managers/1/Actions/Oem/openUBMC.ImportConfiguration
{
  "ConfigUri": "remote_server/config.json"
}

:white_check_mark: 验证Schema是否生效

检查Redfish服务是否正确加载了新的Schema定义:

GET /redfish/v1/schemastore/en/eventservice.v1_0_2.json

确认返回的DeliveryRetryIntervalSeconds字段中minimum和maximum是否为1和10。

:white_check_mark: 检查全局唯一性与URI格式

确保所有相关URI引用的一致性。根据知识库,“Redfish接口映射配置文件”需满足全局Uri唯一性检查,任何URI配置错误都可能导致接口调用失败。

:warning: 注意事项

  • 修改此类底层参数需经过Redfish Interface SIG评审,尤其是涉及标准扩展或行为变更。
  • 若系统中有多个实例(如不同BMC版本共存),需确保所有节点同步更新,避免出现混合行为。
  • 建议先在测试环境验证,防止因高频重试引发系统不稳定。

结论

当前无法将事件订阅失败重试间隔修改为1~10秒的主要原因是:虽然配置文件已更新,但系统运行时逻辑或服务未采纳新规则,且缺乏强制刷新机制。

建议通过标准的Configuration Import流程应用变更,并验证Schema是否被正确加载。若仍无效,需进一步排查后端服务是否支持该范围更改,必要时提交至相关SIG组进行定制化需求评审。

你这个只是改的校验吧

没生效指的是北向的就没生效

还是业务代码的

业务代码没生效,发送patch接口校验失败

这部分不是业务代码

只是北向的校验部分

我转对应的人答复该怎么改

你patch校验失败的话

是怎么修改代码的

环境上直接更改映射器文件嘛

当前最新映射器修改配置,建议出整包验证。

是的 就是按照提问的截图修改的,没有再改其他地方

直接替换的话

需要按照rackmount readme文档修改

仅替换映射器不生效的现在

出整包验证的,报错如下

上面说了

映射器只是第一层拦截 仅支持 1~10

然后才会把你的值传给后端

可以看下app.log

确认下是不是后端拦截的

这块的代码在闭源,我们看不到呢

2025-12-04 00:01:35.138542 pcie_device ERROR: topo_reader.lua(158): [BizTopoMonitor] read topo info fail, position=010101
2025-12-04 00:01:35.138871 pcie_device ERROR: topo_monitor.lua(721): [BizTopoMonitor] Read topo info failed.
2025-12-04 00:01:37.060724 redfish WARNING: init.lua(97): nil:93 > signal.lua:-1 > subscriber_mgr.lua:422: The value ‘5’ for the property DeliveryRetryIntervalSeconds is not in the supported range of acceptable values.
2025-12-04 00:01:39.979230 metric_analyzer NOTICE: metric_analyzer_app.lua(318): Automatically start initializing optical module
2025-12-04 00:01:40.148851 metric_analyzer NOTICE: optical_handler.lua(631): starting om data collecting process
2025-12-04 00:01:40.150045 metric_analyzer NOTICE: optical_obj_manager.lua(261): Initialization of optical modules finished.
2025-12-04 00:01:41.640748 general_hardware NOTICE: fructl_handler.lua(76): get_power_state: system[1] get power power OFF
2025-12-04 00:01:46.831683 network_adapter NOTICE: ncsi_comm.lua(277): ncsi: Basic init success_port_cnt = 0, port_num = 4
2025-12-04 00:01:46.833428 network_adapter NOTICE: ncsi_core.lua(60): ncsi: Enable channel. package_id=1, channel_d=0, eth_name=eth1 [repeated 6 times in 310s from 2025-12-03 23:56:36.256637 to 2025-12-04 00:01:46.833428]
2025-12-04 00:01:47.584339 network_adapter NOTICE: ncsi_core.lua(120): ncsi: Disable channel TX. package_id = 1, channel_d = 0, eth_name = eth1 [repeated 6 times in 311s from 2025-12-03 23:56:37.024461 to 2025-12-04 00:01:47.584339]
2025-12-04 00:01:48.337565 network_adapter NOTICE: ncsi_core.lua(80): ncsi: Disable broadcast filter. package_id=1, channel_d=0, eth_name=eth1 [repeated 6 times in 311s from 2025-12-03 23:56:37.785074 to 2025-12-04 00:01:48.337565]
2025-12-04 00:01:49.090625 network_adapter ERROR: ncsi_broadcast_filter.lua(115): NCSI disable broadcast filter failed, package_id = 1, channel_id = 0, eth_name = eth1 [repeated 6 times in 311s from 2025-12-03 23:56:38.536622 to 2025-12-04 00:01:49.090625]
2025-12-04 00:01:49.092016 network_adapter NOTICE: ncsi_core.lua(90): ncsi: Disable multicast filter. package_id=1, channel_d=0, eth_name=eth1 [repeated 6 times in 311s from 2025-12-03 23:56:38.537157 to 2025-12-04 00:01:49.092016]
2025-12-04 00:01:49.841759 network_adapter ERROR: ncsi_multicast_filter.lua(149): ncsi cmd ctrl disable multicast filter failed, package_id = 1, channel_id = 0, eth_name = eth1 [repeated 6 times in 310s from 2025-12-03 23:56:39.286180 to 2025-12-04 00:01:49.841759]
2025-12-04 00:01:49.845222 network_adapter NOTICE: ncsi_core.lua(60): ncsi: Enable channel. package_id=1, channel_d=1, eth_name=eth1 [repeated 6 times in 310s from 2025-12-03 23:56:39.288576 to 2025-12-04 00:01:49.845222]

嗯 闭源拦截

如果确实需要的话

就跟项目支持沟通下吧 怎么落地

嗯呢,当前有定制需求需要

接口配置和闭源组件对范围的校验是统一的,仅修改北向配置只能通过接口层校验,修改资源树属性的时候还会校验。
需要定制的话请与项目支持沟通