recordWarp
Records warp-node execution metrics into this WarpMetricExporter.
Each call merges WarpNode.executions, WarpNode.duplicates, and WarpNode.failovers — which are us.tractat.kuilt.crdt.GCounters — into the corresponding SUM series. Because GCounter's join is element-wise max, this call is idempotent: calling it twice with the same node snapshot produces exactly the same result as calling it once. This is the keystone CRDT property: the exporter's SUM series and the node's counter are the same CRDT, so merge-under-retry is safe.
Metrics written: | name | kind | source | |---|---|---| | warp.tasks.executed | SUM | WarpNode.executions | | warp.tasks.duplicate.absorbed | SUM | WarpNode.duplicates | | warp.failover.count | SUM | WarpNode.failovers | | warp.tasks.interpreted | SUM | WarpNode.executionsInterpreted | | warp.tasks.compiled | SUM | WarpNode.executionsCompiled |
warp.tasks.duplicate.absorbed is a lower bound, and zero is uninformative. It counts only the duplicates the LWW ORMap backstop absorbed at record time — a peer recording against a board that already holds an entry for that task. Two peers whose state has not reconciled both record against a board holding no other entry, so neither increments and the merge absorbs the collision silently. It is therefore systematically blind to the concurrent cross-partition case, which is exactly the churn regime a duplicate metric is watched for. The name was warp.tasks.duplicate until #2565; it was renamed because a bare "duplicate" reads as a count of duplicate executions, which this is not. See WarpNode.duplicates.