mesh-catalog #553's verdict stayed running after its step mvsgthyjed5786 passed on shanks at 19:09:31Z: the watch of that one step key, opened at 18:46:05Z, heard neither its start nor its end and never closed, so the wait had no bound running and nothing would ever judge it. - HeardEnds stands between the asker and each ask's watch: at every step end of the same build module (one watch per steps state), at a reconnect, the asks waited on read their keys now and are judged; a watch that closes is opened again, at most 3 times. - A step the build module's next process ended (RestartReason, a delivery replacing it) counts as a lost ask: asked again under the claim, at most LostAskTries, then failed as not heard, judged again when the nodes change. - checker_ask_again {group, why} ends a running verdict as asked again by hand; the checker hears its verdicts, ends the wait and claims it anew. Refused while a step of its pull requests runs, or for a verdict that is not running. - checker_status names such checks under lost, and each step's what. Tests: one table replaces the given-up test (rows for given up, replaced, deaf and nudged, deaf and asked by hand); counts unchanged (147 unit, 10 integration in the checker).
119 lines
2.7 KiB
JSON
119 lines
2.7 KiB
JSON
{
|
|
"module": "mesh-delivery-checker",
|
|
"version": "1",
|
|
"slug": "checker",
|
|
"consumes": [
|
|
"mesh-build-go.toolchain.reported",
|
|
"mesh-build-node.toolchain.reported"
|
|
],
|
|
"streams": [
|
|
{ "name": "checks", "events": ["preview.**", "owed.**"] }
|
|
],
|
|
"state": [
|
|
{ "name": "hearing", "history": 1 },
|
|
{ "name": "kept", "history": 1 },
|
|
{ "name": "owed", "history": 5 },
|
|
{ "name": "previews", "history": 5 },
|
|
{ "name": "tries", "history": 1 },
|
|
{ "name": "verdicts", "history": 5 }
|
|
],
|
|
"reads": [
|
|
"mesh-build-go.steps",
|
|
"mesh-build-go.toolchains",
|
|
"mesh-build-node.steps",
|
|
"mesh-build-node.toolchains",
|
|
"mesh-controller.assignments",
|
|
"mesh-delivery-assigner.compositions",
|
|
"mesh-delivery-builder.builds",
|
|
"mesh-delivery-gate.source",
|
|
"mesh-delivery-gate.turns",
|
|
"mesh-delivery-indexer.candidates",
|
|
"mesh-delivery-indexer.manifests",
|
|
"mesh-delivery-indexer.modules",
|
|
"mesh-delivery-watchman.presence",
|
|
"node-engine.have"
|
|
],
|
|
"uses": [
|
|
"node-build-go",
|
|
"node-build-node"
|
|
],
|
|
"tools": [
|
|
"checker_ask_again",
|
|
"checker_kept",
|
|
"checker_previews",
|
|
"checker_pull",
|
|
"checker_status",
|
|
"checker_try",
|
|
"checker_try_end",
|
|
"checker_try_read",
|
|
"checker_verdicts"
|
|
],
|
|
"invokes": [
|
|
"gitea.gitea_commits",
|
|
"gitea.gitea_compare",
|
|
"gitea.gitea_get_file",
|
|
"gitea.gitea_list_branches"
|
|
],
|
|
|
|
"own-secrets": {
|
|
"broker": "${dir:state}/broker"
|
|
},
|
|
"secrets-owner": "mesh-delivery-checker",
|
|
"resources": [
|
|
{
|
|
"id": "account",
|
|
"type": "user",
|
|
"name": "mesh-delivery-checker",
|
|
"shell": "/usr/bin/nologin",
|
|
"home": "/var/lib/mesh-delivery-checker"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "mesh-delivery-checker",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "checker",
|
|
"type": "process",
|
|
"name": "mesh-delivery-checker",
|
|
"artifact": "program",
|
|
"run": [
|
|
"./mesh-delivery-checker"
|
|
],
|
|
"env": {
|
|
"MESH_BROKER_FILE": "${dir:state}/broker"
|
|
},
|
|
"user": "mesh-delivery-checker",
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "program",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-checker",
|
|
"binary": "mesh-delivery-checker"
|
|
},
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-checker-tools",
|
|
"binary": "mesh-delivery-checker-tools",
|
|
"loads": [
|
|
"mesh-delivery-checker-tools"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|