diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildstream/_scheduler/jobs/elementjob.py | 9 | ||||
-rw-r--r-- | src/buildstream/_scheduler/jobs/job.py | 22 | ||||
-rw-r--r-- | src/buildstream/_scheduler/queues/queue.py | 15 |
3 files changed, 7 insertions, 39 deletions
diff --git a/src/buildstream/_scheduler/jobs/elementjob.py b/src/buildstream/_scheduler/jobs/elementjob.py index 683129506..c72be4052 100644 --- a/src/buildstream/_scheduler/jobs/elementjob.py +++ b/src/buildstream/_scheduler/jobs/elementjob.py @@ -91,12 +91,3 @@ class ChildElementJob(ChildJob): # Run the action return self._action_cb(self._element) - - def child_process_data(self): - data = {} - - workspace = self._element._get_workspace() - if workspace is not None: - data["workspace"] = workspace.to_dict() - - return data diff --git a/src/buildstream/_scheduler/jobs/job.py b/src/buildstream/_scheduler/jobs/job.py index 2e8f5ca1a..b2c65b6ba 100644 --- a/src/buildstream/_scheduler/jobs/job.py +++ b/src/buildstream/_scheduler/jobs/job.py @@ -74,7 +74,6 @@ class _MessageType(FastEnum): LOG_MESSAGE = 1 ERROR = 2 RESULT = 3 - CHILD_DATA = 4 # Job() @@ -121,7 +120,6 @@ class Job: self.id = "{}-{}".format(action_name, next(Job._id_generator)) self.name = None # The name of the job, set by the job's subclass self.action_name = action_name # The action name for the Queue - self.child_data = None # Data to be sent to the main process # # Private members @@ -394,9 +392,6 @@ class Job: elif envelope.message_type is _MessageType.RESULT: assert self._result is None self._result = envelope.message - elif envelope.message_type is _MessageType.CHILD_DATA: - # If we retry a job, we assign a new value to this - self.child_data = envelope.message else: assert False, "Unhandled message type '{}': {}".format(envelope.message_type, envelope.message) @@ -527,20 +522,6 @@ class ChildJob: def child_process(self): raise ImplError("ChildJob '{kind}' does not implement child_process()".format(kind=type(self).__name__)) - # child_process_data() - # - # Abstract method to retrieve additional data that should be - # returned to the parent process. Note that the job result is - # retrieved independently. - # - # Values can later be retrieved in Job.child_data. - # - # Returns: - # (dict) A dict containing values to be reported to the main process - # - def child_process_data(self): - return {} - # child_action() # # Perform the action in the child process, this calls the action_cb. @@ -599,8 +580,6 @@ class ChildJob: sandbox=e.sandbox, ) - self._send_message(_MessageType.CHILD_DATA, self.child_process_data()) - # Report the exception to the parent (for internal testing purposes) self._child_send_error(e) @@ -622,7 +601,6 @@ class ChildJob: else: # No exception occurred in the action - self._send_message(_MessageType.CHILD_DATA, self.child_process_data()) self._child_send_result(result) elapsed = datetime.datetime.now() - timeinfo.start_time diff --git a/src/buildstream/_scheduler/queues/queue.py b/src/buildstream/_scheduler/queues/queue.py index e05d95188..38595729c 100644 --- a/src/buildstream/_scheduler/queues/queue.py +++ b/src/buildstream/_scheduler/queues/queue.py @@ -269,19 +269,18 @@ class Queue: # # Args: # element (Element): The element which completed - # job (Job): The job which completed # - def _update_workspaces(self, element, job): - workspace_dict = None - if job.child_data: - workspace_dict = job.child_data.get("workspace", None) + def _update_workspaces(self, element): + # FIXME: Does this really needs to be done for every job or only some? + # If some, we should only run it for those. + workspace = element._get_workspace() # Handle any workspace modifications now # - if workspace_dict: + if workspace: context = element._get_context() workspaces = context.get_workspaces() - if workspaces.update_workspace(element._get_full_name(), workspace_dict): + if workspaces.update_workspace(element._get_full_name(), workspace.to_dict()): try: workspaces.save_config() except BstError as e: @@ -311,7 +310,7 @@ class Queue: # Update values that need to be synchronized in the main task # before calling any queue implementation - self._update_workspaces(element, job) + self._update_workspaces(element) # Give the result of the job to the Queue implementor, # and determine if it should be considered as processed |