commit 0f33cb18493e69813f8683ccc58cf5c6144ee411
parent ec25572b4fd4233c39a7b30e476dc816fe5764a6
Author: KS <kshampur@mozilla.com>
Date: Tue, 2 Dec 2025 17:54:11 +0000
Bug 1973081 - Prevent non-fx application performance tests from running in backfills. r=perftest-reviewers,taskgraph-reviewers,releng-reviewers,bhearsum,fbilt
This patch adds some logic that will ensure non-firefox applications are
*not* triggered in backfills. This can be particularly problematic if
for example a macOS CaR task gets picked up, which would use the limited
hardware for a long time and block other tasks. Additionally, we
generally only should be looking at firefox tasks when backfilling
raptor for looking for regressions since other browser applications are
outside of our control.
Differential Revision: https://phabricator.services.mozilla.com/D274215
Diffstat:
1 file changed, 29 insertions(+), 4 deletions(-)
diff --git a/taskcluster/gecko_taskgraph/actions/backfill.py b/taskcluster/gecko_taskgraph/actions/backfill.py
@@ -26,6 +26,14 @@ logger = logging.getLogger(__name__)
SYMBOL_REGEX = re.compile("^(.*)-[a-z0-9]{11}-bk$")
GROUP_SYMBOL_REGEX = re.compile("^(.*)-bk$")
+# Allowed browser applications for performance test backfills
+# Only Firefox and Geckoview should be backfilled for regression detection
+ALLOWED_PERFTEST_BACKFILL_APPS = (
+ "firefox",
+ "geckoview",
+ "fenix",
+)
+
def input_for_support_action(revision, task, times=1, retrigger=True):
"""Generate input for action to be scheduled.
@@ -114,6 +122,19 @@ def backfill_action(parameters, graph_config, input, task_group_id, task_id):
https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/create-actions.html#testing-actions
"""
task = get_task_definition(task_id)
+
+ # Only backfill allowed browser applications for performance tests
+ task_label = task.get("metadata", {}).get("name", "")
+ is_browsertime = "browsertime" in task_label
+
+ if is_browsertime and not any(
+ app in task_label for app in ALLOWED_PERFTEST_BACKFILL_APPS
+ ):
+ logger.warning(
+ f"Skipping backfill for non-allowed raptor-browsertime task: {task_label}"
+ )
+ return
+
pushes = get_pushes_from_params_input(parameters, input)
failed = False
input_for_action = input_for_support_action(
@@ -392,13 +413,17 @@ def filter_raptor_jobs(full_task_graph, label_to_taskid, project):
exceptions = ("live", "profiling", "youtube-playback")
if any(e in entry.attributes.get("raptor_try_name", "") for e in exceptions):
continue
- if "firefox" in entry.attributes.get(
- "raptor_try_name", ""
- ) and entry.attributes.get("test_platform", "").endswith("64-shippable-qr/opt"):
+ # Only run on allowed browser applications.
+ raptor_try_name = entry.attributes.get("raptor_try_name", "")
+ if not any(app in raptor_try_name for app in ALLOWED_PERFTEST_BACKFILL_APPS):
+ continue
+ if "firefox" in raptor_try_name and entry.attributes.get(
+ "test_platform", ""
+ ).endswith("64-shippable-qr/opt"):
# add the browsertime test
if label not in label_to_taskid:
to_run.append(label)
- if "geckoview" in entry.attributes.get("raptor_try_name", ""):
+ if "geckoview" in raptor_try_name:
# add the pageload test
if label not in label_to_taskid:
to_run.append(label)