You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by ro...@apache.org on 2020/12/29 13:31:22 UTC
[buildstream] 06/06: job.py: Remove the ability to send back child
data
This is an automated email from the ASF dual-hosted git repository.
root pushed a commit to branch bschubert/merge-parent-child-job
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 3eda124967014b476118e1ff3af42f1c001478d0
Author: Benjamin Schubert <co...@benschubert.me>
AuthorDate: Tue Jul 7 17:58:50 2020 +0100
job.py: Remove the ability to send back child data
We only use this for workspace information that we can now get directly
since we run in the same process
---
src/buildstream/_scheduler/jobs/elementjob.py | 9 ---------
src/buildstream/_scheduler/jobs/job.py | 22 ----------------------
src/buildstream/_scheduler/queues/queue.py | 10 +++++-----
3 files changed, 5 insertions(+), 36 deletions(-)
diff --git a/src/buildstream/_scheduler/jobs/elementjob.py b/src/buildstream/_scheduler/jobs/elementjob.py
index 6831295..c72be40 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 88c1bb2..2361773 100644
--- a/src/buildstream/_scheduler/jobs/job.py
+++ b/src/buildstream/_scheduler/jobs/job.py
@@ -72,7 +72,6 @@ class _MessageType(FastEnum):
LOG_MESSAGE = 1
ERROR = 2
RESULT = 3
- CHILD_DATA = 4
# Job()
@@ -113,7 +112,6 @@ class Job:
#
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
@@ -388,9 +386,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)
@@ -523,20 +518,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.
@@ -595,8 +576,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)
@@ -618,7 +597,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 9e444b3..96a7016 100644
--- a/src/buildstream/_scheduler/queues/queue.py
+++ b/src/buildstream/_scheduler/queues/queue.py
@@ -268,16 +268,16 @@ class Queue:
# 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)
+ # FIXME: This should be done only for build jobs and not by proding
+ # the element, but as an explicit return value from the job
+ 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: