mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
merge bitcoin#26138: Avoid race in disconnect_nodes helper
This commit is contained in:
parent
d6ce037814
commit
892e329ada
@ -716,24 +716,24 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||||||
if (a == b):
|
if (a == b):
|
||||||
return
|
return
|
||||||
|
|
||||||
def disconnect_nodes_helper(from_connection, node_num):
|
def disconnect_nodes_helper(node_a, node_b):
|
||||||
def get_peer_ids():
|
def get_peer_ids(from_connection, node_num):
|
||||||
result = []
|
result = []
|
||||||
for peer in from_connection.getpeerinfo():
|
for peer in from_connection.getpeerinfo():
|
||||||
if "testnode{}".format(node_num) in peer['subver']:
|
if "testnode{}".format(node_num) in peer['subver']:
|
||||||
result.append(peer['id'])
|
result.append(peer['id'])
|
||||||
return result
|
return result
|
||||||
|
|
||||||
peer_ids = get_peer_ids()
|
peer_ids = get_peer_ids(node_a, node_b.index)
|
||||||
if not peer_ids:
|
if not peer_ids:
|
||||||
self.log.warning("disconnect_nodes: {} and {} were not connected".format(
|
self.log.warning("disconnect_nodes: {} and {} were not connected".format(
|
||||||
from_connection.index,
|
node_a.index,
|
||||||
node_num,
|
node_b.index,
|
||||||
))
|
))
|
||||||
return
|
return
|
||||||
for peer_id in peer_ids:
|
for peer_id in peer_ids:
|
||||||
try:
|
try:
|
||||||
from_connection.disconnectnode(nodeid=peer_id)
|
node_a.disconnectnode(nodeid=peer_id)
|
||||||
except JSONRPCException as e:
|
except JSONRPCException as e:
|
||||||
# If this node is disconnected between calculating the peer id
|
# If this node is disconnected between calculating the peer id
|
||||||
# and issuing the disconnect, don't worry about it.
|
# and issuing the disconnect, don't worry about it.
|
||||||
@ -742,9 +742,10 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
# wait to disconnect
|
# wait to disconnect
|
||||||
self.wait_until(lambda: not get_peer_ids(), timeout=5)
|
self.wait_until(lambda: not get_peer_ids(node_a, node_b.index), timeout=5)
|
||||||
|
self.wait_until(lambda: not get_peer_ids(node_b, node_a.index), timeout=5)
|
||||||
|
|
||||||
disconnect_nodes_helper(self.nodes[a], b)
|
disconnect_nodes_helper(self.nodes[a], self.nodes[b])
|
||||||
|
|
||||||
def isolate_node(self, node_num, timeout=5):
|
def isolate_node(self, node_num, timeout=5):
|
||||||
self.nodes[node_num].setnetworkactive(False)
|
self.nodes[node_num].setnetworkactive(False)
|
||||||
|
Loading…
Reference in New Issue
Block a user