This is an automated email from the ASF dual-hosted git repository. akitouni pushed a commit to branch abderrahim/dynamic-session-elements in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit bc72d348e4f3e0598de8f7d6fed2289193ac8266 Author: Abderrahim Kitouni <[email protected]> AuthorDate: Fri Feb 6 12:10:15 2026 +0000 Correctly track session elements in dynamic build plan When using a dynamic build plan, all elements are passed to the queue to be enqueued, but are only actually enqueued when they become required. This moves the tracking of session elements to the first queue rather than just take everything that we pass to the queue (which would be all elements). This is only used in the UI AFAICT, and doesn't actually affect the build. --- src/buildstream/_scheduler/queues/queue.py | 13 +++++++++++++ src/buildstream/_stream.py | 3 +-- 2 files changed, 14 insertions(+), 2 deletions(-) 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 @@ class Queue: # 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 @@ class Queue: # 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 @@ class Stream: 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 @@ class Stream: def _enqueue_plan(self, plan, *, queue=None): queue = queue or self.queues[0] queue.enqueue(plan) - self.session_elements += plan # _run() #
