summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildstream/_scheduler/jobs/elementjob.py9
-rw-r--r--src/buildstream/_scheduler/jobs/job.py22
-rw-r--r--src/buildstream/_scheduler/queues/queue.py15
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