diff options
-rw-r--r-- | src/buildstream/_scheduler/queues/queue.py | 7 | ||||
-rw-r--r-- | src/buildstream/_stream.py | 10 |
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() |