Description
In action.py lines 147-154, when future.result(timeout=self.timeout) raises TimeoutError, the underlying thread continues running in the background. Python's ThreadPoolExecutor cannot cancel running threads.
Location
dotflow/core/action.py:147-154
if self.timeout:
with ThreadPoolExecutor(max_workers=1) as executor:
future = executor.submit(self._call_func, is_async, *args, **kwargs)
result = future.result(timeout=self.timeout)
Impact
Resource leak — timed-out functions keep running, consuming CPU/memory and potentially causing side effects.
Severity
Significant
Description
In
action.pylines 147-154, whenfuture.result(timeout=self.timeout)raisesTimeoutError, the underlying thread continues running in the background. Python'sThreadPoolExecutorcannot cancel running threads.Location
dotflow/core/action.py:147-154Impact
Resource leak — timed-out functions keep running, consuming CPU/memory and potentially causing side effects.
Severity
Significant