8080calls for too long.
8181"""
8282from concurrent .futures import Future , ThreadPoolExecutor
83+ from copy import deepcopy
8384from datetime import datetime
8485from functools import partial
8586import sys
@@ -113,6 +114,8 @@ def __init__(self) -> None:
113114 self ._interrupted = False
114115 self ._setup = False
115116 self .triggered_by = None
117+ self .triggered_by_run = None
118+ self .was_triggered = False
116119
117120 @property
118121 def interrupted (self ) -> bool :
@@ -192,9 +195,11 @@ def run(self, experiment: Experiment, probes: List[Probe],
192195 # this allows the experiment to block until these are passed
193196 self .now_all_done .wait ()
194197
195- def interrupt_now (self , triggered_by : str ) -> None :
198+ def interrupt_now (self , triggered_by : str , run : Run ) -> None :
196199 with self ._lock :
197200 self .triggered_by = triggered_by
201+ self .triggered_by_run = deepcopy (run )
202+ self .was_triggered = True
198203
199204 self .wait_for_interruption .set ()
200205
@@ -205,7 +210,7 @@ def _wait_interruption(self) -> None:
205210 if experiment_finished .is_set ():
206211 return None
207212
208- if not self .triggered_by :
213+ if not self .was_triggered :
209214 return None
210215
211216 with self ._lock :
@@ -335,7 +340,7 @@ def interrupt_experiment_on_unhealthy_probe(guard: Guardian, probe: Probe,
335340 tolerance , run ["output" ], configuration = configuration ,
336341 secrets = secrets )
337342 if not checked :
338- guard .interrupt_now (probe ["name" ])
343+ guard .interrupt_now (probe ["name" ], run )
339344
340345
341346def execute_activity (experiment : Experiment , probe : Probe ,
0 commit comments