more debug rpcs (#2385)

* more debug rpcs

* cleanups

* oops fixing

* add wip change log notes about rpc renaming

* fix wrong breaking changes changelog location
This commit is contained in:
Giovanni Petrantoni 2021-03-16 16:39:29 +09:00 committed by GitHub
parent c519c6012e
commit 26c56c2800
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 71 additions and 7 deletions

View File

@ -1,3 +1,13 @@
TBD
==================
**Breaking changes:**
* Renamed some semi-internal debug rpc to be more explicit about their nature:
* `getGossipSubPeers` is now `debug_getGossipSubPeers`
* `getChronosFutures` is now `debug_getChronosFutures`
2021-03-10 v1.0.10
==================

View File

@ -20,7 +20,6 @@ import
libp2p/protocols/pubsub/pubsubpeer
logScope: topics = "nimbusapi"
type
@ -100,7 +99,7 @@ proc installNimbusApiHandlers*(rpcServer: RpcServer, node: BeaconNode) =
node.chainDag.withState(node.chainDag.tmpState, head.atSlot(wallSlot)):
return node.getBlockProposalEth1Data(state)
rpcServer.rpc("getChronosFutures") do () -> seq[FutureInfo]:
rpcServer.rpc("debug_getChronosFutures") do () -> seq[FutureInfo]:
when defined(chronosFutureTracking):
var res: seq[FutureInfo]
@ -119,11 +118,11 @@ proc installNimbusApiHandlers*(rpcServer: RpcServer, node: BeaconNode) =
raise (ref CatchableError)(
msg: "Compile with '-d:chronosFutureTracking' to enable this request")
rpcServer.rpc("getGossipSubPeers") do () -> JsonNode:
rpcServer.rpc("debug_getGossipSubPeers") do () -> JsonNode:
var res = newJObject()
var gossipsub = newJObject()
proc toNode(v: PubSubPeer): JsonNode =
proc toNode(v: PubSubPeer, backoff: Moment): JsonNode =
%(
peerId: $v.peerId,
score: v.score,
@ -131,13 +130,27 @@ proc installNimbusApiHandlers*(rpcServer: RpcServer, node: BeaconNode) =
iHaveBudget: v.iHaveBudget,
outbound: v.outbound,
appScore: v.appScore,
behaviourPenalty: v.behaviourPenalty
behaviourPenalty: v.behaviourPenalty,
sendConnAvail: v.sendConn != nil,
closed: v.sendConn != nil and v.sendConn.closed,
atEof: v.sendConn != nil and v.sendConn.atEof,
address: if v.address.isSome():
$v.address.get()
else:
"<no address>",
backoff: $(backoff - Moment.now()),
agent: when defined(libp2p_agents_metrics):
v.shortAgent
else:
"unknown",
)
for topic, v in node.network.pubsub.gossipsub:
var peers = newJArray()
let backoff = node.network.pubsub.backingOff.getOrDefault(topic)
for peer in v:
peers.add(peer.toNode())
peers.add(peer.toNode(backOff.getOrDefault(peer.peerId)))
gossipsub.add(topic, peers)
@ -146,11 +159,52 @@ proc installNimbusApiHandlers*(rpcServer: RpcServer, node: BeaconNode) =
var mesh = newJObject()
for topic, v in node.network.pubsub.mesh:
var peers = newJArray()
let backoff = node.network.pubsub.backingOff.getOrDefault(topic)
for peer in v:
peers.add(peer.toNode())
peers.add(peer.toNode(backOff.getOrDefault(peer.peerId)))
mesh.add(topic, peers)
res.add("mesh", mesh)
var coloc = newJArray()
for k, v in node.network.pubsub.peersInIP:
var a = newJObject()
var peers = newJArray()
for p in v:
peers.add(%($p))
a.add($k, peers)
coloc.add(a)
res.add("colocationPeers", coloc)
var stats = newJArray()
for peerId, pstats in node.network.pubsub.peerStats:
let
peer = node.network.pubsub.peers.getOrDefault(peerId)
null = isNil(peer)
connected = if null:
false
else :
peer.connected()
stats.add(%(
peerId: $peerId,
null: null,
connected: connected,
expire: $(pstats.expire - Moment.now()),
score: pstats.score
))
res.add("peerStats", stats)
var peers = newJArray()
for peerId, peer in node.network.pubsub.peers:
peers.add(%(
connected: peer.connected,
peerId: $peerId
))
res.add("allPeers", peers)
return res