Page MenuHomePhabricator

kernel: Add fatalError method to notifications
ClosedPublic

Authored by PiRK on Wed, Nov 19, 14:49.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABC8ac6dcd4b9f9: kernel: Add fatalError method to notifications
Summary

FatalError replaces what previously was the AbortNode function in
shutdown.cpp.

This commit is part of the libbitcoinkernel project and further removes
the shutdown's and, more generally, the kernel library's dependency on
interface_ui with a kernel notification method. By removing interface_ui
from the kernel library, its dependency on boost is reduced to just
boost::multi_index. At the same time it also takes a step towards
de-globalising the interrupt infrastructure.

Co-authored-by: Russell Yanofsky <russ@yanofsky.org>
Co-authored-by: TheCharlatan <seb.kung@gmail.com>

This concludes backport of core#27861
https://github.com/bitcoin/bitcoin/pull/27861/commits/6eb33bd0c21b3e075fbab596351cacafdc947472
Depends on D18967

Test Plan

ninja all check-all

Event Timeline

PiRK requested review of this revision.Wed, Nov 19, 14:49

Tail of the build log:

/work/src/banman.cpp:217: error: undefined reference to 'CClientUIInterface::BannedListChanged()'
/work/src/banman.cpp:171: error: undefined reference to 'CClientUIInterface::BannedListChanged()'
/work/src/banman.cpp:20: error: undefined reference to 'CClientUIInterface::InitMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/work/src/banman.cpp:150: error: undefined reference to 'CClientUIInterface::BannedListChanged()'
/work/src/banman.cpp:80: error: undefined reference to 'CClientUIInterface::BannedListChanged()'
collect2: error: ld returned 1 exit status
[614/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/crypto_hash.cpp.o
[615/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/data.cpp.o
[616/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[617/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[618/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[619/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/gcs_filter.cpp.o
[620/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[621/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/lockedpool.cpp.o
[622/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[623/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[624/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/merkle_root.cpp.o
[625/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/nanobench.cpp.o
[626/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/examples.cpp.o
[627/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/pool.cpp.o
[628/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/poly1305.cpp.o
[629/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/prevector.cpp.o
[630/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkqueue.cpp.o
[631/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rollingbloom.cpp.o
[632/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/hashpadding.cpp.o
[633/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkblock.cpp.o
[634/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/streams_findbyte.cpp.o
[635/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/strencodings.cpp.o
[636/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[637/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/verify_script.cpp.o
[638/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[639/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/util_time.cpp.o
[640/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/crypto_aes.cpp.o
[641/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/block_assemble.cpp.o
[642/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[643/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[644/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench.cpp.o
[645/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/chained_tx.cpp.o
[646/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[647/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/duplicate_inputs.cpp.o
[648/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[649/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/peer_eviction.cpp.o
[650/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/load_external.cpp.o
[651/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_eviction.cpp.o
[652/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_mempool.cpp.o
[653/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_stress.cpp.o
[654/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/readwriteblock.cpp.o
[655/666] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_blockchain.cpp.o
[656/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[657/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[658/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[659/666] Linking CXX executable src/bench/bitcoin-bench
[660/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[661/666] Linking CXX static library src/qt/libbitcoin-qt-base.a
[662/666] Automatic MOC for target bitcoin-qt
[663/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[664/666] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[665/666] 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
PiRK planned changes to this revision.Wed, Nov 19, 15:47

figure out why we still need ui_interface in the kernel lib

src/CMakeLists.txt
664 ↗(On Diff #56683)

indent

rebase after removing the txdb -> ui_interface dependency (D18970) and document the remaining kernel -> ui_interface transitive dependencies

Fabien requested changes to this revision.Thu, Nov 20, 08:58
Fabien added a subscriber: Fabien.
Fabien added inline comments.
src/node/blockstorage.cpp
874

Why is the template used here but not above ?

This revision now requires changes to proceed.Thu, Nov 20, 08:58
PiRK requested review of this revision.Thu, Nov 20, 10:31
PiRK added inline comments.
src/node/blockstorage.cpp
874

This replace the validation.h variant of AbortNode that take a BlockValidation state as param and sets its m_reject_reason before calling the shutdown.h variant of AbortNode.

The above just called the shutdown.h variant of AbortNode which is now directly called by the fatalError notification.

This revision is now accepted and ready to land.Thu, Nov 20, 10:58