Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

A task being pulled back in because of `if-dependencies` doesn't pull its own dependencies back in if they're also `if-dependencies`

Abierto
#711 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python

Línea de trabajo

Start in src/taskgraph/optimize/base.py, especially remove_tasks and get_subgraph, and reproduce the YAML example from the issue. Trace how if-dependencies pruning orders prune_candidates and pulls tasks back; done means a task restored because of if-dependencies also restores its own if-dependencies dependencies without an optimization error.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I'm assuming that fixing #710 would also fix this one but this is where it began

Assuming the following

loader: taskgraph.loader.transform:loader

transforms:
  - taskgraph.transforms.task

task-defaults:
  worker-type: succeed

tasks:
  task-a:
    label: task-a
    optimization:
      skip-unless-changed: ["world"]
    description: task-a

  task-apush-a:
    label: task-apush-a
    dependencies:
      task-a: task-a
    if-dependencies:
      - task-a
    description: task-push-a

  task-b:
    label: task-b
    description: task-b

  final:
    label: final
    dependencies:
      task-push-a: task-apush-a
      task-b: task-b
    if-dependencies:
      - task-push-a
      - task-b
    description: final
2025-06-23 17:49:11,994 - INFO - Generating optimized task graph
2025-06-23 17:49:11,994 - DEBUG - no files found matching a pattern in `skip-unless-changed` for "task-a"
2025-06-23 17:49:11,994 - DEBUG - optimize: final kept because of never
2025-06-23 17:49:11,994 - DEBUG - optimize: task-apush-a kept because of dependent tasks
2025-06-23 17:49:11,994 - DEBUG - optimize: task-b kept because of never
2025-06-23 17:49:11,994 - DEBUG - optimize: task-a removed because of if-dependencies pruning
2025-06-23 17:49:11,994 - INFO - Removed 1 tasks by if-dependencies pruning during optimization.

...

  File "/home/eijemoz/code/taskgraph/src/taskgraph/optimize/base.py", line 110, in optimize_task_graph
    get_subgraph(
    ~~~~~~~~~~~~^
        target_task_graph,
        ^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
        decision_task_id,
        ^^^^^^^^^^^^^^^^^
    ),
    ^
  File "/home/eijemoz/code/taskgraph/src/taskgraph/optimize/base.py", line 396, in get_subgraph
    raise Exception("Optimization error: " + probs)
Exception: Optimization error: task-apush-a depends on task-a as task-a but it has been removed

If you rename task-apush-a to task-push-a then instead you run into #710 and the whole graph gets pulled in. This optimization error only happens when the label of the task getting optimized gets ordered before the other tasks in the prune_candidates set in remove_tasks.

Lenguaje dominante
Python
Estrellas
26
Forks
55
Merge medio
2 d 6 min
PR fusionados (30 d)
15

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de taskcluster/taskgraph

Todos los issues de taskcluster/taskgraph

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.