From 2af89ec90f43285a082477a7b06cb24df36b6e80 Mon Sep 17 00:00:00 2001 From: Tommy Tseng Date: Tue, 7 May 2024 10:54:30 +0800 Subject: [PATCH] - What I did In a dynamic environment, it is possible that some of the keys may disappear between invoking keys() and get_all(). Prevent unnecessary timeout of blocking get_all(). Add more snmp no blocking fix for sonic-net#255 - How I did it Modify the blocking mode from True to False - How to verify it Use server to send with 1000 requests/second. Keep test for weekend and it do not happen. --- src/sonic_ax_impl/mibs/__init__.py | 4 ++-- src/sonic_ax_impl/mibs/ieee802_1ab.py | 2 +- src/sonic_ax_impl/mibs/ietf/rfc1213.py | 2 +- src/sonic_ax_impl/mibs/ietf/rfc2863.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sonic_ax_impl/mibs/__init__.py b/src/sonic_ax_impl/mibs/__init__.py index 35e093ac3..4ac473581 100644 --- a/src/sonic_ax_impl/mibs/__init__.py +++ b/src/sonic_ax_impl/mibs/__init__.py @@ -260,7 +260,7 @@ def init_mgmt_interface_tables(db_conn): if_alias_map = dict() for if_name in oid_name_map.values(): - if_entry = db_conn.get_all(CONFIG_DB, mgmt_if_entry_table(if_name), blocking=True) + if_entry = db_conn.get_all(CONFIG_DB, mgmt_if_entry_table(if_name), blocking=False) if_alias_map[if_name] = if_entry.get('alias', if_name) logger.debug("Management alias map:\n" + pprint.pformat(if_alias_map, indent=2)) @@ -319,7 +319,7 @@ def init_sync_d_interface_tables(db_conn): if_alias_map = dict() for if_name in if_name_map: - if_entry = db_conn.get_all(APPL_DB, if_entry_table(if_name), blocking=True) + if_entry = db_conn.get_all(APPL_DB, if_entry_table(if_name), blocking=False) if_alias_map[if_name] = if_entry.get('alias', if_name) logger.debug("Chassis name map:\n" + pprint.pformat(if_alias_map, indent=2)) diff --git a/src/sonic_ax_impl/mibs/ieee802_1ab.py b/src/sonic_ax_impl/mibs/ieee802_1ab.py index 16bad50b1..80860f9b7 100644 --- a/src/sonic_ax_impl/mibs/ieee802_1ab.py +++ b/src/sonic_ax_impl/mibs/ieee802_1ab.py @@ -212,7 +212,7 @@ def _get_if_entry(self, if_name): else: return None - return Namespace.dbs_get_all(self.db_conn, db, if_table, blocking=True) + return Namespace.dbs_get_all(self.db_conn, db, if_table, blocking=False) def update_interface_data(self, if_name): """ diff --git a/src/sonic_ax_impl/mibs/ietf/rfc1213.py b/src/sonic_ax_impl/mibs/ietf/rfc1213.py index e17c0c0a8..d8ffd60d2 100644 --- a/src/sonic_ax_impl/mibs/ietf/rfc1213.py +++ b/src/sonic_ax_impl/mibs/ietf/rfc1213.py @@ -470,7 +470,7 @@ def _get_if_entry(self, sub_id): else: return None - return Namespace.dbs_get_all(self.db_conn, db, if_table, blocking=True) + return Namespace.dbs_get_all(self.db_conn, db, if_table, blocking=False) def _get_if_entry_state_db(self, sub_id): """ diff --git a/src/sonic_ax_impl/mibs/ietf/rfc2863.py b/src/sonic_ax_impl/mibs/ietf/rfc2863.py index e5a41a0b8..7b7a061e8 100644 --- a/src/sonic_ax_impl/mibs/ietf/rfc2863.py +++ b/src/sonic_ax_impl/mibs/ietf/rfc2863.py @@ -287,7 +287,7 @@ def _get_if_entry(self, oid): else: return None - return Namespace.dbs_get_all(self.db_conn, db, if_table, blocking=True) + return Namespace.dbs_get_all(self.db_conn, db, if_table, blocking=False) def get_high_speed(self, sub_id): """