Skip to content

Commit 708029e

Browse files
authored
Merge pull request flux-framework#415 from garlick/rfc42_updates
rfc42: note response requirements for a successful exec stream, plus cleanup
2 parents f2ea6c3 + 92f3176 commit 708029e

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

spec_42.rst

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ Related Standards
3434
Background
3535
**********
3636

37-
The subprocess server protocol is implemented in two distinct Flux
38-
components:
37+
The subprocess server protocol is implemented in three Flux components:
3938

4039
.. list-table::
4140

@@ -51,6 +50,10 @@ components:
5150
- :program:`sdexec`
5251
- If systemd support is configured
5352

53+
* - Flux shell
54+
- :program:`UID-shell-JOBID.rexec`
55+
- Only available to the job owner.
56+
5457
The primary use cases are:
5558

5659
#. The job execution service runs job shells on job nodes.
@@ -59,12 +62,14 @@ The primary use cases are:
5962

6063
#. The instance owner runs arbitrary processes with :program:`flux exec`.
6164

65+
#. Tool launch such as parallel debugger daemons using :program:`flux exec`.
66+
6267
In a multi-user Flux instance where a user transition is necessary in order
6368
for the instance owner to run commands with the credentials of a guest user,
64-
the subprocess server delegates this to the IMP. On its own, the subprocess
65-
server can only run jobs with the credentials of the process it is embedded
66-
within (the broker, for example). For more detail, refer to
67-
:doc:`RFC 15 <spec_15>`.
69+
the subprocess server must be instructed to execute tasks using the IMP. On
70+
its own, the subprocess server can only run jobs with the credentials of the
71+
process it is embedded within (the broker, for example). For more detail,
72+
refer to :doc:`RFC 15 <spec_15>`.
6873

6974
Goals
7075
*****
@@ -177,7 +182,12 @@ Several response types are distinguished by the type key:
177182
.. object:: exec error response
178183

179184
The :program:`exec` response stream SHALL be terminated by an error
180-
response per RFC 6, with ENODATA (61) indicating success.
185+
response per RFC 6, with ENODATA (61) indicating success. The server MUST
186+
NOT terminate the stream with ENODATA without first returning the
187+
:program:`exec started` response, :program:`exec finished` response, and
188+
:program:`exec output` responses with the EOF flag set for each open channel.
189+
The client MAY consider it a protocol error if one of those responses is
190+
missing and an ENODATA response is received.
181191

182192
Failure of the remote command SHALL be indicated in finished response
183193
and SHALL NOT result in an error response. Other errors, such as an

0 commit comments

Comments
 (0)