diff options
author | Jürg Billeter <j@bitron.ch> | 2020-12-22 18:14:16 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2020-12-22 18:14:16 +0100 |
commit | a0637f4172676d0b4b59377e79601807c2966c8a (patch) | |
tree | 0afe9bb93f9ca54e8a0dc9d69d6c8378b531885d | |
parent | 9068295c9a73197a5e49b9b83a8648850c0961af (diff) | |
download | buildstream-juerg/cache-query-job-benchmark.tar.gz |
-rw-r--r-- | src/buildstream/_stream.py | 21 |
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() # |