The indexer wrote mesh-catalog's merge 9cdac09a back over the later 69056948, rolling kernel and mesh-build-image back on the nodes: a merged message's commit was written whatever the held one was. Before writing or deleting a module's value, the indexer now asks the forge whether the merge contains the held commit, keeps the held value when it does not and says so, and leaves the message for redelivery when the forge cannot say. Each applied merged message is said in one line with the modules written. No tool showed what the indexer heard of FORGE nor a modules key's history with times, so the cause could not be proven: the indexer now records each FORGE message it handles (sequence, deliveries, times, commit, outcome) in its state heard, read by indexer_heard, and indexer_module_history reads modules.<module>'s kept values with their times. Quick fix (Src order in writeOverlay) rejected: Src is 0 once the source moved on, as here. Thorough fix chosen: the order is the forge's, on every path that writes a module (merged message, take-in).
104 lines
2.4 KiB
JSON
104 lines
2.4 KiB
JSON
{
|
|
"module": "mesh-delivery-indexer",
|
|
"version": "1",
|
|
"slug": "indexer",
|
|
"tools": [
|
|
"indexer_take_in",
|
|
"indexer_placement_reread"
|
|
],
|
|
"emits": [
|
|
"placement-changed"
|
|
],
|
|
"consumes": [
|
|
"mesh-build-go.toolchain.reported",
|
|
"mesh-build-node.toolchain.reported",
|
|
"mesh-delivery-checker.preview.written",
|
|
"mesh-delivery-forge-bridge.forge.**"
|
|
],
|
|
"state": [
|
|
{ "name": "candidates", "history": 10 },
|
|
{ "name": "heard", "history": 64 },
|
|
{ "name": "manifests", "history": 1 },
|
|
{ "name": "modules", "history": 20 },
|
|
{ "name": "placement", "history": 10 },
|
|
{ "name": "placement-candidates", "history": 5 },
|
|
{ "name": "taken", "history": 1 },
|
|
{ "name": "takeins", "history": 1 }
|
|
],
|
|
"reads": [
|
|
"mesh-build-go.toolchains",
|
|
"mesh-build-node.toolchains",
|
|
"mesh-controller.assignments",
|
|
"mesh-controller.builds",
|
|
"mesh-delivery-checker.previews",
|
|
"mesh-delivery-gate.source"
|
|
],
|
|
"invokes": [
|
|
"gitea.gitea_commit_trees",
|
|
"gitea.gitea_contains",
|
|
"gitea.gitea_get_file",
|
|
"gitea.gitea_list_branches",
|
|
"gitea.gitea_open_pulls"
|
|
],
|
|
"own-secrets": {
|
|
"broker": "${dir:state}/broker"
|
|
},
|
|
"secrets-owner": "mesh-delivery-indexer",
|
|
"resources": [
|
|
{
|
|
"id": "account",
|
|
"type": "user",
|
|
"name": "mesh-delivery-indexer",
|
|
"shell": "/usr/bin/nologin",
|
|
"home": "/var/lib/mesh-delivery-indexer"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "mesh-delivery-indexer",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "indexer",
|
|
"type": "process",
|
|
"name": "mesh-delivery-indexer",
|
|
"artifact": "program",
|
|
"run": [
|
|
"./mesh-delivery-indexer"
|
|
],
|
|
"env": {
|
|
"MESH_BROKER_FILE": "${dir:state}/broker"
|
|
},
|
|
"user": "mesh-delivery-indexer",
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "program",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-indexer",
|
|
"binary": "mesh-delivery-indexer"
|
|
},
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-indexer-tools",
|
|
"binary": "mesh-delivery-indexer-tools",
|
|
"loads": [
|
|
"mesh-delivery-indexer-tools"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|