Skip to content

Commit

Permalink
[App] Fixing Sigterm Handler causing thread lock which caused Keyboar…
Browse files Browse the repository at this point in the history
…dInterrupt to hang (#15881)

* terminating only once

* changelog
  • Loading branch information
Sherin Thomas committed Dec 1, 2022
1 parent 5864409 commit 5144160
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/lightning_app/CHANGELOG.md
Expand Up @@ -42,6 +42,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

- Fixed the `enable_spawn` method of the `WorkRunExecutor` ([#15812](https://github.com/Lightning-AI/lightning/pull/15812)

- Fixed Sigterm Handler causing thread lock which caused KeyboardInterrupt to hang ([#15881](https://github.com/Lightning-AI/lightning/pull/15881))


## [1.8.3] - 2022-11-22

Expand Down
5 changes: 4 additions & 1 deletion src/lightning_app/runners/multiprocess.py
Expand Up @@ -27,6 +27,7 @@ class MultiProcessRuntime(Runtime):
"""

backend: Union[str, Backend] = "multiprocessing"
_has_triggered_termination: bool = False

def dispatch(self, *args: Any, on_before_run: Optional[Callable] = None, **kwargs: Any):
"""Method to dispatch and run the LightningApp."""
Expand Down Expand Up @@ -111,9 +112,11 @@ def dispatch(self, *args: Any, on_before_run: Optional[Callable] = None, **kwarg
self.app._run()
except KeyboardInterrupt:
self.terminate()
self._has_triggered_termination = True
raise
finally:
self.terminate()
if not self._has_triggered_termination:
self.terminate()

def terminate(self):
if APP_SERVER_IN_CLOUD:
Expand Down

0 comments on commit 5144160

Please sign in to comment.