[system-health] Fix file handle leak (#10059)
- Why I did it swsscommon.ConfigDBConnector does not automatically close connection when the instance is recycled by python. So, it should not create this instance each time calling check_services. It will cause error like Failed to read from file /var/run/hw-management/led/led_status_capability - OSError(24, 'Too many open files') - How I did it Only connect DB once in init - How to verify it Manual test
This commit is contained in:
parent
2a7378b8c4
commit
b48d6d08ef
@ -51,6 +51,8 @@ class ServiceChecker(HealthChecker):
|
||||
|
||||
self.need_save_cache = False
|
||||
|
||||
self.config_db = None
|
||||
|
||||
self.load_critical_process_cache()
|
||||
|
||||
def get_expected_running_containers(self, feature_table):
|
||||
@ -248,9 +250,10 @@ class ServiceChecker(HealthChecker):
|
||||
Args:
|
||||
config (config.Config): Health checker configuration.
|
||||
"""
|
||||
config_db = swsscommon.ConfigDBConnector()
|
||||
config_db.connect()
|
||||
feature_table = config_db.get_table("FEATURE")
|
||||
if not self.config_db:
|
||||
self.config_db = swsscommon.ConfigDBConnector()
|
||||
self.config_db.connect()
|
||||
feature_table = self.config_db.get_table("FEATURE")
|
||||
expected_running_containers, self.container_feature_dict = self.get_expected_running_containers(feature_table)
|
||||
current_running_containers = self.get_current_running_containers()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user