@@ -105,6 +105,11 @@ def run_test(self):
105
105
assert_equal (len (self .nodes [0 ].p2ps ), 0 )
106
106
self .mini_wallet .send_self_transfer (from_node = self .nodes [0 ])
107
107
108
+ # Test persistence of prioritisation for transactions not in the mempool.
109
+ # Create a tx and prioritise but don't submit until after the restart.
110
+ tx_prioritised_not_submitted = self .mini_wallet .create_self_transfer ()
111
+ self .nodes [0 ].prioritisetransaction (txid = tx_prioritised_not_submitted ['txid' ], fee_delta = 9999 )
112
+
108
113
self .log .debug ("Stop-start the nodes. Verify that node0 has the transactions in its mempool and node1 does not. Verify that node2 calculates its balance correctly after loading wallet transactions." )
109
114
self .stop_nodes ()
110
115
# Give this node a head-start, so we can be "extra-sure" that it didn't load anything later
@@ -125,6 +130,9 @@ def run_test(self):
125
130
126
131
self .log .debug ('Verify all fields are loaded correctly' )
127
132
assert_equal (last_entry , self .nodes [0 ].getmempoolentry (txid = last_txid ))
133
+ self .nodes [0 ].sendrawtransaction (tx_prioritised_not_submitted ['hex' ])
134
+ entry_prioritised_before_restart = self .nodes [0 ].getmempoolentry (txid = tx_prioritised_not_submitted ['txid' ])
135
+ assert_equal (entry_prioritised_before_restart ['fees' ]['base' ] + Decimal ('0.00009999' ), entry_prioritised_before_restart ['fees' ]['modified' ])
128
136
129
137
# Verify accounting of mempool transactions after restart is correct
130
138
if self .is_sqlite_compiled ():
@@ -143,7 +151,7 @@ def run_test(self):
143
151
self .stop_nodes ()
144
152
self .start_node (0 )
145
153
assert self .nodes [0 ].getmempoolinfo ()["loaded" ]
146
- assert_equal (len (self .nodes [0 ].getrawmempool ()), 6 )
154
+ assert_equal (len (self .nodes [0 ].getrawmempool ()), 7 )
147
155
148
156
mempooldat0 = os .path .join (self .nodes [0 ].datadir , self .chain , 'mempool.dat' )
149
157
mempooldat1 = os .path .join (self .nodes [1 ].datadir , self .chain , 'mempool.dat' )
@@ -153,12 +161,12 @@ def run_test(self):
153
161
assert os .path .isfile (mempooldat0 )
154
162
assert_equal (result0 ['filename' ], mempooldat0 )
155
163
156
- self .log .debug ("Stop nodes, make node1 use mempool.dat from node0. Verify it has 6 transactions" )
164
+ self .log .debug ("Stop nodes, make node1 use mempool.dat from node0. Verify it has 7 transactions" )
157
165
os .rename (mempooldat0 , mempooldat1 )
158
166
self .stop_nodes ()
159
167
self .start_node (1 , extra_args = ["-persistmempool" ])
160
168
assert self .nodes [1 ].getmempoolinfo ()["loaded" ]
161
- assert_equal (len (self .nodes [1 ].getrawmempool ()), 6 )
169
+ assert_equal (len (self .nodes [1 ].getrawmempool ()), 7 )
162
170
163
171
self .log .debug ("Prevent bitcoind from writing mempool.dat to disk. Verify that `savemempool` fails" )
164
172
# to test the exception we are creating a tmp folder called mempool.dat.new
0 commit comments