[vCenter Discovery] Multipath LUNs appear to commit multiple DB writes for device_lun field on cmdb_ci_fc_disk records causing unnecessary DB writes


Description

During the vCenter Discovery, when the VMWarevCenterESXHostsStorageProbe input payload contains duplicate data record for the cmdb_ci_fc_disk CI with different device_lun values, it leads to a large number of updates on the same cmdb_ci_fc_disk CI record causing unnecessary DB writes.

Steps to Reproduce

1. Run a vCenter Discovery

2. All CIs in the cmdb_ci_fc_disk table appeared to receive multiple updates to their device_lun field

3. Note that, in the VMWarevCenterESXHostsStorageProbe input payload, there are multiple values for device_lun field for the same CI.

4. Sample input payload looks like below:

"name":"EMC |
| | Fibre Channel Disk |

{"computer":"host-43606","size_bytes":2199025090560,"device_id":"naa.60000970000197801892533030303445","correlation_id":"02000700006000097000019780189253303030344553594d4d4554","name":"EMC Fibre Channel Disk (naa.60000970000197801892533030303445)","vendor":"EMC","model":"SYMMETRIX","datastores":["datastore-42004","datastore-42005","datastore-42006","datastore-42007","datastore-42008","datastore-42009","datastore-42010","datastore-42011","datastore-42012","datastore-42013","datastore-42014","datastore-42015","datastore-42016","datastore-42017","datastore-42018","datastore-42306","datastore-42307","datastore-42308","datastore-43607","datastore-44331","datastore-44332","datastore-44333","datastore-44334","datastore-44335","datastore-44336","datastore-44337","datastore-44390","datastore-44391","datastore-44392","datastore-44393","datastore-44394","datastore-44395","datastore-44396","datastore-44397","datastore-44398","datastore-44399","datastore-44400","datastore-44401","datastore-44402","datastore-44403","datastore-44404","datastore-44405","datastore-44406","datastore-44407","datastore-44408"],"device_lun":"key-vim.host.ScsiDisk-02000700006000097000019780189253303030344553594d4d4554",......

"name":"EMC |
| | Fibre Channel Disk |

{"computer":"host-43606","size_bytes":2199025090560,"device_id":"naa.60000970000197801892533030303445","correlation_id":"02000700006000097000019780189253303030344553594d4d4554","name":"EMC Fibre Channel Disk (naa.60000970000197801892533030303445)","vendor":"EMC","model":"SYMMETRIX","datastores":["datastore-42004","datastore-42005","datastore-42006","datastore-42007","datastore-42008","datastore-42009","datastore-42010","datastore-42011","datastore-42012","datastore-42013","datastore-42014","datastore-42015","datastore-42016","datastore-42017","datastore-42018","datastore-42306","datastore-42307","datastore-42308","datastore-43607","datastore-44331","datastore-44332","datastore-44333","datastore-44334","datastore-44335","datastore-44336","datastore-44337","datastore-44390","datastore-44391","datastore-44392","datastore-44393","datastore-44394","datastore-44395","datastore-44396","datastore-44397","datastore-44398","datastore-44399","datastore-44400","datastore-44401","datastore-44402","datastore-44403","datastore-44404","datastore-44405","datastore-44406","datastore-44407","datastore-44408"],"device_lun":7,.....

5. The device_lun field appears to be flipping between values (i.e. 7 -> key-vim.host.ScsiDisk-0200070006000970 -> 7) where 7 is the ScsiTopologyLunMap equivalent.

Workaround

The issue is fixed in PRB1404405 in Quebec release. As a fix, the key for the lunMap is changed from lun.key to scsiLun.name. scsiLun.name is used because the name value doesn't change even there are multiple records.


Related Problem: PRB1404405