Bug 1405570 - Never remove tasks with an index-search optimization. r?dustin
--- a/taskcluster/taskgraph/optimize.py
+++ b/taskcluster/taskgraph/optimize.py
@@ -289,19 +289,26 @@ class OnlyIfDependenciesRun(Optimization
# should_replace_task is called, then a task has no un-optimized
# dependencies and can be removed (indicated by returning True)
def should_replace_task(self, task, params, arg):
return True
class IndexSearch(OptimizationStrategy):
- def should_remove_task(self, task, params, index_paths):
- "If this task has no dependencies, don't run it.."
- return True
+
+ # A task with no dependencies remaining after optimization will be replaced
+ # if artifacts exist for the corresponding index_paths.
+ # Otherwise, we're in one of the following cases:
+ # - the task has un-optimized dependencies
+ # - the artifacts have expired
+ # - some changes altered the index_paths and new artifacts need to be
+ # created.
+ # In every of those cases, we need to run the task to create or refresh
+ # artifacts.
def should_replace_task(self, task, params, index_paths):
"Look for a task with one of the given index paths"
for index_path in index_paths:
try:
task_id = find_task_id(
index_path,
use_proxy=bool(os.environ.get('TASK_ID')))