summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2020-05-12 19:16:21 +0200
committerWilliam Salmon <will.salmon@codethink.co.uk>2020-05-19 14:22:19 +0100
commitd51efc68943d35ebc1dd9da0de633fae46c19188 (patch)
tree8e945dc68d2a27ef61bba8cb82ade3083c87aedc
parent49ba847016cf434d92200b86a6a1c7ced9d8f119 (diff)
downloadbuildstream-juerg/dynamic-plan.tar.gz
Revert "Simplify queue management"juerg/dynamic-plan
This reverts commit aa25f6fcf49f0015fae34dfd79b4626a816bf886.
-rw-r--r--src/buildstream/_scheduler/queues/queue.py7
-rw-r--r--src/buildstream/_stream.py10
2 files changed, 14 insertions, 3 deletions
diff --git a/src/buildstream/_scheduler/queues/queue.py b/src/buildstream/_scheduler/queues/queue.py
index 39b7af4ce..986ac6c0a 100644
--- a/src/buildstream/_scheduler/queues/queue.py
+++ b/src/buildstream/_scheduler/queues/queue.py
@@ -241,6 +241,13 @@ class Queue:
for element in ready
]
+ # set_required_element_check()
+ #
+ # This ensures that, for the first non-track queue, we must check
+ # whether elements are required before enqueuing them
+ def set_required_element_check(self):
+ self._required_element_check = True
+
# any_failed_elements()
#
# Returns whether any elements in this queue have failed their jobs
diff --git a/src/buildstream/_stream.py b/src/buildstream/_stream.py
index bba3831c3..dc91db6b7 100644
--- a/src/buildstream/_stream.py
+++ b/src/buildstream/_stream.py
@@ -371,8 +371,8 @@ class Stream:
self._scheduler.clear_queues()
track_queue = TrackQueue(self._scheduler)
- self._add_queue(track_queue)
- self._enqueue_plan(elements)
+ self._add_queue(track_queue, track=True)
+ self._enqueue_plan(elements, queue=track_queue)
self._run()
# pull()
@@ -1308,7 +1308,11 @@ class Stream:
# Args:
# queue (Queue): Queue to add to the pipeline
#
- def _add_queue(self, queue):
+ def _add_queue(self, queue, *, track=False):
+ if not track and not self.queues:
+ # First non-track queue
+ queue.set_required_element_check()
+
self.queues.append(queue)
# _enqueue_plan()