summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2020-12-22 18:14:16 +0100
committerJürg Billeter <j@bitron.ch>2020-12-22 18:14:16 +0100
commita0637f4172676d0b4b59377e79601807c2966c8a (patch)
tree0afe9bb93f9ca54e8a0dc9d69d6c8378b531885d
parent9068295c9a73197a5e49b9b83a8648850c0961af (diff)
downloadbuildstream-juerg/cache-query-job-benchmark.tar.gz
-rw-r--r--src/buildstream/_stream.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/buildstream/_stream.py b/src/buildstream/_stream.py
index 6c4b2d9ce..72bc9f53f 100644
--- a/src/buildstream/_stream.py
+++ b/src/buildstream/_stream.py
@@ -176,11 +176,22 @@ class Stream:
# Enqueue complete build plan as this is required to determine `buildable` status.
plan = list(self._pipeline.dependencies(elements, _Scope.ALL))
- self._scheduler.clear_queues()
- self._add_queue(CacheQueryQueue(self._scheduler, sources=sources), track=True)
- self._enqueue_plan(plan)
- self._run()
- self._scheduler.clear_queues()
+ for element in plan:
+ if not sources and element._get_cache_key(strength=_KeyStrength.WEAK):
+ element._load_artifact(pull=False)
+ if not element._can_query_cache() or not element._cached_success():
+ element._query_source_cache()
+ if not element._pull_pending():
+ element._load_artifact_done()
+ else:
+ element._query_source_cache()
+
+ if False:
+ self._scheduler.clear_queues()
+ self._add_queue(CacheQueryQueue(self._scheduler, sources=sources), track=True)
+ self._enqueue_plan(plan)
+ self._run()
+ self._scheduler.clear_queues()
# shell()
#