mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-20 10:38:42 +01:00
Merge #20683: test: Fix restart node race
fab46b34f4
test: Fix restart node race (MarcoFalke) Pull request description: It is not allowed to start a node before it has been fully stopped. Otherwise it could lead to intermittent issues due to access issues (e.g. cookie file https://cirrus-ci.com/task/6409665024098304?command=ci#L4793) Fix that by waiting for the node to fully stop. ACKs for top commit: laanwj: code review ACKfab46b34f4
Tree-SHA512: 7605cac0573a7b04f05ff110d0131e8940d87f7baf6d698505ed16b363d4d15b1e552c5ffd1a187c8fe5639f7e265c3122734c85283275746e46bd789614fd21
This commit is contained in:
commit
cc2a5ef9b2
@ -517,13 +517,12 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||||||
def stop_node(self, i, expected_stderr='', wait=0):
|
def stop_node(self, i, expected_stderr='', wait=0):
|
||||||
"""Stop a bitcoind test node"""
|
"""Stop a bitcoind test node"""
|
||||||
self.nodes[i].stop_node(expected_stderr, wait=wait)
|
self.nodes[i].stop_node(expected_stderr, wait=wait)
|
||||||
self.nodes[i].wait_until_stopped()
|
|
||||||
|
|
||||||
def stop_nodes(self, wait=0):
|
def stop_nodes(self, wait=0):
|
||||||
"""Stop multiple bitcoind test nodes"""
|
"""Stop multiple bitcoind test nodes"""
|
||||||
for node in self.nodes:
|
for node in self.nodes:
|
||||||
# Issue RPC to stop nodes
|
# Issue RPC to stop nodes
|
||||||
node.stop_node(wait=wait)
|
node.stop_node(wait=wait, wait_until_stopped=False)
|
||||||
|
|
||||||
for node in self.nodes:
|
for node in self.nodes:
|
||||||
# Wait for nodes to stop
|
# Wait for nodes to stop
|
||||||
|
@ -308,7 +308,7 @@ class TestNode():
|
|||||||
def version_is_at_least(self, ver):
|
def version_is_at_least(self, ver):
|
||||||
return self.version is None or self.version >= ver
|
return self.version is None or self.version >= ver
|
||||||
|
|
||||||
def stop_node(self, expected_stderr='', wait=0):
|
def stop_node(self, expected_stderr='', *, wait=0, wait_until_stopped=True):
|
||||||
"""Stop the node."""
|
"""Stop the node."""
|
||||||
if not self.running:
|
if not self.running:
|
||||||
return
|
return
|
||||||
@ -337,6 +337,9 @@ class TestNode():
|
|||||||
|
|
||||||
del self.p2ps[:]
|
del self.p2ps[:]
|
||||||
|
|
||||||
|
if wait_until_stopped:
|
||||||
|
self.wait_until_stopped()
|
||||||
|
|
||||||
def is_node_stopped(self):
|
def is_node_stopped(self):
|
||||||
"""Checks whether the node has stopped.
|
"""Checks whether the node has stopped.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user