-
Notifications
You must be signed in to change notification settings - Fork 859
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
Chain head block is sometimes not available on the node that actually mined the block #6140
Comments
A few notes after initial investigation.
I'm not sure if there is sufficient protection around the call to As a side note, there is a block cache mechanism that is only used if @fab-10 any thoughts? I'm currently running the same test with |
cc: @ahamlat for any perfomance implication of adding synchronization there. |
@matthew1001 how the tests are going? |
@fab-10 I've been running now for many hours and haven't recreated the problem. Before I could recreate within 20-30 minutes very reliably. Note that in the PR I've only added I did wonder about any performance side-effects, but I don't know if My gut feel would be to see if performance testing for the next release shows a noticeable change, and if so this could be reverted and we'd be left with the same issue we currently have, to rethink a fix for. |
@matthew1001 Regarding block cache and when numberOfBlocksToCache is set, you can check this PR #6009. This field is initialized when Besu is started with --cache-last-blocks=n. This is specifically done here when BesuControllerBuilder creates the blockchain object. |
Thanks @ahamlat for the info, I wasn't aware of the new option. We might give that a try in some of our performance tests with something small like |
Actually --cache-last-blocks=n blocks will improve a lot eth_getBlockReceipts with the current implementation, and even better once the implementation is reviewed as I suggested in Discord, because this options also caches the receipts |
Description
I've been experiencing occasional
CHAIN_HEAD_NOT_AVAILABLE
errors in a single-validator QBFT chain. Adding some extra sysout logs to a local build I can see that when this happens, the failing check is logged out before the existing "Produced [#block-number]" log entry for that requested block:Accept
Steps to Reproduce (Bug)
EthScheduler-Transactions-0 | TRACE | TransactionPool | rejecting transaction
(Note that this error is a
WARN
error as of #6126)Expected behavior:
No
CHAIN_HEAD_NOT_AVAILABLE
errors are seen in this sort of load testingThe text was updated successfully, but these errors were encountered: