Page MenuHomePhabricator

[avalanche] Add a peer availability score that aggregates node availability scores
ClosedPublic

Authored by sdulfari on Jan 27 2023, 23:06.

Details

Summary

A peer availability score lets us know at a high level if a peer is serving avalanche traffic. At a minimum this is useful for debugging but new possibilities become available such as staking rewards based on a combination of proof score (stake amount) and peer availability (utility to the network). This patch implements calculating the score but does not use it yet. These scores will be available via RPC in a follow up patch.

Test Plan
ninja check check-functional

Diff Detail

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

Event Timeline

Tail of the build log:

FAILED: src/CMakeFiles/server.dir/avalanche/processor.cpp.o 
/usr/bin/ccache /usr/bin/clang++ -DBOOST_AC_USE_STD_ATOMIC -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_SP_USE_STD_ATOMIC -DBOOST_THREAD_DYN_LINK -DBUILD_BITCOIN_INTERNAL -DENABLE_AVX2 -DENABLE_SHANI -DENABLE_SSE41 -DHAVE_BUILD_INFO -DHAVE_CONFIG_H -DHAVE_CONSENSUS_LIB -DLEVELDB_ATOMIC_PRESENT -DLEVELDB_PLATFORM_POSIX -DOS_LINUX -I../../src/leveldb/helpers/memenv -I../../src/. -Isrc -I../../src/univalue/include -Isrc/crypto/.. -I../../src/secp256k1/include -I../../src/leveldb/include -isystem /usr/include/jemalloc -isystem /usr/include/miniupnpc -Werror -g -O2 -fPIC -fvisibility=hidden -fstack-protector-all -Wstack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wformat -Wgnu -Wvla -Wcast-align -Wunused-parameter -Wmissing-braces -Wthread-safety -Wrange-loop-analysis -Wredundant-decls -Wunreachable-code-loop-increment -Wsign-compare -Wconditional-uninitialized -Wdocumentation -Wformat-security -Wredundant-move -Woverloaded-virtual -Wshadow -Wshadow-field -Wno-unused-parameter -Wno-implicit-fallthrough -pthread -std=gnu++17 -MD -MT src/CMakeFiles/server.dir/avalanche/processor.cpp.o -MF src/CMakeFiles/server.dir/avalanche/processor.cpp.o.d -o src/CMakeFiles/server.dir/avalanche/processor.cpp.o -c ../../src/avalanche/processor.cpp
In file included from ../../src/avalanche/processor.cpp:9:
../../src/./avalanche/peermanager.h:395:36: error: cannot assign to variable 'peer' with const-qualified type 'const avalanche::Peer &'
            peer.availabilityScore =
            ~~~~~~~~~~~~~~~~~~~~~~ ^
