diff options
author | junderw <junderwood@bitcoinbank.co.jp> | 2022-01-29 21:58:59 +0900 |
---|---|---|
committer | junderw <junderwood@bitcoinbank.co.jp> | 2022-02-25 09:53:10 +0900 |
commit | d41ed3215355582879c8eb6c99c2da33852f6cb1 (patch) | |
tree | da4d170ee99b2d621a19645e5840c07fd95cb76b /test | |
parent | 5b4b8f76f3ae11064d4aa3ac157558e364751fd2 (diff) |
p2p: Avoid InitError when downgrading peers.dat
fixes #24188
When downgrading, a peers.dat with a future version that has a minimum
required version larger than the downgraded version would cause an InitError.
This commit changes this behavior to overwrite the existing peers.dat with
a new empty one, while creating a backup in peers.dat.bak.
Diffstat (limited to 'test')
-rwxr-xr-x | test/functional/feature_addrman.py | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/test/functional/feature_addrman.py b/test/functional/feature_addrman.py index 14a4f8abb7..0fdefaa9c3 100755 --- a/test/functional/feature_addrman.py +++ b/test/functional/feature_addrman.py @@ -68,17 +68,16 @@ class AddrmanTest(BitcoinTestFramework): self.start_node(0, extra_args=["-checkaddrman=1"]) assert_equal(self.nodes[0].getnodeaddresses(), []) - self.log.info("Check that addrman from future cannot be read") + self.log.info("Check that addrman from future is overwritten with new addrman") self.stop_node(0) write_addrman(peers_dat, lowest_compatible=111) - self.nodes[0].assert_start_raises_init_error( - expected_msg=init_error( - "Unsupported format of addrman database: 1. It is compatible with " - "formats >=111, but the maximum supported by this version of " - f"{self.config['environment']['PACKAGE_NAME']} is 4.: (.+)" - ), - match=ErrorMatch.FULL_REGEX, - ) + assert_equal(os.path.exists(peers_dat + ".bak"), False) + with self.nodes[0].assert_debug_log([ + f'Creating new peers.dat because the file version was not compatible ("{peers_dat}"). Original backed up to peers.dat.bak', + ]): + self.start_node(0) + assert_equal(self.nodes[0].getnodeaddresses(), []) + assert_equal(os.path.exists(peers_dat + ".bak"), True) self.log.info("Check that corrupt addrman cannot be read (EOF)") self.stop_node(0) |