Skip to content

Commit c0158cd

Browse files
committed
Change error message shown when experiment is terminated by user
1 parent 27a0895 commit c0158cd

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

src/ert/run_models/base_run_model.py

+19-9
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ def delete_runpath(run_path: str) -> None:
9494
shutil.rmtree(run_path)
9595

9696

97+
class _UserCancelled(Exception):
98+
pass
99+
100+
97101
class _LogAggregration(logging.Handler):
98102
def __init__(self, messages: MutableSequence[str]) -> None:
99103
self.messages = messages
@@ -571,7 +575,7 @@ async def run_monitor(
571575
# Allow track() to emit an EndEvent.
572576
return False
573577
elif type(event) is EETerminated:
574-
logger.debug("got terminator event")
578+
logger.debug("got terminated event")
575579

576580
if not self._end_queue.empty():
577581
logger.debug("Run model canceled - during evaluation")
@@ -594,11 +598,12 @@ async def run_ensemble_evaluator_async(
594598
run_args: list[RunArg],
595599
ensemble: Ensemble,
596600
ee_config: EvaluatorServerConfig,
597-
) -> list[int]:
601+
) -> list[int] | _UserCancelled:
598602
if not self._end_queue.empty():
599603
logger.debug("Run model canceled - pre evaluation")
600604
self._end_queue.get()
601-
return []
605+
return _UserCancelled()
606+
602607
ee_ensemble = self._build_ensemble(run_args, ensemble.experiment_id)
603608
evaluator = EnsembleEvaluator(
604609
ee_ensemble,
@@ -610,7 +615,7 @@ async def run_ensemble_evaluator_async(
610615
await evaluator._server_started
611616
if not (await self.run_monitor(ee_config, ensemble.iteration)):
612617
await evaluator_task
613-
return []
618+
return _UserCancelled()
614619

615620
logger.debug("observed that model was finished, waiting tasks completion...")
616621
# The model has finished, we indicate this by sending a DONE
@@ -620,7 +625,8 @@ async def run_ensemble_evaluator_async(
620625
logger.debug("Run model canceled - post evaluation")
621626
self._end_queue.get()
622627
await evaluator_task
623-
return []
628+
return _UserCancelled()
629+
624630
await evaluator_task
625631
ensemble.refresh_ensemble_state()
626632

@@ -633,11 +639,10 @@ def run_ensemble_evaluator(
633639
run_args: list[RunArg],
634640
ensemble: Ensemble,
635641
ee_config: EvaluatorServerConfig,
636-
) -> list[int]:
637-
successful_realizations = asyncio.run(
642+
) -> list[int] | _UserCancelled:
643+
return asyncio.run(
638644
self.run_ensemble_evaluator_async(run_args, ensemble, ee_config)
639645
)
640-
return successful_realizations
641646

642647
def _build_ensemble(
643648
self,
@@ -757,11 +762,16 @@ def _evaluate_and_postprocess(
757762
"run_paths": self.run_paths,
758763
},
759764
)
760-
successful_realizations = self.run_ensemble_evaluator(
765+
result = self.run_ensemble_evaluator(
761766
run_args,
762767
ensemble,
763768
evaluator_server_config,
764769
)
770+
if type(result) is _UserCancelled:
771+
self.active_realizations = [False for _ in self.active_realizations]
772+
raise _UserCancelled("Experiment cancelled by user")
773+
successful_realizations = cast(list[int], result)
774+
765775
starting_realizations = [real.iens for real in run_args if real.active]
766776
failed_realizations = list(
767777
set(starting_realizations) - set(successful_realizations)

0 commit comments

Comments
 (0)