commit cddf9eb9589b27b1ff1e27269062ff1c90978236
parent d3c31b9e7480b7f4592a50d6df213ee28d8192a2
Author: Julien Cristau <jcristau@mozilla.com>
Date: Thu, 9 Oct 2025 07:53:15 +0000
Bug 1993289 - use task_duplicates attribute in `retrigger` action r=taskgraph-reviewers,releng-reviewers,bhearsum
Instead of calling `create_tasks` N times, set the target task's
`task_duplicates` attribute, to let taskgraph know to make N copies at
submission time. Since `create_tasks` ends up making a copy of the
full graph and running optimizations on it each time, this saves a
significant amount of time as N gets larger.
Differential Revision: https://phabricator.services.mozilla.com/D267982
Diffstat:
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/taskcluster/gecko_taskgraph/actions/retrigger.py b/taskcluster/gecko_taskgraph/actions/retrigger.py
@@ -166,20 +166,22 @@ def retrigger_action(parameters, graph_config, input, task_group_id, task_id):
with_downstream = " (with downstream) "
times = input.get("times", 1)
- for i in range(times):
- create_tasks(
- graph_config,
- to_run,
- full_task_graph,
- label_to_taskid,
- parameters,
- decision_task_id,
- i,
- action_tag="retrigger-task",
- )
- logger.info(f"Scheduled {label}{with_downstream}(time {i + 1}/{times})")
- combine_task_graph_files(list(range(times)))
+ def modifier(task):
+ task.attributes["task_duplicates"] = times
+ return task
+
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ action_tag="retrigger-task",
+ modifier=modifier,
+ )
+ logger.info(f"Scheduled {label}{with_downstream}({times} times)")
@register_callback_action(