From 181889dcd8c417af62b4589decaef7d8b36f5bd8 Mon Sep 17 00:00:00 2001 From: Kim De Mey Date: Thu, 2 Jul 2020 23:52:54 +0200 Subject: [PATCH] Cleanup metrics + accounting flag + bump deps (#37) * Cleaner metrics logging + accounting behind flag + some cleanup * Bump vendor --- tests/v1/test_rpc_waku.nim | 2 +- vendor/nim-chronos | 2 +- vendor/nim-confutils | 2 +- vendor/nim-eth | 2 +- vendor/nim-json-rpc | 2 +- vendor/nim-json-serialization | 2 +- vendor/nim-libbacktrace | 2 +- vendor/nim-secp256k1 | 2 +- vendor/nim-serialization | 2 +- vendor/nim-stew | 2 +- waku/node/v1/config.nim | 7 ++++++- waku/node/v1/rpc/waku.nim | 2 +- waku/node/v1/wakunode.nim | 31 ++++++++++++++++--------------- 13 files changed, 33 insertions(+), 27 deletions(-) diff --git a/tests/v1/test_rpc_waku.nim b/tests/v1/test_rpc_waku.nim index 4ab02b0cc..f31ac5a15 100644 --- a/tests/v1/test_rpc_waku.nim +++ b/tests/v1/test_rpc_waku.nim @@ -1,5 +1,5 @@ import - unittest, strformat, options, os, stew/byteutils, + unittest, options, os, stew/byteutils, json_rpc/[rpcserver, rpcclient], eth/common as eth_common, eth/[rlp, keys, p2p], ../../waku/protocol/v1/waku_protocol, diff --git a/vendor/nim-chronos b/vendor/nim-chronos index bedd1ded5..528688d01 160000 --- a/vendor/nim-chronos +++ b/vendor/nim-chronos @@ -1 +1 @@ -Subproject commit bedd1ded5edc3bfb6877f7025ca4b21f62492ffe +Subproject commit 528688d01e8983763c51fbd9ccd0c797190fc0fe diff --git a/vendor/nim-confutils b/vendor/nim-confutils index 26667818b..39456fa3d 160000 --- a/vendor/nim-confutils +++ b/vendor/nim-confutils @@ -1 +1 @@ -Subproject commit 26667818be48d428892b26be9535c1f0a98d1510 +Subproject commit 39456fa3d5b637053b616e50a8350b2b932a1d4c diff --git a/vendor/nim-eth b/vendor/nim-eth index 4d0a7a46b..4f533eb5e 160000 --- a/vendor/nim-eth +++ b/vendor/nim-eth @@ -1 +1 @@ -Subproject commit 4d0a7a46ba38947b8daecb1b5ae817c82c8e16c5 +Subproject commit 4f533eb5e6d6248ee2c1e94a628d1bc77880da67 diff --git a/vendor/nim-json-rpc b/vendor/nim-json-rpc index 8c1a8ef8d..244254632 160000 --- a/vendor/nim-json-rpc +++ b/vendor/nim-json-rpc @@ -1 +1 @@ -Subproject commit 8c1a8ef8d9fd1705d4e8640b4c30df2caee76881 +Subproject commit 244254632b15c745b6e15537aafd401f360d9928 diff --git a/vendor/nim-json-serialization b/vendor/nim-json-serialization index c478b7bbb..1cf51931f 160000 --- a/vendor/nim-json-serialization +++ b/vendor/nim-json-serialization @@ -1 +1 @@ -Subproject commit c478b7bbbab6ee298a25c29c7357783d94aaecaa +Subproject commit 1cf51931f1037a2c44fa0912386273c01a0e0e42 diff --git a/vendor/nim-libbacktrace b/vendor/nim-libbacktrace index fc63983c7..dc2c199d4 160000 --- a/vendor/nim-libbacktrace +++ b/vendor/nim-libbacktrace @@ -1 +1 @@ -Subproject commit fc63983c73ba541413f12ee70a2b6f025b03efea +Subproject commit dc2c199d41dc90de75043d1ee4efe5e0323932bf diff --git a/vendor/nim-secp256k1 b/vendor/nim-secp256k1 index e8fa92a0c..be9896359 160000 --- a/vendor/nim-secp256k1 +++ b/vendor/nim-secp256k1 @@ -1 +1 @@ -Subproject commit e8fa92a0c6217103eecce2a9e6f274c7eedac13b +Subproject commit be989635994377e0e421e4a039230098ba5ccd28 diff --git a/vendor/nim-serialization b/vendor/nim-serialization index d8ca3daf3..e0e51015b 160000 --- a/vendor/nim-serialization +++ b/vendor/nim-serialization @@ -1 +1 @@ -Subproject commit d8ca3daf3a788f357bf96b8e61b3ffce9a018ea2 +Subproject commit e0e51015b7348b61aa5d7391af4f8f4487713f91 diff --git a/vendor/nim-stew b/vendor/nim-stew index cf82e2d51..61d5cfc37 160000 --- a/vendor/nim-stew +++ b/vendor/nim-stew @@ -1 +1 @@ -Subproject commit cf82e2d51d12c3ca461cb170c2a4e2eada3bfe67 +Subproject commit 61d5cfc37677f2b434d43c06d06695b00e56613b diff --git a/waku/node/v1/config.nim b/waku/node/v1/config.nim index 23b7a7cb7..d332ce11a 100644 --- a/waku/node/v1/config.nim +++ b/waku/node/v1/config.nim @@ -137,6 +137,11 @@ type defaultValue: false name: "log-metrics" .}: bool + logAccounting* {. + desc: "Enable peer accounting logging." + defaultValue: false + name: "log-accounting" .}: bool + # TODO: # - discv5 + topic register # - mailserver functionality @@ -146,7 +151,7 @@ type proc parseCmdArg*(T: type KeyPair, p: TaintedString): T = try: let privkey = PrivateKey.fromHex(string(p)).tryGet() - result = privkey.toKeyPair.expect("a valid private key after check above") + result = privkey.toKeyPair() except CatchableError as e: raise newException(ConfigurationError, "Invalid private key") diff --git a/waku/node/v1/rpc/waku.nim b/waku/node/v1/rpc/waku.nim index b8439f5e1..34bb20a3b 100644 --- a/waku/node/v1/rpc/waku.nim +++ b/waku/node/v1/rpc/waku.nim @@ -81,7 +81,7 @@ proc setupWakuRPC*(node: EthereumNode, keys: KeyStorage, rpcsrv: RpcServer) = ## Returns key identifier on success and an error on failure. result = generateRandomID().Identifier - keys.asymKeys.add(result.string, key.toKeyPair().tryGet()) + keys.asymKeys.add(result.string, key.toKeyPair()) rpcsrv.rpc("waku_deleteKeyPair") do(id: Identifier) -> bool: ## Deletes the specifies key if it exists. diff --git a/waku/node/v1/wakunode.nim b/waku/node/v1/wakunode.nim index 55ab86043..429420423 100644 --- a/waku/node/v1/wakunode.nim +++ b/waku/node/v1/wakunode.nim @@ -1,6 +1,6 @@ import confutils, config, strutils, chronos, json_rpc/rpcserver, metrics, - chronicles/topics_registry, # TODO: What? Need this for setLoglevel, weird. + metrics/chronicles_support, eth/[keys, p2p, async_utils], eth/common/utils, eth/net/nat, eth/p2p/[discovery, enode, peer_pool, bootnodes, whispernodes], eth/p2p/rlpx_protocols/whisper_protocol, @@ -116,19 +116,20 @@ proc run(config: WakuNodeConf) = setupWakuSimRPC(node, rpcServer) rpcServer.start() - proc logPeerAccounting(udata: pointer) {.closure, gcsafe.} = - {.gcsafe.}: - - for peer in node.peerPool.peers: - let - sent = peer.state(Waku).accounting.sent - received = peer.state(Waku).accounting.received - id = peer.network.toEnode - info "Peer Metrics", id, sent, received - peer.state(Waku).accounting = Accounting(sent: 0, received: 0) - addTimer(Moment.fromNow(2.seconds), logPeerAccounting) - addTimer(Moment.fromNow(2.seconds), logPeerAccounting) + if config.logAccounting: + proc logPeerAccounting(udata: pointer) {.closure, gcsafe.} = + {.gcsafe.}: + for peer in node.peerPool.peers: + let + sent = peer.state(Waku).accounting.sent + received = peer.state(Waku).accounting.received + id = peer.network.toEnode + info "Peer accounting", id, sent, received + peer.state(Waku).accounting = Accounting(sent: 0, received: 0) + + discard setTimer(Moment.fromNow(2.seconds), logPeerAccounting) + discard setTimer(Moment.fromNow(2.seconds), logPeerAccounting) when defined(insecure): if config.metricsServer: @@ -147,8 +148,8 @@ proc run(config: WakuNodeConf) = droppedEnvelopes = waku_protocol.envelopes_dropped info "Node metrics", connectedPeers, validEnvelopes, droppedEnvelopes - addTimer(Moment.fromNow(2.seconds), logMetrics) - addTimer(Moment.fromNow(2.seconds), logMetrics) + discard setTimer(Moment.fromNow(2.seconds), logMetrics) + discard setTimer(Moment.fromNow(2.seconds), logMetrics) runForever()