Merge pull request #1077 from status-im/timeout

Eth2Node.stop(): trace msg on timeout
This commit is contained in:
Ștefan Talpalaru 2020-05-29 16:30:13 +02:00 committed by GitHub
commit a90b0dd197
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 9 deletions

View File

@ -1,6 +1,6 @@
import import
# Std lib # Std lib
typetraits, strutils, os, random, algorithm, typetraits, strutils, os, random, algorithm, sequtils,
options as stdOptions, net as stdNet, options as stdOptions, net as stdNet,
# Status libs # Status libs
@ -741,14 +741,17 @@ proc start*(node: Eth2Node) {.async.} =
traceAsyncErrors node.discoveryLoop traceAsyncErrors node.discoveryLoop
proc stop*(node: Eth2Node) {.async.} = proc stop*(node: Eth2Node) {.async.} =
# Ignore errors in futures, since we're shutting down. # Ignore errors in futures, since we're shutting down (but log them on the
# Use a timer to avoid hangups. # TRACE level, if a timeout is reached).
discard await one(sleepAsync(5.seconds), let
allFutures(@[ waitedFutures = @[
node.discovery.closeWait(), node.discovery.closeWait(),
node.switch.stop(), node.switch.stop(),
]) ]
) timeout = 5.seconds
completed = await withTimeout(allFutures(waitedFutures), timeout)
if not completed:
trace "Eth2Node.stop(): timeout reached", timeout, futureErrors = waitedFutures.filterIt(it.error != nil).mapIt(it.error.msg)
proc init*(T: type Peer, network: Eth2Node, info: PeerInfo): Peer = proc init*(T: type Peer, network: Eth2Node, info: PeerInfo): Peer =
new result new result