diff --git a/testgres/node.py b/testgres/node.py index b85a62f2..41769813 100644 --- a/testgres/node.py +++ b/testgres/node.py @@ -179,6 +179,10 @@ def __init__(self, name=None, base_dir=None, port=None, conn_params: ConnectionP # Node state self.is_started = False + # Data inserter thread + self._insert_thread = None + self._stop_insert_data = threading.Event() + def __enter__(self): return self @@ -883,6 +887,8 @@ def stop(self, params=[], wait=True): "stop" ] + params # yapf: disable + self.stop_data_inserter() + execute_utility(_params, self.utils_log_file) self._maybe_stop_logger() @@ -1837,6 +1843,28 @@ def _escape_config_value(value): result += "'" return result + def start_data_inserter(self, sleep_interval=1): + self._stop_insert_data.clear() + + def _insert_loop(): + while not self._stop_insert_data.is_set(): + try: + + self.safe_psql( + "postgres", + "select txid_current()") + except QueryException: + break + time.sleep(sleep_interval) + + self._insert_thread = threading.Thread(target=_insert_loop, daemon=True) + self._insert_thread.start() + + def stop_data_inserter(self): + if self._insert_thread: + self._stop_insert_data.set() + self._insert_thread.join() + self._insert_thread = None class NodeApp: