diff --git a/src/ert/ensemble_evaluator/evaluator.py b/src/ert/ensemble_evaluator/evaluator.py index 3696660524f..5a5a093bd60 100644 --- a/src/ert/ensemble_evaluator/evaluator.py +++ b/src/ert/ensemble_evaluator/evaluator.py @@ -334,7 +334,8 @@ def _signal_cancel(self) -> None: if self._ensemble.cancellable: logger.debug("Cancelling current ensemble") assert self._loop is not None - self._loop.run_in_executor(None, self._ensemble.cancel) + if self._loop.is_running(): + self._loop.run_in_executor(None, self._ensemble.cancel) else: logger.debug("Stopping current ensemble") self.stop() diff --git a/src/ert/gui/simulation/run_dialog.py b/src/ert/gui/simulation/run_dialog.py index dee4e941a0b..9c1b758ba26 100644 --- a/src/ert/gui/simulation/run_dialog.py +++ b/src/ert/gui/simulation/run_dialog.py @@ -363,7 +363,7 @@ def run() -> None: restart=restart, ) - simulation_thread = ErtThread( + self.simulation_thread = ErtThread( name="ert_gui_simulation_thread", target=run, daemon=True ) @@ -381,7 +381,7 @@ def run() -> None: self._ticker.start(self._RUN_TIME_POLL_RATE) self._worker_thread.start() - simulation_thread.start() + self.simulation_thread.start() self._notifier.set_is_simulation_running(True) def killJobs(self) -> QMessageBox.StandardButton: diff --git a/src/ert/run_models/base_run_model.py b/src/ert/run_models/base_run_model.py index a9f00f059f6..a24f68a2244 100644 --- a/src/ert/run_models/base_run_model.py +++ b/src/ert/run_models/base_run_model.py @@ -503,12 +503,14 @@ async def run_monitor( EESnapshotUpdate, }: event = cast(EESnapshot | EESnapshotUpdate, event) - await asyncio.get_running_loop().run_in_executor( - None, - self.send_snapshot_event, - event, - iteration, - ) + if asyncio.get_running_loop().is_running(): + await asyncio.get_running_loop().run_in_executor( + None, + self.send_snapshot_event, + event, + iteration, + ) + if event.snapshot.get(STATUS) in { ENSEMBLE_STATE_STOPPED, ENSEMBLE_STATE_FAILED,