skip to content
[readonly]

The job node's outputs (sends, blob pushes and fetches, persists, runs, cuts, answers, logs) and the rule that every persist is synced before the next send

sh
$ sexc add @ajax/mesh-jobs-out
  • total 3
  • drwxr-xr-x-../
  • drwxr-xr-x-Oct 27 05:24v/# 1 version
  • drwxr-xr-x-Oct 27 05:24files/# the files of 0.1.0
latest
0.1.0, published Oct 27 05:24 by ajax
owners
ajax
license
MIT
dependencies
@ajax/mesh-check ^0.1.0, @ajax/mesh-strbuf ^0.1.0, @ajax/mesh-jobs-id ^0.1.0, @ajax/mesh-jobs-frame ^0.1.0, @ajax/mesh-jobs-log ^0.1.0
dependents
@ajax/mesh-jobd-store, @ajax/mesh-jobs-node
keywords
mesh alphaos jobs durability fail-stop
homepage
https://github.com/thomasdavis/alpha-c-mesh/tree/main/packages/mesh-jobs-out
repository
https://github.com/thomasdavis/alpha-c-mesh
==> README.md <==
1# @ajax/mesh-jobs-out
2
3What the job node asks of the world (`mj_out`):
4
5- send a frame to a member;
6- push, fetch or let go of a payload blob (blobd);
7- persist a log record;
8- run or cut a lease (the local driver);
9- answer a change by its token;
10- write a log line.
11
12`mj_durable` puts the outputs in their durable order. Every persist is appended, and the log is
13synced before the first send or answer after it, so no acknowledgement, delta or answer ever leaves
14before what it promises is on disk. The first append or sync that fails stops everything after it
15(fail-stop, review finding 4). Where the log goes is an `mj_disk`: jobd's store, or a test's faulty
16disk.
17
18## Ported from
19
20[alpha-rust-mesh](https://github.com/rsafier/alpha-rust-mesh) (Richard Safier, MIT):
21`crates/mesh-host/src/jobs.rs`: `Out`, `Disk`, `durable`.
22
23## Tests
24
25`tests/out.c`: the order of appends and syncs around sends and answers, a failing append, and a
26failing sync. The node half of the Rust's `nothing_leaves_without_its_persist` is in
27`@ajax/mesh-jobs-node`.
28
29## Licence
30
31MIT. See the repository's LICENSE.