Page MenuHomePhabricator

[avalanche] Use the block fitter to track the finalized txs statistics
ClosedPublic

Authored by Fabien on Wed, Mar 12, 21:16.

Details

Summary

This will later be used to check if a transaction would fit a block, and implement a back pressure feature to avoid creating blocks from finalized txs that are invalid or polling txs that could not be added to the next block.

There is no change in behavior.

Depends on D17793.

Test Plan
ninja all check-all

Diff Detail

Repository
rABC Bitcoin ABC
Branch
avalanche_block_fitter_txs_stats
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 32700
Build 64888: Build Difflint-circular-dependencies · build-without-wallet · build-diff · build-debug · build-clang-tidy · build-clang · build-bench
Build 64887: arc lint + arc unit

Event Timeline

Fabien requested review of this revision.Wed, Mar 12, 21:16

Tail of the build log:

/work/src/txmempool.cpp:543: error: undefined reference to 'node::BlockFitter::addTx(unsigned long, long, Amount)'
collect2: error: ld returned 1 exit status
[597/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench_bitcoin.cpp.o
[598/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bantablemodel.cpp.o
[599/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/cashaddr.cpp.o
[600/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[601/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/ccoins_caching.cpp.o
[602/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/chacha_poly_aead.cpp.o
[603/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/chacha20.cpp.o
[604/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[605/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkqueue.cpp.o
[606/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/intro.cpp.o
[607/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/crypto_hash.cpp.o
[608/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[609/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/data.cpp.o
[610/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/examples.cpp.o
[611/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/gcs_filter.cpp.o
[612/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/hashpadding.cpp.o
[613/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[614/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/lockedpool.cpp.o
[615/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[616/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[617/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/merkle_root.cpp.o
[618/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/nanobench.cpp.o
[619/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/pool.cpp.o
[620/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[621/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/poly1305.cpp.o
[622/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/prevector.cpp.o
[623/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rollingbloom.cpp.o
[624/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench.cpp.o
[625/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[626/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/streams_findbyte.cpp.o
[627/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/strencodings.cpp.o
[628/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/util_time.cpp.o
[629/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/verify_script.cpp.o
[630/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[631/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[632/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/block_assemble.cpp.o
[633/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[634/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[635/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkblock.cpp.o
[636/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/crypto_aes.cpp.o
[637/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[638/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/duplicate_inputs.cpp.o
[639/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_eviction.cpp.o
[640/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/load_external.cpp.o
[641/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/peer_eviction.cpp.o
[642/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/chained_tx.cpp.o
[643/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_stress.cpp.o
[644/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_mempool.cpp.o
[645/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_blockchain.cpp.o
[646/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[647/653] Linking CXX static library src/qt/libbitcoin-qt-base.a
[648/653] Automatic MOC for target bitcoin-qt
[649/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[650/653] Linking CXX executable src/bench/bitcoin-bench
[651/653] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[652/653] Linking CXX executable src/qt/bitcoin-qt
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

The blockfitter now needs to be part of the kernel for bitcoin-chainstate to build

PiRK requested changes to this revision.Thu, Mar 13, 08:15
PiRK added a subscriber: PiRK.

This diff somehow pulls blockfitter.cpp into bitcoin-chainstate's dependencies, so you need to add it a second time in CMakeList.txt

  [596/653] Linking CXX executable src/bitcoin-chainstate
21:20:55   FAILED: src/bitcoin-chainstate
21:20:55   : && /usr/bin/c++ -Werror -g -O2 -fuse-ld=gold -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lstdc++fs -fPIE -pie src/CMakeFiles/bitcoin-chainstate.dir/bitcoin-chainstate.cpp.o -o src/bitcoin-chainstate  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lstdc++fs  src/libbitcoinkernel.a  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  src/univalue/libunivalue.a  src/secp256k1/libsecp256k1.a  src/leveldb/libleveldb.a  src/leveldb/libleveldb-sse4.2.a  src/leveldb/libmemenv.a  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -lstdc++fs && :
21:20:55   /work/src/txmempool.cpp:212: error: undefined reference to 'node::BlockFitter::removeTxUnchecked(unsigned long, long, Amount)'
21:20:55   /work/src/txmempool.cpp:334: error: undefined reference to 'node::BlockFitter::removeTxUnchecked(unsigned long, long, Amount)'
21:20:55   /work/src/txmempool.cpp:120: error: undefined reference to 'node::BlockFitter::BlockFitter(Config const&)'
21:20:55   /work/src/txmempool.cpp:543: error: undefined reference to 'node::BlockFitter::addTx(unsigned long, long, Amount)'
21:20:55   collect2: error: ld returned 1 exit status
21:20:55   [597/653] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench_bitcoin.cpp.o
This revision now requires changes to proceed.Thu, Mar 13, 08:15
This revision is now accepted and ready to land.Thu, Mar 13, 08:16

my review collided with an update that fixed the issue