aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/dashboard.md4
-rw-r--r--src/api/dashboard/dashboard.html13
2 files changed, 11 insertions, 6 deletions
diff --git a/docs/dashboard.md b/docs/dashboard.md
index 143fcc5..eeeca9b 100644
--- a/docs/dashboard.md
+++ b/docs/dashboard.md
@@ -219,7 +219,8 @@ reload keeps it and a link to the page can name it.
## Peers
-Every peer this node knows, with:
+Every peer this node knows; those that aren't its neighbours muted (it only answers
+them: no HELLOs, keepalives or syncing of its own; their tooltip says so), with:
| Column | Meaning |
|---|---|
@@ -230,7 +231,6 @@ Every peer this node knows, with:
| rtt | The round trip on that path. |
| hop | How long its sync and blob messages take to come, by its clock and this node's, its clock offset taken off (`hopDelay` in [`measurements.md`](measurements.md)): this minute's mean, then the last 15 minutes' means as bars, oldest first (a minute without messages blank). Good to half the round trip, but the trend exactly: bars growing mean the link, or a queue on it, gets slower. All figures in the tooltip. |
| clock | How far its clock is ahead of this node's (behind: `−`), give or take (in the tooltip); in orange beyond `--clock-skew-warn`, for sure ([`measurements.md`](measurements.md), Clocks). |
-| neighbour | Whether this node keeps contact with it (HELLOs, keepalives, sync); others it only answers. |
| reaches | How many members besides this node it reaches, as it said ([`peers.md`](peers.md)); `(+n)`: of those, how many this node doesn't reach itself, which it is a way to. By name in the tooltip, those marked `+`. Blank until it said so in this session. |
| epoch | The epoch it last said it is on, by its generation ([`remakes.md`](remakes.md)); orange where it isn't this node's (they don't sync then); its ID in the tooltip; blank while unknown. |
diff --git a/src/api/dashboard/dashboard.html b/src/api/dashboard/dashboard.html
index da370e9..baffcf2 100644
--- a/src/api/dashboard/dashboard.html
+++ b/src/api/dashboard/dashboard.html
@@ -261,6 +261,8 @@
th { color: var(--muted); font-weight: 500; position: sticky; top: 0;
background: var(--panel); }
#peers tr[data-peer] { cursor: pointer; }
+ /* Not neighbours: only answered. */
+ #peers tr.answered td { opacity: .5; }
#peers tr.focused td { background: var(--line); }
.id { font-family: ui-monospace, monospace; font-size: 12px; }
/* Where messages go: the start of the address, the rest in its tooltip. */
@@ -556,7 +558,7 @@ function renderPeers() {
"this node's (its offset taken off): this minute's mean, and the last 15 minutes' as " +
"a line; good to half the round trip, but the trend exactly" };
const rows = [el("tr", {}, ...["peer", "status", "seen", "via", "rtt", "hop", "clock",
- "neighbour", "reaches", "epoch"]
+ "reaches", "epoch"]
.map(h => el("th", { title: headers[h] || "" }, h)))];
// Whom this node reaches, to tell those a peer reaches and it doesn't.
const ours = new Set(state.peers.localReaches || []);
@@ -567,8 +569,12 @@ function renderPeers() {
const via = destination
? destination.address + (destination.connection ? " (" + destination.connection + ")" : "")
: "";
- const row = el("tr", { "data-peer": id, class: id === focused ? "focused" : "" },
- el("td", { title: id }, peer.alias || el("span", { class: "id" }, short(id))),
+ // Not a neighbour: this node only answers it (muted).
+ const row = el("tr", { "data-peer": id,
+ class: (id === focused ? "focused" : "") + (peer.neighbour ? "" : " answered") },
+ el("td", { title: id + (peer.neighbour ? ""
+ : "\nnot a neighbour: this node only answers it, and syncs with it on its own only as a neighbour") },
+ peer.alias || el("span", { class: "id" }, short(id))),
// How long dormant is about how long unseen ("seen"): in the tooltip only.
el("td", { class: peer.status, title: peer.status === "dormant"
? "dormant for " + age(aged("dormantForSecs", peer.dormantForSecs)) : "" }, peer.status),
@@ -580,7 +586,6 @@ function renderPeers() {
el("td", { class: clockOff(peer.clock) ? "clock-off" : "", title: peer.clock
? "ahead of this node's by " + peer.clock.offsetMs + " ms, give or take " +
peer.clock.withinMs + " ms" : "" }, peer.clock ? seconds(peer.clock.offsetMs) : ""),
- el("td", {}, peer.neighbour ? "yes" : ""),
reachesCell(peer.reaches, ours, id),
epochCell(peer.epoch, peer.sameEpoch));
rows.push(row);