diff --git a/sonic-psud/scripts/psud b/sonic-psud/scripts/psud index e3f56be78..f8f7b8240 100644 --- a/sonic-psud/scripts/psud +++ b/sonic-psud/scripts/psud @@ -405,9 +405,6 @@ class DaemonPsud(daemon_base.DaemonBase): fvs = swsscommon.FieldValuePairs([(CHASSIS_INFO_PSU_NUM_FIELD, str(self.num_psus))]) self.chassis_tbl.set(CHASSIS_INFO_KEY, fvs) - # Update predefined position_in_parent and parent_name for PSU - self._update_psu_entity_info() - def __del__(self): # Delete all the information from DB and then exit for psu_index in range(1, self.num_psus + 1): @@ -438,6 +435,13 @@ class DaemonPsud(daemon_base.DaemonBase): # We received a fatal signal return False + # Update predefined position_in_parent and parent_name for PSU + # it was in the __init__ function which means will be run only once + # But there's chance that the keys(PHYSICAL_ENTITY_INFO|*) got removed by other processes, + # like the exit function during the restart of thermalctld, + # hence move it to the iteration run, so the key will be filled again after removed. + self._update_psu_entity_info() + self.update_psu_data() self._update_led_color()