mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-02-09 13:44:26 +00:00
[qa] Handle disconnect_node race
Several tests call disconnect_nodes() on each node-pair in rapid succession, resulting in a race condition if a node disconnects a peer in-between the calculation of the nodeid's to disconnect and the invocation of the disconnectnode rpc call. Handle this. GitHub-Pull: #13201 Rebased-From: 09c6699
This commit is contained in:
parent
feba12fe85
commit
b8aacd660e
@ -335,7 +335,14 @@ def set_node_times(nodes, t):
|
|||||||
|
|
||||||
def disconnect_nodes(from_connection, node_num):
|
def disconnect_nodes(from_connection, node_num):
|
||||||
for peer_id in [peer['id'] for peer in from_connection.getpeerinfo() if "testnode%d" % node_num in peer['subver']]:
|
for peer_id in [peer['id'] for peer in from_connection.getpeerinfo() if "testnode%d" % node_num in peer['subver']]:
|
||||||
from_connection.disconnectnode(nodeid=peer_id)
|
try:
|
||||||
|
from_connection.disconnectnode(nodeid=peer_id)
|
||||||
|
except JSONRPCException as e:
|
||||||
|
# If this node is disconnected between calculating the peer id
|
||||||
|
# and issuing the disconnect, don't worry about it.
|
||||||
|
# This avoids a race condition if we're mass-disconnecting peers.
|
||||||
|
if e.error['code'] != -29: # RPC_CLIENT_NODE_NOT_CONNECTED
|
||||||
|
raise
|
||||||
|
|
||||||
# wait to disconnect
|
# wait to disconnect
|
||||||
wait_until(lambda: [peer['id'] for peer in from_connection.getpeerinfo() if "testnode%d" % node_num in peer['subver']] == [], timeout=5)
|
wait_until(lambda: [peer['id'] for peer in from_connection.getpeerinfo() if "testnode%d" % node_num in peer['subver']] == [], timeout=5)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user