When the mempool is full we start evicting the txs with the lowest fees. The finalized txs should never be removed that way to prevent from any status change.
Depends on D18234.
Differential D18235
[avalanche] Protect finalized txs from eviction for low fee Authored by Fabien on Jun 10 2025, 13:43. Tags None Subscribers None
Details
When the mempool is full we start evicting the txs with the lowest fees. The finalized txs should never be removed that way to prevent from any status change. Depends on D18234. ./test/functional/test_runner.py abc_p2p_avalanche_transaction_finalization
Diff Detail
Event TimelineComment Actions Build Bitcoin ABC Diffs / Diff Testing (build-clang) failed.
Tail of the build log: [398/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o [399/584] Building CXX object src/CMakeFiles/server.dir/node/ui_interface.cpp.o [400/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o [401/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o [402/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o [403/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o [404/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o [405/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o [406/584] Building CXX object src/CMakeFiles/server.dir/txdb.cpp.o [407/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o [408/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o [409/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o [410/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o [411/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o [412/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o [413/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o [414/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o [415/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o [416/584] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o [417/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o [418/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o [419/584] Linking C executable src/secp256k1/ecmult-bench [420/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o [421/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o [422/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o [423/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o [424/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o [425/584] Building CXX object src/CMakeFiles/server.dir/rpc/mempool.cpp.o [426/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o [427/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o [428/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o [429/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o [430/584] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o [431/584] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o [432/584] Building CXX object src/CMakeFiles/server.dir/rpc/misc.cpp.o [433/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o [434/584] Linking CXX executable src/bitcoin-cli [435/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o [436/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o [437/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o [438/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o [439/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o [440/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o [441/584] Linking CXX executable src/iguana/iguana [442/584] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o [443/584] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o [444/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o [445/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o [446/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o [447/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o [448/584] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o [449/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o [450/584] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o [451/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o [452/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o [453/584] Linking CXX static library src/wallet/libwallet.a [454/584] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o [455/584] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o ninja: build stopped: cannot make progress due to previous errors. Build build-clang failed with exit code 1 Comment Actions Build Bitcoin ABC Diffs / Diff Testing (build-clang-tidy) failed.
Tail of the build log: [397/582] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o [398/582] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o [399/582] Linking CXX executable src/bitcoin-tx [400/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o [401/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o [402/582] Building CXX object src/CMakeFiles/server.dir/rpc/server_util.cpp.o [403/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o [404/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o [405/582] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o [406/582] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o [407/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o [408/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o [409/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o [410/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o [411/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o [412/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o [413/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o [414/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o [415/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o [416/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o [417/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o [418/582] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o [419/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o [420/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o [421/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o [422/582] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o [423/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o [424/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o [425/582] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o [426/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o [427/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o [428/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o [429/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o [430/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o [431/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o [432/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o [433/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o [434/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o [435/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o [436/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o [437/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o [438/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o [439/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o [440/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o [441/582] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o [442/582] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o [443/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o [444/582] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o [445/582] Linking CXX executable src/iguana/iguana [446/582] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o [447/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o [448/582] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o [449/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o [450/582] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o [451/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o [452/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o [453/582] Linking CXX static library src/wallet/libwallet.a [454/582] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o ninja: build stopped: cannot make progress due to previous errors. Build build-clang-tidy failed with exit code 1 Comment Actions Build Bitcoin ABC Diffs / Diff Testing (build-debug) failed.
Failed tests logs: ====== Bitcoin ABC functional tests: abc_p2p_avalanche_cooldown.py ======
------- Stdout: -------
2025-06-10T14:03:50.237000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250610_140103_15043/abc_p2p_avalanche_cooldown_56
2025-06-10T14:03:54.653000Z TestFramework (INFO): First poll is legit
2025-06-10T14:03:54.708000Z TestFramework (INFO): Subsequent polls are spams for type {CInv().typemap[inv[1]]}
2025-06-10T14:03:54.860000Z TestFramework (INFO): Subsequent polls are spams for type {CInv().typemap[inv[1]]}
2025-06-10T14:03:55.012000Z TestFramework (INFO): Subsequent polls are spams for type {CInv().typemap[inv[1]]}
2025-06-10T14:03:55.164000Z TestFramework (INFO): Subsequent polls are spams for unknown type
2025-06-10T14:03:59.820000Z TestFramework (INFO): First poll is legit for type Block
2025-06-10T14:03:59.875000Z TestFramework (INFO): Subsequent polls are legit
2025-06-10T14:04:00.444000Z TestFramework (INFO): First poll is legit for type avalanche proof
2025-06-10T14:04:00.499000Z TestFramework (INFO): Subsequent polls are legit
2025-06-10T14:04:01.066000Z TestFramework (INFO): First poll is legit for type TX
2025-06-10T14:04:01.217000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File "/work/test/functional/test_framework/test_framework.py", line 152, in main
self._run_test_internal()
File "/work/test/functional/test_framework/test_framework.py", line 142, in _run_test_internal
self.run_test()
File "/work/test/functional/abc_p2p_avalanche_cooldown.py", line 139, in run_test
check_poll(inv=inv, expect_response=True)
File "/work/test/functional/abc_p2p_avalanche_cooldown.py", line 80, in check_poll
response = poll_node.wait_for_avaresponse()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/avatools.py", line 239, in wait_for_avaresponse
self.wait_until(lambda: len(self.avaresponses) > 0, timeout=timeout)
File "/work/test/functional/test_framework/p2p.py", line 582, in wait_until
wait_until_helper(
File "/work/test/functional/test_framework/util.py", line 302, in wait_until_helper
if predicate():
^^^^^^^^^^^
File "/work/test/functional/test_framework/p2p.py", line 579, in test_function
assert self.is_connected
AssertionError
2025-06-10T14:04:01.269000Z TestFramework (INFO): Stopping nodes
[node 0] Cleaning up leftover process
------- Stderr: -------
Traceback (most recent call last):
File "/work/test/functional/abc_p2p_avalanche_cooldown.py", line 167, in <module>
AvalancheCooldownTest().main()
File "/work/test/functional/test_framework/test_framework.py", line 175, in main
exit_code = self.shutdown()
^^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/test_framework.py", line 404, in shutdown
self.stop_nodes()
File "/work/test/functional/test_framework/test_framework.py", line 659, in stop_nodes
node.stop_node(wait=wait, wait_until_stopped=False)
File "/work/test/functional/test_framework/test_node.py", line 537, in stop_node
self.stop(wait=wait)
File "/work/test/functional/test_framework/coverage.py", line 46, in __call__
return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/authproxy.py", line 146, in __call__
response, status = self._request(
^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/authproxy.py", line 114, in _request
self.__conn.request(method, path, postdata, headers)
File "/usr/lib/python3.11/http/client.py", line 1282, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.11/http/client.py", line 1328, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.11/http/client.py", line 1277, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.11/http/client.py", line 1076, in _send_output
self.send(chunk)
File "/usr/lib/python3.11/http/client.py", line 998, in send
self.sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe
====== Bitcoin ABC functional tests: abc_p2p_avalanche_transaction_voting.py ======
------- Stdout: -------
2025-06-10T14:01:07.397000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250610_140103_15043/abc_p2p_avalanche_transaction_voting_4
2025-06-10T14:01:10.908000Z TestFramework (INFO): Check the votes are unknown while the quorum is not established
2025-06-10T14:01:10.917000Z TestFramework (INFO): Check the votes on valid mempool transactions
2025-06-10T14:01:13.654000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File "/work/test/functional/test_framework/test_framework.py", line 152, in main
self._run_test_internal()
File "/work/test/functional/test_framework/test_framework.py", line 142, in _run_test_internal
self.run_test()
File "/work/test/functional/abc_p2p_avalanche_transaction_voting.py", line 101, in run_test
assert_response(
File "/work/test/functional/test_framework/avatools.py", line 526, in assert_response
response = poll_node.wait_for_avaresponse()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/avatools.py", line 239, in wait_for_avaresponse
self.wait_until(lambda: len(self.avaresponses) > 0, timeout=timeout)
File "/work/test/functional/test_framework/p2p.py", line 582, in wait_until
wait_until_helper(
File "/work/test/functional/test_framework/util.py", line 302, in wait_until_helper
if predicate():
^^^^^^^^^^^
File "/work/test/functional/test_framework/p2p.py", line 579, in test_function
assert self.is_connected
AssertionError
2025-06-10T14:01:13.706000Z TestFramework (INFO): Stopping nodes
[node 0] Cleaning up leftover process
------- Stderr: -------
Traceback (most recent call last):
File "/work/test/functional/abc_p2p_avalanche_transaction_voting.py", line 616, in <module>
AvalancheTransactionVotingTest().main()
File "/work/test/functional/test_framework/test_framework.py", line 175, in main
exit_code = self.shutdown()
^^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/test_framework.py", line 404, in shutdown
self.stop_nodes()
File "/work/test/functional/test_framework/test_framework.py", line 659, in stop_nodes
node.stop_node(wait=wait, wait_until_stopped=False)
File "/work/test/functional/test_framework/test_node.py", line 537, in stop_node
self.stop(wait=wait)
File "/work/test/functional/test_framework/coverage.py", line 46, in __call__
return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/authproxy.py", line 146, in __call__
response, status = self._request(
^^^^^^^^^^^^^^
File "/work/test/functional/test_framework/authproxy.py", line 114, in _request
self.__conn.request(method, path, postdata, headers)
File "/usr/lib/python3.11/http/client.py", line 1282, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.11/http/client.py", line 1328, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.11/http/client.py", line 1277, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.11/http/client.py", line 1076, in _send_output
self.send(chunk)
File "/usr/lib/python3.11/http/client.py", line 998, in send
self.sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipeEach failure log is accessible here: |