Page MenuHomePhabricator

[avalanche] Let the node relay stalled txs
ClosedPublic

Authored by Fabien on Sep 3 2025, 15:09.

Details

Reviewers
PiRK
Group Reviewers
Restricted Project
Commits
rABC8c07ad346865: [avalanche] Let the node relay stalled txs
Summary

If a tx is stalled, the node should not prevent relaying it at a later point in time. Because this tx has already been relayed before being dropped, the node would prevent further relaying.
This diff remembers the tx was stalled by avalanche so it can be relayed one more time. This makes it possible for this tx to finalize in the event it did not propagate properly before.

Test Plan
./test/functional/test_runner.py abc_p2p_avalanche_transaction_voting

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Fabien requested review of this revision.Sep 3 2025, 15:09

Tail of the build log:

  116 |     std::size_t hash_value(std::complex<T> const& v)
      |                 ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:116:17: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::complex<_Tp>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:126:17: note: candidate: ‘template<class T, long unsigned int N> std::size_t boost::hash_value(const std::array<_Tp, _Nm>&)’
  126 |     std::size_t hash_value(std::array<T, N> const& v)
      |                 ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:126:17: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::array<_Tp, _Nm>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:161:24: note: candidate: ‘template<class ... T> std::size_t boost::hash_value(const std::tuple<_UTypes ...>&)’
  161 |     inline std::size_t hash_value(std::tuple<T...> const& v)
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:161:24: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::tuple<_UTypes ...>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:238:24: note: candidate: ‘template<class T> std::size_t boost::hash_value(const std::shared_ptr<_Tp>&)’
  238 |     inline std::size_t hash_value(std::shared_ptr<T> const& x) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:238:24: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::shared_ptr<_Tp>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:243:24: note: candidate: ‘template<class T, class Deleter> std::size_t boost::hash_value(const std::unique_ptr<_Tp, _Dp>&)’
  243 |     inline std::size_t hash_value(std::unique_ptr<T, Deleter> const& x) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:243:24: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::unique_ptr<_Tp, _Dp>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/hash.hpp:521:24: note: candidate: ‘std::size_t boost::hash_value(std::monostate)’
  521 |     inline std::size_t hash_value(std::monostate) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:521:35: note:   no known conversion for argument 1 from ‘const TxId’ to ‘std::monostate’
  521 |     inline std::size_t hash_value(std::monostate) {
      |                                   ^~~~~~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:536:24: note: candidate: ‘std::size_t boost::hash_value(std::type_index)’
  536 |     inline std::size_t hash_value(std::type_index v)
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:536:51: note:   no known conversion for argument 1 from ‘const TxId’ to ‘std::type_index’
  536 |     inline std::size_t hash_value(std::type_index v)
      |                                   ~~~~~~~~~~~~~~~~^
/usr/include/boost/container_hash/hash.hpp:543:24: note: candidate: ‘std::size_t boost::hash_value(const std::error_code&)’
  543 |     inline std::size_t hash_value(std::error_code const& v) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:543:58: note:   no known conversion for argument 1 from ‘const TxId’ to ‘const std::error_code&’
  543 |     inline std::size_t hash_value(std::error_code const& v) {
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~^
/usr/include/boost/container_hash/hash.hpp:550:24: note: candidate: ‘std::size_t boost::hash_value(const std::error_condition&)’
  550 |     inline std::size_t hash_value(std::error_condition const& v) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:550:63: note:   no known conversion for argument 1 from ‘const TxId’ to ‘const std::error_condition&’
  550 |     inline std::size_t hash_value(std::error_condition const& v) {
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

Tail of the build log:

[400/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[401/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[402/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[403/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[404/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[405/586] Building CXX object src/CMakeFiles/server.dir/rpc/mempool.cpp.o
[406/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[407/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[408/586] Building CXX object src/CMakeFiles/server.dir/rpc/misc.cpp.o
[409/586] Building CXX object src/CMakeFiles/server.dir/script/scriptcache.cpp.o
[410/586] Building CXX object src/CMakeFiles/server.dir/rpc/server_util.cpp.o
[411/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[412/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[413/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[414/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[415/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[416/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[417/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[418/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[419/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[420/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[421/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[422/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[423/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[424/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[425/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[426/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[427/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[428/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[429/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[430/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[431/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[432/586] Building CXX object src/CMakeFiles/server.dir/rpc/txoutproof.cpp.o
[433/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[434/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[435/586] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[436/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[437/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[438/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[439/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[440/586] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[441/586] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[442/586] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[443/586] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[444/586] Linking CXX executable src/iguana/iguana
[445/586] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[446/586] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[447/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[448/586] Linking CXX static library src/wallet/libwallet.a
[449/586] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[450/586] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[451/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[452/586] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[453/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[454/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[455/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[456/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[457/586] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-debug failed with exit code 1

Tail of the build log:

[400/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[401/586] Linking C executable src/secp256k1/ecmult-bench
[402/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[403/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[404/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[405/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[406/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[407/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[408/586] Building CXX object src/CMakeFiles/server.dir/script/scriptcache.cpp.o
[409/586] Building CXX object src/CMakeFiles/server.dir/rpc/server_util.cpp.o
[410/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[411/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[412/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[413/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[414/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[415/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[416/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[417/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[418/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[419/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[420/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[421/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[422/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[423/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[424/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[425/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[426/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[427/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[428/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[429/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[430/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[431/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[432/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[433/586] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[434/586] Building CXX object src/CMakeFiles/server.dir/rpc/txoutproof.cpp.o
[435/586] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[436/586] Linking CXX static library src/wallet/libwallet.a
[437/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[438/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[439/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[440/586] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[441/586] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[442/586] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[443/586] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[444/586] Linking CXX executable src/iguana/iguana
[445/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[446/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[447/586] Building CXX object src/CMakeFiles/server.dir/rpc/mempool.cpp.o
[448/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[449/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[450/586] Building CXX object src/CMakeFiles/server.dir/rpc/misc.cpp.o
[451/586] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[452/586] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[453/586] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[454/586] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[455/586] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[456/586] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[457/586] 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

Tail of the build log:

[399/584] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[400/584] Linking CXX executable src/bitcoin-tx
[401/584] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[402/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[403/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[404/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[405/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[406/584] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[407/584] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[408/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[409/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[410/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[411/584] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[412/584] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[413/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[414/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[415/584] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[416/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[417/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[418/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[419/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[420/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[421/584] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[422/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[423/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[424/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[425/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[426/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[427/584] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[428/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[429/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[430/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[431/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[432/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[433/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[434/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[435/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[436/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[437/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[438/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[439/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[440/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[441/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[442/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[443/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[444/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[445/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[446/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[447/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[448/584] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[449/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[450/584] Linking CXX executable src/iguana/iguana
[451/584] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[452/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[453/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[454/584] Linking CXX static library src/wallet/libwallet.a
[455/584] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[456/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

Tail of the build log:

  116 |     std::size_t hash_value(std::complex<T> const& v)
      |                 ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:116:17: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::complex<_Tp>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:126:17: note: candidate: ‘template<class T, long unsigned int N> std::size_t boost::hash_value(const std::array<_Tp, _Nm>&)’
  126 |     std::size_t hash_value(std::array<T, N> const& v)
      |                 ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:126:17: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::array<_Tp, _Nm>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:161:24: note: candidate: ‘template<class ... T> std::size_t boost::hash_value(const std::tuple<_UTypes ...>&)’
  161 |     inline std::size_t hash_value(std::tuple<T...> const& v)
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:161:24: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::tuple<_UTypes ...>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:238:24: note: candidate: ‘template<class T> std::size_t boost::hash_value(const std::shared_ptr<_Tp>&)’
  238 |     inline std::size_t hash_value(std::shared_ptr<T> const& x) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:238:24: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::shared_ptr<_Tp>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/extensions.hpp:243:24: note: candidate: ‘template<class T, class Deleter> std::size_t boost::hash_value(const std::unique_ptr<_Tp, _Dp>&)’
  243 |     inline std::size_t hash_value(std::unique_ptr<T, Deleter> const& x) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/extensions.hpp:243:24: note:   template argument deduction/substitution failed:
/usr/include/boost/container_hash/extensions.hpp:307:30: note:   ‘const TxId’ is not derived from ‘const std::unique_ptr<_Tp, _Dp>’
  307 |             return hash_value(val);
      |                    ~~~~~~~~~~^~~~~
/usr/include/boost/container_hash/hash.hpp:521:24: note: candidate: ‘std::size_t boost::hash_value(std::monostate)’
  521 |     inline std::size_t hash_value(std::monostate) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:521:35: note:   no known conversion for argument 1 from ‘const TxId’ to ‘std::monostate’
  521 |     inline std::size_t hash_value(std::monostate) {
      |                                   ^~~~~~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:536:24: note: candidate: ‘std::size_t boost::hash_value(std::type_index)’
  536 |     inline std::size_t hash_value(std::type_index v)
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:536:51: note:   no known conversion for argument 1 from ‘const TxId’ to ‘std::type_index’
  536 |     inline std::size_t hash_value(std::type_index v)
      |                                   ~~~~~~~~~~~~~~~~^
/usr/include/boost/container_hash/hash.hpp:543:24: note: candidate: ‘std::size_t boost::hash_value(const std::error_code&)’
  543 |     inline std::size_t hash_value(std::error_code const& v) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:543:58: note:   no known conversion for argument 1 from ‘const TxId’ to ‘const std::error_code&’
  543 |     inline std::size_t hash_value(std::error_code const& v) {
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~^
/usr/include/boost/container_hash/hash.hpp:550:24: note: candidate: ‘std::size_t boost::hash_value(const std::error_condition&)’
  550 |     inline std::size_t hash_value(std::error_condition const& v) {
      |                        ^~~~~~~~~~
/usr/include/boost/container_hash/hash.hpp:550:63: note:   no known conversion for argument 1 from ‘const TxId’ to ‘const std::error_condition&’
  550 |     inline std::size_t hash_value(std::error_condition const& v) {
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
ninja: build stopped: cannot make progress due to previous errors.
Build build-diff failed with exit code 1
Fabien planned changes to this revision.Sep 3 2025, 16:10

Fix variables shadowing and compatibility with older Boost versions

bytesofman added inline comments.
src/net_processing.cpp
505 ↗(On Diff #55472)

what is an avalanche stalled tx?

src/net_processing.cpp
505 ↗(On Diff #55472)

A tx for which the vote is unconclusive. Either your peers don't have the tx or the network didn't manage to converge quickly enough. In this case we just drop the tx and make sure we can reprocess it later.

src/net_processing.cpp
505 ↗(On Diff #55472)

what does "drop the tx" mean here? remove it from the mempool?

src/net_processing.cpp
505 ↗(On Diff #55472)

Yes, we remove it from the mempool. The goal is to act just like we never got this tx.

This revision is now accepted and ready to land.Sep 4 2025, 10:30
This revision was automatically updated to reflect the committed changes.