../../src/./avalanche/peermanager.h:386:48: note: variable 'peer' declared const here
        forEachPeer([&](const avalanche::Peer &peer) {
                        ~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 error generated.
[411/536] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
FAILED: src/CMakeFiles/server.dir/rpc/avalanche.cpp.o 
/usr/bin/ccache /usr/bin/clang++ -DBOOST_AC_USE_STD_ATOMIC -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_SP_USE_STD_ATOMIC -DBOOST_THREAD_DYN_LINK -DBUILD_BITCOIN_INTERNAL -DENABLE_AVX2 -DENABLE_SHANI -DENABLE_SSE41 -DHAVE_BUILD_INFO -DHAVE_CONFIG_H -DHAVE_CONSENSUS_LIB -DLEVELDB_ATOMIC_PRESENT -DLEVELDB_PLATFORM_POSIX -DOS_LINUX -I../../src/leveldb/helpers/memenv -I../../src/. -Isrc -I../../src/univalue/include -Isrc/crypto/.. -I../../src/secp256k1/include -I../../src/leveldb/include -isystem /usr/include/jemalloc -isystem /usr/include/miniupnpc -Werror -g -O2 -fPIC -fvisibility=hidden -fstack-protector-all -Wstack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wformat -Wgnu -Wvla -Wcast-align -Wunused-parameter -Wmissing-braces -Wthread-safety -Wrange-loop-analysis -Wredundant-decls -Wunreachable-code-loop-increment -Wsign-compare -Wconditional-uninitialized -Wdocumentation -Wformat-security -Wredundant-move -Woverloaded-virtual -Wshadow -Wshadow-field -Wno-unused-parameter -Wno-implicit-fallthrough -pthread -std=gnu++17 -MD -MT src/CMakeFiles/server.dir/rpc/avalanche.cpp.o -MF src/CMakeFiles/server.dir/rpc/avalanche.cpp.o.d -o src/CMakeFiles/server.dir/rpc/avalanche.cpp.o -c ../../src/rpc/avalanche.cpp
In file included from ../../src/rpc/avalanche.cpp:8:
../../src/./avalanche/peermanager.h:395:36: error: cannot assign to variable 'peer' with const-qualified type 'const avalanche::Peer &'
            peer.availabilityScore =
            ~~~~~~~~~~~~~~~~~~~~~~ ^
../../src/./avalanche/peermanager.h:386:48: note: variable 'peer' declared const here
        forEachPeer([&](const avalanche::Peer &peer) {
                        ~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 error generated.
[412/536] Building CXX object src/CMakeFiles/server.dir/net_processing.cpp.o
FAILED: src/CMakeFiles/server.dir/net_processing.cpp.o 
/usr/bin/ccache /usr/bin/clang++ -DBOOST_AC_USE_STD_ATOMIC -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_SP_USE_STD_ATOMIC -DBOOST_THREAD_DYN_LINK -DBUILD_BITCOIN_INTERNAL -DENABLE_AVX2 -DENABLE_SHANI -DENABLE_SSE41 -DHAVE_BUILD_INFO -DHAVE_CONFIG_H -DHAVE_CONSENSUS_LIB -DLEVELDB_ATOMIC_PRESENT -DLEVELDB_PLATFORM_POSIX -DOS_LINUX -I../../src/leveldb/helpers/memenv -I../../src/. -Isrc -I../../src/univalue/include -Isrc/crypto/.. -I../../src/secp256k1/include -I../../src/leveldb/include -isystem /usr/include/jemalloc -isystem /usr/include/miniupnpc -Werror -g -O2 -fPIC -fvisibility=hidden -fstack-protector-all -Wstack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wformat -Wgnu -Wvla -Wcast-align -Wunused-parameter -Wmissing-braces -Wthread-safety -Wrange-loop-analysis -Wredundant-decls -Wunreachable-code-loop-increment -Wsign-compare -Wconditional-uninitialized -Wdocumentation -Wformat-security -Wredundant-move -Woverloaded-virtual -Wshadow -Wshadow-field -Wno-unused-parameter -Wno-implicit-fallthrough -pthread -std=gnu++17 -MD -MT src/CMakeFiles/server.dir/net_processing.cpp.o -MF src/CMakeFiles/server.dir/net_processing.cpp.o.d -o src/CMakeFiles/server.dir/net_processing.cpp.o -c ../../src/net_processing.cpp
In file included from ../../src/net_processing.cpp:11:
../../src/./avalanche/peermanager.h:395:36: error: cannot assign to variable 'peer' with const-qualified type 'const avalanche::Peer &'
            peer.availabilityScore =
            ~~~~~~~~~~~~~~~~~~~~~~ ^
../../src/./avalanche/peermanager.h:386:48: note: variable 'peer' declared const here
        forEachPeer([&](const avalanche::Peer &peer) {
                        ~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../src/net_processing.cpp:1722:48: error: no viable conversion from '(lambda at ../../src/net_processing.cpp:1722:48)' to 'std::function<bool (CNode *)>'
                m_connman.ForNode(node.nodeid, [&](CNode *pavanode) {
                                               ^~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:337:7: note: candidate constructor not viable: no known conversion from '(lambda at ../../src/net_processing.cpp:1722:48)' to 'std::nullptr_t' (aka 'nullptr_t') for 1st argument
      function(nullptr_t) noexcept
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:348:7: note: candidate constructor not viable: no known conversion from '(lambda at ../../src/net_processing.cpp:1722:48)' to 'const std::function<bool (CNode *)> &' for 1st argument
      function(const function& __x);
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:357:7: note: candidate constructor not viable: no known conversion from '(lambda at ../../src/net_processing.cpp:1722:48)' to 'std::function<bool (CNode *)> &&' for 1st argument
      function(function&& __x) noexcept : _Function_base()
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:381:2: note: candidate template ignored: requirement '_Callable<(lambda at ../../src/net_processing.cpp:1722:48), std::__invoke_result<(lambda at ../../src/net_processing.cpp:1722:48) &, CNode *>>::value' was not satisfied [with _Functor = (lambda at ../../src/net_processing.cpp:1722:48), $1 = void]
        function(_Functor);
        ^
../../src/./net.h:1010:63: note: passing argument to parameter 'func' here
    bool ForNode(NodeId id, std::function<bool(CNode *pnode)> func);
                                                              ^
../../src/net_processing.cpp:1728:36: error: cannot assign to variable 'peer' with const-qualified type 'const avalanche::Peer &'
            peer.availabilityScore =
            ~~~~~~~~~~~~~~~~~~~~~~ ^
../../src/net_processing.cpp:1719:51: note: variable 'peer' declared const here
        pm.forEachPeer([&](const avalanche::Peer &peer) {
                           ~~~~~~~~~~~~~~~~~~~~~~~^~~~
3 errors generated.
[413/536] Building CXX object src/CMakeFiles/server.dir/init.cpp.o
[414/536] 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:

[378/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[379/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[380/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[381/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[382/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[383/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[384/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[385/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[386/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[387/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[388/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[389/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[390/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[391/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[392/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[393/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[394/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[395/536] Linking CXX static library src/libcommon.a
[396/536] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[397/536] Linking CXX static library src/libscript.a
[398/536] Linking CXX static library src/libbitcoinconsensus.a
[399/536] Linking CXX shared library src/libbitcoinconsensus.so.0.26.12
[400/536] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[401/536] Linking CXX executable src/bitcoin-cli
[402/536] Linking CXX executable src/bitcoin-tx
[403/536] Linking CXX static library src/wallet/libwallet.a
[404/536] Linking CXX static library src/wallet/libwallet-tool.a
[405/536] Linking CXX executable src/bitcoin-wallet
[406/536] Building CXX object src/CMakeFiles/server.dir/avalanche/proofpool.cpp.o
[407/536] Building CXX object src/CMakeFiles/server.dir/avalanche/peermanager.cpp.o
[408/536] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[409/536] Building CXX object src/CMakeFiles/server.dir/node/miner.cpp.o
[410/536] Building CXX object src/CMakeFiles/server.dir/net_processing.cpp.o
FAILED: src/CMakeFiles/server.dir/net_processing.cpp.o 
/usr/bin/ccache /usr/bin/c++ -DABORT_ON_FAILED_ASSUME -DBOOST_AC_USE_STD_ATOMIC -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_SP_USE_STD_ATOMIC -DBOOST_THREAD_DYN_LINK -DBUILD_BITCOIN_INTERNAL -DDEBUG -DDEBUG_LOCKORDER -DENABLE_AVX2 -DENABLE_SHANI -DENABLE_SSE41 -DHAVE_BUILD_INFO -DHAVE_CONFIG_H -DHAVE_CONSENSUS_LIB -DLEVELDB_ATOMIC_PRESENT -DLEVELDB_PLATFORM_POSIX -DOS_LINUX -I../../src/leveldb/helpers/memenv -I../../src/. -Isrc -I../../src/univalue/include -Isrc/crypto/.. -I../../src/secp256k1/include -I../../src/leveldb/include -isystem /usr/include/jemalloc -isystem /usr/include/miniupnpc -Werror -O0 -fPIC -fvisibility=hidden -g3 -ftrapv -fstack-reuse=none -fstack-protector-all -Wstack-protector -U_FORTIFY_SOURCE -Wall -Wextra -Wformat -Wvla -Wcast-align -Wunused-parameter -Wmissing-braces -Wredundant-decls -Wsign-compare -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Wformat-security -Wredundant-move -Woverloaded-virtual -Wno-unused-parameter -Wno-implicit-fallthrough -pthread -std=gnu++17 -MD -MT src/CMakeFiles/server.dir/net_processing.cpp.o -MF src/CMakeFiles/server.dir/net_processing.cpp.o.d -o src/CMakeFiles/server.dir/net_processing.cpp.o -c ../../src/net_processing.cpp
../../src/net_processing.cpp: In lambda function:
../../src/net_processing.cpp:1724:18: error: cannot convert ‘{anonymous}::PeerManagerImpl::UpdateAvalancheStatistics() const::<lambda(const avalanche::PeerManager&)>::<lambda(const avalanche::Peer&)>::<lambda(const avalanche::Node&)>::<lambda(CNode*)>’ to ‘std::function<bool(CNode*)>’
 1724 |                 });
      |                  ^
In file included from ../../src/./net_processing.h:9,
                 from ../../src/net_processing.cpp:6:
../../src/./net.h:1010:63: note:   initializing argument 2 of ‘bool CConnman::ForNode(NodeId, std::function<bool(CNode*)>)’
 1010 |     bool ForNode(NodeId id, std::function<bool(CNode *pnode)> func);
      |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../src/net_processing.cpp: In lambda function:
../../src/net_processing.cpp:1728:36: error: assignment of member ‘avalanche::Peer::availabilityScore’ in read-only object
 1728 |             peer.availabilityScore =
      |             ~~~~~~~~~~~~~~~~~~~~~~~^
 1729 |                 AVALANCHE_STATISTICS_DECAY_FACTOR * peerScore +
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1730 |                 (1. - AVALANCHE_STATISTICS_DECAY_FACTOR) *
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1731 |                     peer.availabilityScore;
      |                     ~~~~~~~~~~~~~~~~~~~~~~
[411/536] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[412/536] Building CXX object src/CMakeFiles/server.dir/avalanche/processor.cpp.o
[413/536] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[414/536] Building CXX object src/CMakeFiles/server.dir/init.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:

[328/476] Building CXX object src/CMakeFiles/server.dir/script/sigcache.cpp.o
[329/476] Building CXX object src/CMakeFiles/server.dir/shutdown.cpp.o
[330/476] Building CXX object src/CMakeFiles/server.dir/timedata.cpp.o
[331/476] Building CXX object src/CMakeFiles/server.dir/rpc/server_util.cpp.o
[332/476] Building CXX object src/CMakeFiles/server.dir/txdb.cpp.o
[333/476] Building CXX object src/CMakeFiles/server.dir/node/interfaces.cpp.o
[334/476] Building CXX object src/CMakeFiles/server.dir/node/miner.cpp.o
[335/476] Building CXX object src/CMakeFiles/server.dir/script/scriptcache.cpp.o
[336/476] Building CXX object src/CMakeFiles/server.dir/validationinterface.cpp.o
[337/476] Building CXX object src/CMakeFiles/server.dir/versionbits.cpp.o
[338/476] Building CXX object src/CMakeFiles/server.dir/dummywallet.cpp.o
[339/476] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[340/476] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[341/476] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[342/476] Linking C static library src/secp256k1/libsecp256k1.a
[343/476] Building CXX object src/CMakeFiles/server.dir/rpc/txoutproof.cpp.o
[344/476] Linking CXX static library src/libscript.a
[345/476] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[346/476] Linking C executable src/secp256k1/recover-bench
[347/476] Linking CXX static library src/libbitcoinconsensus.a
[348/476] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[349/476] Linking C executable src/secp256k1/ecmult-bench
[350/476] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[351/476] Linking C executable src/secp256k1/verify-bench
[352/476] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[353/476] Linking C executable src/secp256k1/sign-bench
[354/476] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[355/476] Linking CXX static library src/libcommon.a
[356/476] Building CXX object src/CMakeFiles/server.dir/rest.cpp.o
[357/476] Linking C executable src/secp256k1/internal-bench
[358/476] Linking CXX shared library src/libbitcoinconsensus.so.0.26.12
[359/476] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[360/476] Linking CXX executable src/bitcoin-cli
[361/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[362/476] Building CXX object src/CMakeFiles/server.dir/net.cpp.o
[363/476] Linking CXX executable src/bitcoin-tx
[364/476] Building CXX object src/CMakeFiles/server.dir/txorphanage.cpp.o
[365/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[366/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[367/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[368/476] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[369/476] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[370/476] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[371/476] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[372/476] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[373/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[374/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[375/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[376/476] Building CXX object src/CMakeFiles/server.dir/torcontrol.cpp.o
[377/476] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[378/476] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[379/476] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[380/476] Building CXX object src/CMakeFiles/server.dir/init.cpp.o
[381/476] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[382/476] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[383/476] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[384/476] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[385/476] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

Tail of the build log:

[356/534] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[357/534] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[358/534] Linking C executable src/secp256k1/sign-bench
[359/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[360/534] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[361/534] Building CXX object src/CMakeFiles/server.dir/txorphanage.cpp.o
[362/534] Linking C executable src/secp256k1/ecmult-bench
[363/534] Building CXX object src/CMakeFiles/server.dir/torcontrol.cpp.o
[364/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[365/534] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[366/534] Linking C executable src/secp256k1/internal-bench
[367/534] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[368/534] Linking CXX executable src/bitcoin-cli
[369/534] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[370/534] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[371/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[372/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[373/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[374/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[375/534] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[376/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[377/534] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[378/534] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[379/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[380/534] Linking CXX executable src/bitcoin-tx
[381/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[382/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[383/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[384/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[385/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[386/534] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[387/534] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[388/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[389/534] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[390/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[391/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[392/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[393/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[394/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[395/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[396/534] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[397/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[398/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[399/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[400/534] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[401/534] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[402/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[403/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[404/534] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[405/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[406/534] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[407/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[408/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[409/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[410/534] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[411/534] Linking CXX static library src/wallet/libwallet.a
[412/534] Linking CXX static library src/wallet/libwallet-tool.a
[413/534] Linking CXX executable src/bitcoin-wallet
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

Tail of the build log:

-- Install component: "secp256k1"
-- Installing: /results/artifacts/lib/libsecp256k1.a
-- Installing: /results/artifacts/include/secp256k1.h
-- Installing: /results/artifacts/include/secp256k1_preallocated.h
-- Installing: /results/artifacts/include/secp256k1_recovery.h
-- Installing: /results/artifacts/include/secp256k1_schnorr.h
[363/536] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[364/536] Linking C executable src/secp256k1/internal-bench
[365/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[366/536] Building CXX object src/CMakeFiles/server.dir/torcontrol.cpp.o
[367/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[368/536] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[369/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[370/536] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[371/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[372/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[373/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[374/536] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[375/536] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[376/536] Linking CXX executable src/bitcoin-cli
[377/536] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[378/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[379/536] Linking CXX executable src/bitcoin-tx
[380/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[381/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[382/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[383/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[384/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[385/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[386/536] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[387/536] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[388/536] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[389/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[390/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[391/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[392/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[393/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[394/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[395/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[396/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[397/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[398/536] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[399/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[400/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[401/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[402/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[403/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[404/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[405/536] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[406/536] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[407/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[408/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[409/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[410/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[411/536] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[412/536] Linking CXX static library src/wallet/libwallet.a
[413/536] Linking CXX static library src/wallet/libwallet-tool.a
[414/536] Linking CXX executable src/bitcoin-wallet
ninja: build stopped: cannot make progress due to previous errors.
Build build-diff failed with exit code 1

Finish the code + add tests

Tail of the build log:

wallet_importdescriptors.py               | ○ Skipped | 0 s
wallet_importmulti.py                     | ○ Skipped | 0 s
wallet_importprunedfunds.py               | ○ Skipped | 0 s
wallet_importprunedfunds.py --descriptors | ○ Skipped | 0 s
wallet_keypool.py                         | ○ Skipped | 0 s
wallet_keypool_topup.py                   | ○ Skipped | 0 s
wallet_keypool_topup.py --descriptors     | ○ Skipped | 0 s
wallet_labels.py                          | ○ Skipped | 0 s
wallet_labels.py --descriptors            | ○ Skipped | 0 s
wallet_listreceivedby.py                  | ○ Skipped | 0 s
wallet_listsinceblock.py                  | ○ Skipped | 0 s
wallet_listsinceblock.py --descriptors    | ○ Skipped | 0 s
wallet_listtransactions.py                | ○ Skipped | 0 s
wallet_listtransactions.py --descriptors  | ○ Skipped | 0 s
wallet_multiwallet.py                     | ○ Skipped | 0 s
wallet_multiwallet.py --usecli            | ○ Skipped | 0 s
wallet_reorgsrestore.py                   | ○ Skipped | 0 s
wallet_resendwallettransactions.py        | ○ Skipped | 0 s
wallet_send.py                            | ○ Skipped | 0 s
wallet_startup.py                         | ○ Skipped | 0 s
wallet_timelock.py                        | ○ Skipped | 0 s
wallet_txn_clone.py                       | ○ Skipped | 0 s
wallet_txn_clone.py --mineblock           | ○ Skipped | 0 s
wallet_txn_doublespend.py                 | ○ Skipped | 0 s
wallet_txn_doublespend.py --mineblock     | ○ Skipped | 0 s
wallet_watchonly.py                       | ○ Skipped | 0 s
wallet_watchonly.py --usecli              | ○ Skipped | 0 s

ALL                                       | ✓ Passed  | 724 s (accumulated) 
Runtime: 145 s

[151/444] Test Bitcoin RPC authentication...
...
----------------------------------------------------------------------
Ran 3 tests in 0.005s

OK
[152/444] cd /work/contrib/devtools/chainparams && /usr/bin/python3.9 ./test_make_chainparams.py
.....
----------------------------------------------------------------------
Ran 5 tests in 0.001s

OK
[179/444] Running seeder test suite
PASSED: seeder test suite
[183/444] Running pow test suite
PASSED: pow test suite
[187/444] Running bitcoin-qt test suite
PASSED: bitcoin-qt test suite
[188/444] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/script_tests.cpp.o
In file included from /usr/include/boost/test/unit_test.hpp:19,
                 from ../../src/test/script_tests.cpp:30:
../../src/test/script_tests.cpp: In member function ‘void script_tests::script_build::test_method()’:
../../src/test/script_tests.cpp:540:22: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
  540 | BOOST_AUTO_TEST_CASE(script_build) {
      |                      ^~~~~~~~~~~~
[423/444] Running bitcoin test suite
PASSED: bitcoin test suite
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

Tail of the build log:

wallet_avoidreuse.py                      | ✓ Passed  | 5 s
wallet_avoidreuse.py --descriptors        | ✓ Passed  | 4 s
wallet_backup.py                          | ✓ Passed  | 24 s
wallet_balance.py                         | ✓ Passed  | 6 s
wallet_balance.py --descriptors           | ✓ Passed  | 9 s
wallet_basic.py                           | ✓ Passed  | 15 s
wallet_coinbase_category.py               | ✓ Passed  | 1 s
wallet_create_tx.py                       | ✓ Passed  | 5 s
wallet_createwallet.py                    | ✓ Passed  | 3 s
wallet_createwallet.py --descriptors      | ✓ Passed  | 3 s
wallet_createwallet.py --usecli           | ✓ Passed  | 3 s
wallet_descriptor.py                      | ✓ Passed  | 6 s
wallet_disable.py                         | ✓ Passed  | 0 s
wallet_dump.py                            | ✓ Passed  | 4 s
wallet_encryption.py                      | ✓ Passed  | 5 s
wallet_encryption.py --descriptors        | ✓ Passed  | 5 s
wallet_groups.py                          | ✓ Passed  | 13 s
wallet_hd.py                              | ✓ Passed  | 9 s
wallet_hd.py --descriptors                | ✓ Passed  | 6 s
wallet_import_rescan.py                   | ✓ Passed  | 7 s
wallet_import_with_label.py               | ✓ Passed  | 1 s
wallet_importdescriptors.py               | ✓ Passed  | 4 s
wallet_importmulti.py                     | ✓ Passed  | 3 s
wallet_importprunedfunds.py               | ✓ Passed  | 2 s
wallet_importprunedfunds.py --descriptors | ✓ Passed  | 2 s
wallet_keypool.py                         | ✓ Passed  | 2 s
wallet_keypool_topup.py                   | ✓ Passed  | 4 s
wallet_keypool_topup.py --descriptors     | ✓ Passed  | 5 s
wallet_labels.py                          | ✓ Passed  | 3 s
wallet_labels.py --descriptors            | ✓ Passed  | 3 s
wallet_listreceivedby.py                  | ✓ Passed  | 5 s
wallet_listsinceblock.py                  | ✓ Passed  | 7 s
wallet_listsinceblock.py --descriptors    | ✓ Passed  | 6 s
wallet_listtransactions.py                | ✓ Passed  | 4 s
wallet_listtransactions.py --descriptors  | ✓ Passed  | 5 s
wallet_multiwallet.py                     | ✓ Passed  | 38 s
wallet_multiwallet.py --usecli            | ✓ Passed  | 11 s
wallet_reorgsrestore.py                   | ✓ Passed  | 3 s
wallet_resendwallettransactions.py        | ✓ Passed  | 15 s
wallet_send.py                            | ✓ Passed  | 8 s
wallet_startup.py                         | ✓ Passed  | 2 s
wallet_timelock.py                        | ✓ Passed  | 1 s
wallet_txn_clone.py                       | ✓ Passed  | 1 s
wallet_txn_clone.py --mineblock           | ✓ Passed  | 3 s
wallet_txn_doublespend.py                 | ✓ Passed  | 2 s
wallet_txn_doublespend.py --mineblock     | ✓ Passed  | 4 s
wallet_watchonly.py                       | ✓ Passed  | 1 s
wallet_watchonly.py --usecli              | ✓ Passed  | 1 s
chronik_block.py                          | ○ Skipped | 0 s
chronik_resync.py                         | ○ Skipped | 0 s
chronik_serve.py                          | ○ Skipped | 0 s
interface_usdt_net.py                     | ○ Skipped | 0 s
interface_usdt_utxocache.py               | ○ Skipped | 0 s
interface_usdt_validation.py              | ○ Skipped | 0 s

ALL                                       | ✓ Passed  | 1294 s (accumulated) 
Runtime: 259 s

ninja: build stopped: cannot make progress due to previous errors.
Build build-diff failed with exit code 1
sdulfari published this revision for review.Mar 14 2023, 23:59

@bot build-tsan

src/net_processing.cpp
1691 ↗(On Diff #38585)

Isn't that a reversed lock order ? cs_peermanager->cs_vnodes ?

This revision is now accepted and ready to land.Mar 15 2023, 13:48