Skip to content

Commit

Permalink
merge bitcoin#26138: Avoid race in disconnect_nodes helper
Browse files Browse the repository at this point in the history
  • Loading branch information
kwvg committed Oct 2, 2024
1 parent d6ce037 commit 892e329
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions test/functional/test_framework/test_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -716,24 +716,24 @@ def disconnect_nodes(self, a, b):
if (a == b):
return

def disconnect_nodes_helper(from_connection, node_num):
def get_peer_ids():
def disconnect_nodes_helper(node_a, node_b):
def get_peer_ids(from_connection, node_num):
result = []
for peer in from_connection.getpeerinfo():
if "testnode{}".format(node_num) in peer['subver']:
result.append(peer['id'])
return result

peer_ids = get_peer_ids()
peer_ids = get_peer_ids(node_a, node_b.index)
if not peer_ids:
self.log.warning("disconnect_nodes: {} and {} were not connected".format(
from_connection.index,
node_num,
node_a.index,
node_b.index,
))
return
for peer_id in peer_ids:
try:
from_connection.disconnectnode(nodeid=peer_id)
node_a.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.
Expand All @@ -742,9 +742,10 @@ def get_peer_ids():
raise

# 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):
self.nodes[node_num].setnetworkactive(False)
Expand Down

0 comments on commit 892e329

Please sign in to comment.