diff --git a/src/buildstream/_scheduler/queues/queue.py b/src/buildstream/_scheduler/queues/queue.py index badb5399d..b60625828 100644 --- a/src/buildstream/_scheduler/queues/queue.py +++ b/src/buildstream/_scheduler/queues/queue.py @@ -62,6 +62,7 @@ class Queue: # Resources this queues' jobs want resources = [] # type: List[int] log_to_file = True + session_elements = None def __init__(self, scheduler, *, imperative=False): @@ -172,6 +173,15 @@ def register_pending_element(self, element): # Scheduler / Pipeline facing APIs # ##################################################### + # set_session_elements() + # + # Track elements enqueued + # + # Args: + # session_elements (list): a list to put session elements + def set_session_elements(self, session_elements): + self.session_elements = session_elements + # enqueue() # # Enqueues some elements @@ -381,6 +391,9 @@ def _element_log_path(self, element): # element (Element): The Element to enqueue # def _enqueue_element(self, element): + if self.session_elements is not None: + self.session_elements.append(element) + status = self.status(element) if status == QueueStatus.SKIP: diff --git a/src/buildstream/_stream.py b/src/buildstream/_stream.py index a475bdb41..748f32ca8 100644 --- a/src/buildstream/_stream.py +++ b/src/buildstream/_stream.py @@ -1814,7 +1814,7 @@ def _add_queue(self, queue, *, track=False): if not track and not self.queues: # First non-track queue queue.set_required_element_check() - + queue.set_session_elements(self.session_elements) self.queues.append(queue) # _enqueue_plan() @@ -1828,7 +1828,6 @@ def _add_queue(self, queue, *, track=False): def _enqueue_plan(self, plan, *, queue=None): queue = queue or self.queues[0] queue.enqueue(plan) - self.session_elements += plan # _run() #