From 4e2900961dfe4650538ed6d789915ac99f6587e2 Mon Sep 17 00:00:00 2001 From: Sonic Build Admin Date: Thu, 6 Feb 2025 21:39:56 +0000 Subject: [PATCH] [Mellanox] Handle exception during Inotify import #### Why I did it During smartswitch initialization, an error is observed during switch bootup. ztp disable runs decode-eeprom. ``` sonic ERR decode-syseeprom: Failed to obtain EEPROM object due to ValueError("invalid literal for int() with base 10: ''"), Traceback: Traceback (most recent call last): #012 File "/usr/local/bin/decode-syseeprom", line 35, in instantiate_eeprom_object#012 eeprom = sonic_platform.platform.Platform().get_chassis().get_eeprom() #012 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #012 File "/usr/local/lib/python3.11/dist-packages/sonic_platform/platform.py", line 35, in __init__ #012 self._chassis = SmartSwitchChassis()#012 ^^^^^^^^^^^^^^^^^^^^ #012 File "/usr/local/lib/python3.11/dist-packages/sonic_platform/chassis.py", line 1207, in __init__ #012 self.initialize_modules()#012 File "/usr/local/lib/python3.11/dist-packages/sonic_platform/chassis.py", line 1244, in initialize_modules #012 self.initialize_single_module(index=index) #012 File "/usr/local/lib/python3.11/dist-packages/sonic_platform/chassis.py", line 1235, in initialize_single_module #012 from .module import DpuModule#012 File "/usr/local/lib/python3.11/dist-packages/sonic_platform/module.py", line 24, in #012 from .dpuctlplat import DpuCtlPlat, BootProgEnum #012 File "/usr/local/lib/python3.11/dist-packages/sonic_platform/dpuctlplat.py", line 29, in #012 from .inotify_helper import InotifyHelper #012 File "/usr/local/lib/python3.11/dist-packages/sonic_platform/inotify_helper.py", line 21, in #012 import inotify.adapters#012 File "/usr/local/lib/python3.11/dist-packages/inotify/adapters.py", line 37, in #012 _IS_DEBUG = bool(int(os.environ.get('DEBUG', '0'))) #012 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #012ValueError: invalid literal for int() with base 10: '' ``` Happens during ztp because, ztp sets DEBUG="" here https://github.com/sonic-net/sonic-ztp/blob/202411/src/etc/default/ztp#L6 #### How I did it Fixed the import in inotify #### How to verify it Verified by running decode-eeprom during init #### Which release branch to backport (provide reason below if selected) - [ ] 201811 - [ ] 201911 - [ ] 202006 - [ ] 202012 - [ ] 202106 - [ ] 202111 - [ ] 202205 - [ ] 202211 - [ ] 202305 #### Tested branch (Please provide the tested image version) - [ ] - [ ] #### Description for the changelog #### Link to config_db schema for YANG module changes #### A picture of a cute animal (not mandatory but encouraged) --- .../mlnx-platform-api/sonic_platform/inotify_helper.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/inotify_helper.py b/platform/mellanox/mlnx-platform-api/sonic_platform/inotify_helper.py index b3ddae9052e2..b40e9217d6a6 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/inotify_helper.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/inotify_helper.py @@ -1,5 +1,6 @@ # -# Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. +# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES +# Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,6 +19,9 @@ """Helper code for Inotify Implementation for reading file until timeout""" import os import errno +# Inotify causes an exception when DEBUG env variable is set to a non-integer convertible +# https://github.com/dsoprea/PyInotify/blob/0.2.10/inotify/adapters.py#L37 +os.environ['DEBUG'] = '0' import inotify.adapters try: