Dashboard: read gauges per node #76

Merged
jcoffey-dev merged 2 commits from fix/gauges-per-node into main 2026-10-01 02:01:46 +00:00
Owner

Every node stores its own gauge readings. The dashboard took the latest from whichever node wrote last (summarize, the memory tile), or added up every reading in a chart slice (series, seriesBucketValue).

  • Per-node gauges (memory, open connections) showed one arbitrary node, or a pile of ticks in a chart slice.
  • Cluster-wide counts could show another node's drifted copy. Production has queue.count at 18,446,744,073,709,551,596 on node 0 (−20 stored unsigned) and user.count = 0 on two nodes.

gaugeReading takes each node's latest reading. It adds up per-node gauges, and for queue/user/domain counts takes the largest believable one, which also skips the junk already in history. inbuxa-server #139 stops storing it.

Used by: trend cards (summarize), chart slices (series, seriesBucketValue), and the memory tile. The memory tile now reads all nodes from history rather than one node's live value.

Tests: 5 new in helpers.test.ts (per-node sum, drifted and zero copies, no believable reading, single node without nodeId, chart slice). The dashboard suite passes (39).

Strings: 1 changed, cc.g.memoryDetail: this node → all nodes · peak {{peak}}. English only; the console has only en.json.

Every node stores its own gauge readings. The dashboard took the latest from whichever node wrote last (summarize, the memory tile), or added up every reading in a chart slice (series, seriesBucketValue). - **Per-node gauges** (memory, open connections) showed one arbitrary node, or a pile of ticks in a chart slice. - **Cluster-wide counts** could show another node's drifted copy. Production has queue.count at 18,446,744,073,709,551,596 on node 0 (−20 stored unsigned) and user.count = 0 on two nodes. gaugeReading takes each node's latest reading. It adds up per-node gauges, and for queue/user/domain counts takes the largest believable one, which also skips the junk already in history. inbuxa-server #139 stops storing it. Used by: trend cards (summarize), chart slices (series, seriesBucketValue), and the memory tile. The memory tile now reads all nodes from history rather than one node's live value. Tests: 5 new in helpers.test.ts (per-node sum, drifted and zero copies, no believable reading, single node without nodeId, chart slice). The dashboard suite passes (39). **Strings:** 1 changed, cc.g.memoryDetail: this node → all nodes · peak {{peak}}. English only; the console has only en.json.
jcoffey-dev added 1 commit 2026-10-01 01:53:01 +00:00
Dashboard: read gauges per node
ci / build (pull_request) Skipped
ci / publish (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Failing after 1m2s
cbff590d49
Every node stores its own gauge readings, and the dashboard took the
latest from whichever node wrote last, or added up every reading in a
chart slice. Per-node gauges (memory, open connections) showed one node
or a pile of ticks, and the cluster-wide counts could show another
node's drifted copy: a 20-digit queue (an underflow stored unsigned) or
0 accounts.

gaugeReading takes each node's latest reading, adds per-node gauges up,
and for queue/user/domain counts takes the largest believable one, which
also skips the junk already in history (inbuxa-server stops storing it).
Cards, chart slices and the memory tile use it; the tile now reads all
nodes from history rather than one node's live value.
jcoffey-dev added 1 commit 2026-10-01 01:59:45 +00:00
Dashboard: write the underflowed test readings as expressions
ci / build (pull_request) Skipped
ci / publish (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 1m42s
229dd6179d
no-loss-of-precision rejected the 20-digit literals.
jcoffey-dev merged commit 1d7a1d6ca1 into main 2026-10-01 02:01:46 +00:00
jcoffey-dev deleted branch fix/gauges-per-node 2026-10-01 02:01:46 +00:00
Sign in to join this conversation.