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
$ 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
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.