mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 12:32:48 +01:00
Merge #12902: [qa] Handle potential cookie race when starting node
75d0e4c544
[qa] Delete cookie file before starting node (Suhas Daftuar)
Pull request description:
When a node is restarted during a test after an unclean shutdown (such
as with -dbcrashratio), it's possible an old cookie file was left
behind. This can cause a race condition when restarting the node, where
the test framework might try to connect using credentials from the
old cookie file, just as the node will generate new credentials and
overwrite the old file.
Delete any such cookie file if present prior to startup.
Tree-SHA512: ae1e8bf8fd20e07c32b0715025693bb28b0e3dd34f328cae4346abf579b0c97b5db1c02782e1c46b7a3b6058d268b6d46b668e847658a6eed0be857ffb0d65dc
This commit is contained in:
commit
727175a08d
@ -20,6 +20,7 @@ from .authproxy import JSONRPCException
|
|||||||
from .util import (
|
from .util import (
|
||||||
append_config,
|
append_config,
|
||||||
assert_equal,
|
assert_equal,
|
||||||
|
delete_cookie_file,
|
||||||
get_rpc_proxy,
|
get_rpc_proxy,
|
||||||
rpc_url,
|
rpc_url,
|
||||||
wait_until,
|
wait_until,
|
||||||
@ -116,6 +117,10 @@ class TestNode():
|
|||||||
extra_args = self.extra_args
|
extra_args = self.extra_args
|
||||||
if stderr is None:
|
if stderr is None:
|
||||||
stderr = self.stderr
|
stderr = self.stderr
|
||||||
|
# Delete any existing cookie file -- if such a file exists (eg due to
|
||||||
|
# unclean shutdown), it will get overwritten anyway by bitcoind, and
|
||||||
|
# potentially interfere with our attempt to authenticate
|
||||||
|
delete_cookie_file(self.datadir)
|
||||||
self.process = subprocess.Popen(self.args + extra_args, stderr=stderr, *args, **kwargs)
|
self.process = subprocess.Popen(self.args + extra_args, stderr=stderr, *args, **kwargs)
|
||||||
self.running = True
|
self.running = True
|
||||||
self.log.debug("bitcoind started, waiting for RPC to come up")
|
self.log.debug("bitcoind started, waiting for RPC to come up")
|
||||||
|
@ -332,6 +332,12 @@ def get_auth_cookie(datadir):
|
|||||||
raise ValueError("No RPC credentials")
|
raise ValueError("No RPC credentials")
|
||||||
return user, password
|
return user, password
|
||||||
|
|
||||||
|
# If a cookie file exists in the given datadir, delete it.
|
||||||
|
def delete_cookie_file(datadir):
|
||||||
|
if os.path.isfile(os.path.join(datadir, "regtest", ".cookie")):
|
||||||
|
logger.debug("Deleting leftover cookie file")
|
||||||
|
os.remove(os.path.join(datadir, "regtest", ".cookie"))
|
||||||
|
|
||||||
def get_bip9_status(node, key):
|
def get_bip9_status(node, key):
|
||||||
info = node.getblockchaininfo()
|
info = node.getblockchaininfo()
|
||||||
return info['bip9_softforks'][key]
|
return info['bip9_softforks'][key]
|
||||||
|
Loading…
Reference in New Issue
Block a user