0.1.14: the provider loop says a consumer it keeps failing on the bus, and its recovery (hq ADR 0224, issue 272)
mesh/merge-gate head d49d3a14d82a merged into trunk c1ae30b0a2c8 — pass: builds mesh-sdk, sent nowhere; no bus step; every machine composes with the change…
mesh/repo-check head d49d3a14d82a merged into trunk c1ae30b0a2c8 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
mesh/delivery delivered
mesh/merge-gate head d49d3a14d82a merged into trunk c1ae30b0a2c8 — pass: builds mesh-sdk, sent nowhere; no bus step; every machine composes with the change…
mesh/repo-check head d49d3a14d82a merged into trunk c1ae30b0a2c8 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
mesh/delivery delivered
No provider on runProvisioner passed announce, and the loop had no standing per consumer, so the object store, the SQL and document stores, the mail server and the others failed their consumers in their journals alone. The loop now keeps the Go copy's standing (failing after five minutes, again every fifteen, recovered on success, when unasked or retired, and on the first success since start) and says it through the SDK's emit unless given another announce.
This commit is contained in:
@@ -39,11 +39,21 @@ never called to retire**; it is the delete of an adapter without `delete`, reach
|
||||
person's `provisioner_delete`. A stable set of more than 3, or more than half of those held where more
|
||||
than one is held, is not retired without a person: the provider waits for
|
||||
`provisioner_retire_approve` or `provisioner_retire_reject`, and says `provisioner.retirement`
|
||||
(`waiting`) through the `announce` option. Asked for again, a retired consumer is created — re-enabled
|
||||
(`waiting`). Asked for again, a retired consumer is created — re-enabled
|
||||
— at once. Given `module`, the four tools (`provisioner_retirement`, `provisioner_retire_approve`,
|
||||
`provisioner_retire_reject`, `provisioner_delete`) are registered for it; `provisionerTools(handle)`
|
||||
builds them otherwise. Additions and changes are never delayed.
|
||||
|
||||
**A provider that keeps failing a consumer says so on the bus** (novox/hq ADR 0224). A consumer whose
|
||||
create, check (`holds`) or secret has failed for five minutes without one success between
|
||||
(`failingAfterMs`) is announced `provisioner.failing` — the consumer, its machine, the class of error
|
||||
(`credentials-rejected`, `unreachable`, `secret-unreadable`, `refused`; an adapter's `classify` is
|
||||
believed over the words), the error with the password removed, since when and how many attempts — and
|
||||
again every fifteen minutes while it lasts. The first success after it is `provisioner.recovered`, as is
|
||||
a consumer no longer asked for or retired, and the first success for each consumer since the process
|
||||
started. Every event goes through the `announce` option, which defaults to the SDK's `emit`: a provider
|
||||
says them without asking, and a failed publish is said in its journal, never failing the act.
|
||||
|
||||
### `tools` — the tool-serving harness
|
||||
`registerModuleTools`, the `ToolDefinition` type, and the registry/worker that loads a module's
|
||||
tools and exposes them through the mesh's command surface. *How* a tool is declared and served is
|
||||
|
||||
Reference in New Issue
Block a user