[fix] ResultContainer: use self._lock and self._closed for all properties

Close #3474
This commit is contained in:
Alexandre Flament 2024-05-18 21:16:09 +00:00 committed by Markus Heiser
parent 68365c8c1d
commit 75e4b65127
1 changed files with 28 additions and 11 deletions

View File

@ -430,21 +430,38 @@ class ResultContainer:
"""Returns the average of results number, returns zero if the average """Returns the average of results number, returns zero if the average
result number is smaller than the actual result count.""" result number is smaller than the actual result count."""
resultnum_sum = sum(self._number_of_results) with self._lock:
if not resultnum_sum or not self._number_of_results: if not self._closed:
return 0 logger.error("call to ResultContainer.number_of_results before ResultContainer.close")
return 0
average = int(resultnum_sum / len(self._number_of_results)) resultnum_sum = sum(self._number_of_results)
if average < self.results_length(): if not resultnum_sum or not self._number_of_results:
average = 0 return 0
return average
average = int(resultnum_sum / len(self._number_of_results))
if average < self.results_length():
average = 0
return average
def add_unresponsive_engine(self, engine_name: str, error_type: str, suspended: bool = False): def add_unresponsive_engine(self, engine_name: str, error_type: str, suspended: bool = False):
if engines[engine_name].display_error_messages: with self._lock:
self.unresponsive_engines.add(UnresponsiveEngine(engine_name, error_type, suspended)) if self._closed:
logger.error("call to ResultContainer.add_unresponsive_engine after ResultContainer.close")
return
if engines[engine_name].display_error_messages:
self.unresponsive_engines.add(UnresponsiveEngine(engine_name, error_type, suspended))
def add_timing(self, engine_name: str, engine_time: float, page_load_time: float): def add_timing(self, engine_name: str, engine_time: float, page_load_time: float):
self.timings.append(Timing(engine_name, total=engine_time, load=page_load_time)) with self._lock:
if self._closed:
logger.error("call to ResultContainer.add_timing after ResultContainer.close")
return
self.timings.append(Timing(engine_name, total=engine_time, load=page_load_time))
def get_timings(self): def get_timings(self):
return self.timings with self._lock:
if not self._closed:
logger.error("call to ResultContainer.get_timings before ResultContainer.close")
return []
return self.timings