Renan Ribeiro 2d868323b6
Inter-Job direct messaging (#15253)
# Description

This PR implements an experimental inter-job communication model,
through direct message passing, aka "mail"ing or "dm"ing:



- `job send <id>`: Sends a message the job with the given id, the root
job has id 0. Messages are stored in the recipient's "mailbox"
- `job recv`: Returns a stored message, blocks if the mailbox is empty
- `job flush`: Clear all messages from mailbox

Additionally, messages can be sent with a numeric tag, which can then be
filtered with `mail recv --tag`.
This is useful for spawning jobs and receiving messages specifically
from those jobs.

This PR is mostly a proof of concept for how inter-job communication
could look like, so people can provide feedback and suggestions

Closes  #15199

May close #15220 since now jobs can access their own id.

# User-Facing Changes

Adds, `job id`, `job send`, `job recv` and `job flush`  commands.

# Tests + Formatting

[X] TODO:  Implement tests
[X] Consider rewriting some of the job-related tests to use this, to
make them a bit less fragile.

# After Submitting
2025-04-26 23:24:35 +08:00
..
2025-01-28 16:03:31 -06:00
2025-01-28 16:03:31 -06:00
2025-01-28 16:03:31 -06:00
2022-11-22 16:58:11 -08:00
2025-02-10 15:32:05 +08:00
2024-05-23 02:05:27 +00:00
2024-05-23 02:05:27 +00:00
2023-10-24 12:48:05 -05:00
2025-04-01 07:17:05 -05:00
2025-01-28 16:03:31 -06:00
2024-10-11 06:43:12 -05:00
2025-02-06 06:56:30 -06:00
2025-01-30 18:27:55 -06:00
2025-01-04 16:41:03 -05:00
2024-05-03 08:36:10 +08:00
2025-04-26 23:24:35 +08:00
2025-01-28 16:03:31 -06:00
2024-12-18 06:36:04 -06:00
2025-02-12 20:03:40 -08:00
2025-01-27 18:23:44 -05:00
2025-01-28 16:03:31 -06:00
2024-12-03 20:45:31 -06:00
2023-04-28 13:25:44 +02:00
2023-04-28 13:25:44 +02:00
2025-04-11 08:02:01 -05:00
2024-05-03 08:36:10 +08:00
2024-05-03 08:36:10 +08:00
2025-01-02 06:26:46 -06:00
2024-07-19 04:16:09 +00:00