aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorjunderw <junderwood@bitcoinbank.co.jp>2022-01-29 21:58:59 +0900
committerjunderw <junderwood@bitcoinbank.co.jp>2022-02-25 09:53:10 +0900
commitd41ed3215355582879c8eb6c99c2da33852f6cb1 (patch)
treeda4d170ee99b2d621a19645e5840c07fd95cb76b /test
parent5b4b8f76f3ae11064d4aa3ac157558e364751fd2 (diff)
downloadbitcoin-d41ed3215355582879c8eb6c99c2da33852f6cb1.tar.xz
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-xtest/functional/feature_addrman.py17
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)