Skip to content

Commit 0c091e9

Browse files
committed
fix task expire ... [skip ci]
1 parent 8181ecf commit 0c091e9

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

cylc/flow/task_pool.py

+17-10
Original file line numberDiff line numberDiff line change
@@ -1654,8 +1654,14 @@ def _set_outputs(self, point, taskdef, outputs, flow_nums, flow_wait):
16541654

16551655
# Try to spawn children of the outputs.
16561656
for msg in good:
1657+
if msg == TASK_OUTPUT_EXPIRED:
1658+
# not caused by task messages
1659+
self._expire_task(itask)
1660+
self.spawn_on_output(itask, expired) ## TODO CONTINUE FROM pr 5412
1661+
else:
1662+
self.task_events_mgr.process_message(itask, logging.INFO, msg)
1663+
# TODO remove this - just log the actual spawning events
16571664
LOG.info(f"[{itask}] Forced spawning on {msg}")
1658-
self.task_events_mgr.process_message(itask, logging.INFO, msg)
16591665

16601666
def _set_prereqs(self, point, taskdef, prereqs, flow_nums, flow_wait):
16611667
"""Set given prerequisites of a target task.
@@ -1897,18 +1903,19 @@ def _set_expired_task(self, itask):
18971903
itask.get_point_as_seconds() +
18981904
itask.get_offset_as_seconds(itask.tdef.expiration_offset))
18991905
if time() > itask.expire_time:
1900-
msg = 'Task expired (skipping job).'
1901-
LOG.warning(f"[{itask}] {msg}")
1902-
self.task_events_mgr.setup_event_handlers(itask, "expired", msg)
1903-
# TODO succeeded and expired states are useless due to immediate
1904-
# removal under all circumstances (unhandled failed is still used).
1905-
if itask.state_reset(TASK_STATUS_EXPIRED, is_held=False):
1906-
self.data_store_mgr.delta_task_state(itask)
1907-
self.data_store_mgr.delta_task_held(itask)
1908-
self.remove(itask, 'expired')
1906+
self._expire_task(itask)
19091907
return True
19101908
return False
19111909

1910+
def _expire_task(self, itask):
1911+
msg = 'Task expired (skipping job).'
1912+
LOG.warning(f"[{itask}] {msg}")
1913+
self.task_events_mgr.setup_event_handlers(itask, "expired", msg)
1914+
if itask.state_reset(TASK_STATUS_EXPIRED, is_held=False):
1915+
self.data_store_mgr.delta_task_state(itask)
1916+
self.data_store_mgr.delta_task_held(itask)
1917+
self.remove(itask, 'expired')
1918+
19121919
def task_succeeded(self, id_):
19131920
"""Return True if task with id_ is in the succeeded state."""
19141921
return any(

0 commit comments

Comments
 (0)