【PSR】有4个同一UID的UnitConfiguration配置,出现概率性匹配到不同的配置

Connector的A2a偶尔匹配到IEU1,有时候匹配到IEU2,想知道这个是怎么匹配的,因为这边的场景是有不同的机型,可能存在一个Riser卡的不同接线,想知道这个是怎么匹配,从而避免类似冲突问题。
有重复A2a的PSR配置如下:

        "UnitConfiguration_IEU1": {
            "SlotType": "IEU",
            "SlotNumber": 1,
            "SlotSilkText": "IEUSlot1",
            "Configurations": [

                    "UID": "00000001040302023942",
                    "Index": 1,
                    "Default": true,
                    "SrcPortName": [
                        "A2a",
                        "A2c",
                        "A3a"
                    ],
                    "TargetPortID": [
                        33,
                        34,
                        49
                    ],
                    "Slot": [
                        255,
                        2,
                        3
                    ],
                    "Device": []

...
        "UnitConfiguration_IEU2": {
            "SlotType": "IEU",
            "SlotNumber": 2,
            "SlotSilkText": "IEUSlot2",
            "Configurations": [
                {
                    "UID": "00000001040302023942",
                    "Index": 1,
                    "Default": true,
                    "SrcPortName": [
                        "C6a",
                        "A2a",
                        "A2c",
                        "C7b"
                    ],
                    "TargetPortID": [
                        17,
                        33,
                        34,
                        49
                    ],
                    "Slot": [
                        4,
                        5,
                        6
                    ],
                    "Device": []
                },

日志有看到槽位被变更的记录,在闭源代码hwdiscovery

1970-01-01 08:00:47.405771 hwdiscovery NOTICE: init.lua(136): get csr data from /data/opt/bmc/sr/backup/00000001040302023942_01010103.bin, format version: 1.00, data version: 1.24, position: 01010103
1970-01-01 08:00:47.407495 hwdiscovery WARNING: init.lua(228): get data from /opt/bmc/sr/14100513_00000001040302023942.sr, error: Local file not found, failed to open file: /opt/bmc/sr/14100513_00000001040302023942.sr, status: 4
1970-01-01 08:00:47.408754 hwdiscovery NOTICE: hwcomponent.lua(103): Local file not found, failed to open file: /opt/bmc/extend/CTCC/sr/14100513_00000001040302023942_cust.sr, status: 4
1970-01-01 08:00:47.410081 hwdiscovery NOTICE: unit_configuration.lua(65): [Plugin:unit_configuration] Update Connector Connector_A2a_010101 slot to 2
1970-01-01 08:00:47.411390 hwdiscovery NOTICE: hwcomponent.lua(163): start to process sr data, source: /data/opt/bmc/sr/backup/00000001040302023942_01010103.bin, format version: 1.00, data version: 1.24, position: 01010103
1970-01-01 08:00:47.557862 hwdiscovery NOTICE: sdr.lua(74): get objects, count: 55, position: 01010103
1970-01-01 08:00:48.319208 hwproxy NOTICE: app_objects.lua(39): get topology successfully, position: 01010C04, topology: {"Anchor":["I2cMux_SMC_4_01010C"],"I2cMux_SMC_4_01010C":["Chip_Nvme_01010C04"]}
1970-01-01 08:00:48.322004 hwproxy NOTICE: object_manage.lua(217): add objects completely, path: /bmc/kepler/ObjectGroup/01010C04, position: 01010C04, life cycle id: 1, took 40ms
1970-01-01 08:00:48.343744 hwdiscovery NOTICE: init.lua(243): set component unique id: 00000001040302023942 and eeprom data version: 1.24 to connector: Connector_A2a_010101, position: 01010103
1970-01-01 08:00:48.345236 hwdiscovery NOTICE: init.lua(136): get csr data from /data/opt/bmc/sr/backup/00000001040302023942_01010103.bin, format version: 1.00, data version: 1.24, position: 01010103
1970-01-01 08:00:48.346975 hwdiscovery WARNING: init.lua(228): get data from /opt/bmc/sr/14100513_00000001040302023942.sr, error: Local file not found, failed to open file: /opt/bmc/sr/14100513_00000001040302023942.sr, status: 4
1970-01-01 08:00:48.348363 hwdiscovery NOTICE: hwcomponent.lua(103): Local file not found, failed to open file: /opt/bmc/extend/CTCC/sr/14100513_00000001040302023942_cust.sr, status: 4
1970-01-01 08:00:48.350522 hwdiscovery NOTICE: unit_configuration.lua(65): [Plugin:unit_configuration] Update Connector Connector_A2a_010101 slot to 1
1970-01-01 08:00:48.352462 hwdiscovery NOTICE: hwcomponent.lua(163): start to process sr data, source: /data/opt/bmc/sr/backup/00000001040302023942_01010103.bin, format version: 1.00, data version: 1.24, position: 01010103
1970-01-01 08:00:48.503328 hwdiscovery NOTICE: sdr.lua(74): get objects, count: 55, position: 01010103

wangzhuwei3@h-partners.com 日志麻烦转发我一份。

已发送

关于riser卡的槽位更新,流程是:
1、低速信号在位。比如是Scanner_A2a
2、对应连接器变为在位。Connector_A2a的Presence变为1,触发框架读取eeprom数据加载riser卡。
3、解析Connector名字里的SrcPortName,比如Connector_A2a就是A2a。
4、根据PSR里的线缆配置,查到A2a对应的SlotNumber,设置到Connector的Slot属性,作为riser卡的槽位号。

问题场景里,Connector_A2a 是riser卡的连接器,A2a这个UBC口同时出现在槽位1和槽位2的线缆配置里,lua table是无序的,判断riser卡的槽位就会概率匹配到不同的槽位。

定位结论:

同一个UID的riser卡可能插到槽位1,也可能插到槽位2,不同的线缆配置里都有低速信号的名称,根据低速信号的scanner名称无法区分两种槽位的线缆配置。

规避方法:

这种场景,配置2个PSR来避免冲突。