Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Limit unlinkable block exception #1045

Closed
heifner opened this issue Nov 25, 2024 · 1 comment
Closed

Limit unlinkable block exception #1045

heifner opened this issue Nov 25, 2024 · 1 comment
Labels
bug The product is not working as was intended.

Comments

@heifner
Copy link
Member

heifner commented Nov 25, 2024

An unlinkable_block_exception is thrown when a block is received that doesn't link to a block in the fork database.

We currently check if a block received on the network is <= LIB:

if( blk_num <= fork_db_root_num ) {

And discard it.

However, a block can make it pass this check and LIB move before it is put into the fork database. For example:

info  2024-11-18T08:01:13.469 nodeos    controller.cpp:3637           log_applied          ] Received block e9ba42711da87ce4... #405343386 @ 2024-11-18T08:01:13.000 signed by eosnationftw [trxs: 13, lib: 405343384, net: 973424, cpu: 73604 us, elapsed: 335023 us, applying time: 393147 us, latency: 469 ms]
warn  2024-11-18T08:01:13.469 nodeos    controller.cpp:4330           push_block           ] 3030001 unlinkable_block_exception: Unlinkable block
forkdb unlinkable block 18290c99dc9e02e11131f1067bfe07c7156e27d190cf4d70f73b4736df17f847 previous 18290c98f3ec193187f74ad8afe9a57c714c0bc2389eedc643c659d82b55283e
    {"id":"18290c99dc9e02e11131f1067bfe07c7156e27d190cf4d70f73b4736df17f847","p":"18290c98f3ec193187f74ad8afe9a57c714c0bc2389eedc643c659d82b55283e"}
    nodeos  fork_database.cpp:266 add_impl
info  2024-11-18T08:01:13.469 nodeos    producer_plugin.cpp:938       operator()           ] Exception on block 405343385: 3030001 unlinkable_block_exception: Unlinkable block
forkdb unlinkable block 18290c99dc9e02e11131f1067bfe07c7156e27d190cf4d70f73b4736df17f847 previous 18290c98f3ec193187f74ad8afe9a57c714c0bc2389eedc643c659d82b55283e
    {"id":"18290c99dc9e02e11131f1067bfe07c7156e27d190cf4d70f73b4736df17f847","p":"18290c98f3ec193187f74ad8afe9a57c714c0bc2389eedc643c659d82b55283e"}
    nodeos  fork_database.cpp:266 add_impl
rethrow
    {}
    nodeos  controller.cpp:4330 push_block
info  2024-11-18T08:01:13.469 nodeos    net_plugin.cpp:3871           process_signed_block ] unlinkable_block_exception connection - 4: #405343385 dc9e02e11131f106...: Unlinkable block (3030001)
forkdb unlinkable block 18290c99dc9e02e11131f1067bfe07c7156e27d190cf4d70f73b4736df17f847 previous 18290c98f3ec193187f74ad8afe9a57c714c0bc2389eedc643c659d82b55283e
rethrow

LIB is 405343384. Block 405343385 is trying to link to a block 405343384 that doesn't exist because it has been forked out.

The exception above is reported in push_block. In main this method no longer adds to the fork database. I think this situation is greatly reduced by the block processing optimizations already in main. See #619, #688, #802.

Likely not worth doing anything in release/1.0.

@enf-ci-bot enf-ci-bot moved this to Todo in Team Backlog Nov 25, 2024
@bhazzard bhazzard added bug The product is not working as was intended. and removed triage labels Dec 5, 2024
@bhazzard
Copy link

bhazzard commented Dec 5, 2024

Won't address this as it doesn't apply to 1.1 and isn't critical enough to warrant fixing in 1.0.

@bhazzard bhazzard closed this as not planned Won't fix, can't repro, duplicate, stale Dec 5, 2024
@github-project-automation github-project-automation bot moved this from Todo to Done in Team Backlog Dec 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug The product is not working as was intended.
Projects
Status: Done
Development

No branches or pull requests

3 participants