Skip to content

Commit 9decd64

Browse files
committed
[qa] Relax assumptions on mempool behavior during reorg
Policy limits (such as chain limits and mempool total size) could reasonably be enforced more aggressively during a reorg, so use resendwallettransactions to repopulate the mempool to avoid mined blocks being too small, and increase the chain limits from the default for this test. This is in preparation for a change in mempool behavior during a reorg.
1 parent 35da2ae commit 9decd64

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

test/functional/pruning.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ def __init__(self):
3434

3535
# Create nodes 0 and 1 to mine.
3636
# Create node 2 to test pruning.
37+
self.full_node_default_args = ["-maxreceivebuffer=20000","-blockmaxsize=999000", "-checkblocks=5", "-limitdescendantcount=100", "-limitdescendantsize=5000", "-limitancestorcount=100", "-limitancestorsize=5000" ]
3738
# Create nodes 3 and 4 to test manual pruning (they will be re-started with manual pruning later)
3839
# Create nodes 5 to test wallet in prune mode, but do not connect
39-
self.extra_args = [["-maxreceivebuffer=20000", "-blockmaxsize=999000", "-checkblocks=5"],
40-
["-maxreceivebuffer=20000", "-blockmaxsize=999000", "-checkblocks=5"],
40+
self.extra_args = [self.full_node_default_args,
41+
self.full_node_default_args,
4142
["-maxreceivebuffer=20000", "-prune=550"],
4243
["-maxreceivebuffer=20000", "-blockmaxsize=999000"],
4344
["-maxreceivebuffer=20000", "-blockmaxsize=999000"],
@@ -97,12 +98,15 @@ def create_chain_with_staleblocks(self):
9798
# Node 2 stays connected, so it hears about the stale blocks and then reorg's when node0 reconnects
9899
# Stopping node 0 also clears its mempool, so it doesn't have node1's transactions to accidentally mine
99100
self.stop_node(0)
100-
self.nodes[0]=start_node(0, self.options.tmpdir, ["-maxreceivebuffer=20000","-blockmaxsize=999000", "-checkblocks=5"], timewait=900)
101+
self.nodes[0]=start_node(0, self.options.tmpdir, self.full_node_default_args, timewait=900)
101102
# Mine 24 blocks in node 1
102103
for i in range(24):
103104
if j == 0:
104105
mine_large_block(self.nodes[1], self.utxo_cache_1)
105106
else:
107+
# Add node1's wallet transactions back to the mempool, to
108+
# avoid the mined blocks from being too small.
109+
self.nodes[1].resendwallettransactions()
106110
self.nodes[1].generate(1) #tx's already in mempool from previous disconnects
107111

108112
# Reorg back with 25 block chain from node 0
@@ -159,6 +163,11 @@ def reorg_test(self):
159163
self.log.info("Usage possibly still high bc of stale blocks in block files: %d" % calc_usage(self.prunedir))
160164

161165
self.log.info("Mine 220 more blocks so we have requisite history (some blocks will be big and cause pruning of previous chain)")
166+
167+
# Get node0's wallet transactions back in its mempool, to avoid the
168+
# mined blocks from being too small.
169+
self.nodes[0].resendwallettransactions()
170+
162171
for i in range(22):
163172
# This can be slow, so do this in multiple RPC calls to avoid
164173
# RPC timeouts.

0 commit comments

Comments
 (0)