Skip to content

Commit 9946c2c

Browse files
committed
Change error message shown when experiment is terminated by user
1 parent 3d3894a commit 9946c2c

File tree

1 file changed

+32
-14
lines changed

1 file changed

+32
-14
lines changed

src/ert/run_models/base_run_model.py

+32-14
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
@@ -568,10 +572,11 @@ async def run_monitor(
568572
logger.debug(
569573
"observed evaluation cancelled event, exit drainer"
570574
)
571-
# Allow track() to emit an EndEvent.
572-
return False
575+
raise UserCancelled(
576+
"Experiment cancelled by user during evaluation"
577+
)
573578
elif type(event) is EETerminated:
574-
logger.debug("got terminator event")
579+
logger.debug("got terminated event")
575580

576581
if not self._end_queue.empty():
577582
logger.debug("Run model canceled - during evaluation")
@@ -580,7 +585,9 @@ async def run_monitor(
580585
logger.debug(
581586
"Run model canceled - during evaluation - cancel sent"
582587
)
583-
except BaseException as e:
588+
except UserCancelled:
589+
raise
590+
except Exception as e:
584591
logger.exception(f"unexpected error: {e}")
585592
# We really don't know what happened... shut down
586593
# the thread and get out of here. The monitor has
@@ -598,7 +605,8 @@ async def run_ensemble_evaluator_async(
598605
if not self._end_queue.empty():
599606
logger.debug("Run model canceled - pre evaluation")
600607
self._end_queue.get()
601-
return []
608+
raise UserCancelled("Experiment cancelled by user in pre evaluation")
609+
602610
ee_ensemble = self._build_ensemble(run_args, ensemble.experiment_id)
603611
evaluator = EnsembleEvaluator(
604612
ee_ensemble,
@@ -619,8 +627,14 @@ async def run_ensemble_evaluator_async(
619627
if not self._end_queue.empty():
620628
logger.debug("Run model canceled - post evaluation")
621629
self._end_queue.get()
622-
await evaluator_task
623-
return []
630+
try:
631+
await evaluator_task
632+
except BaseException as e:
633+
raise Exception(
634+
"Exception occured during user initiatied termination of experiment"
635+
) from e
636+
raise UserCancelled("Experiment cancelled by user in post evaluation")
637+
624638
await evaluator_task
625639
ensemble.refresh_ensemble_state()
626640

@@ -634,10 +648,9 @@ def run_ensemble_evaluator(
634648
ensemble: Ensemble,
635649
ee_config: EvaluatorServerConfig,
636650
) -> list[int]:
637-
successful_realizations = asyncio.run(
651+
return asyncio.run(
638652
self.run_ensemble_evaluator_async(run_args, ensemble, ee_config)
639653
)
640-
return successful_realizations
641654

642655
def _build_ensemble(
643656
self,
@@ -757,11 +770,16 @@ def _evaluate_and_postprocess(
757770
"run_paths": self.run_paths,
758771
},
759772
)
760-
successful_realizations = self.run_ensemble_evaluator(
761-
run_args,
762-
ensemble,
763-
evaluator_server_config,
764-
)
773+
try:
774+
successful_realizations = self.run_ensemble_evaluator(
775+
run_args,
776+
ensemble,
777+
evaluator_server_config,
778+
)
779+
except UserCancelled:
780+
self.active_realizations = [False for _ in self.active_realizations]
781+
raise
782+
765783
starting_realizations = [real.iens for real in run_args if real.active]
766784
failed_realizations = list(
767785
set(starting_realizations) - set(successful_realizations)

0 commit comments

Comments
 (0)