-
Notifications
You must be signed in to change notification settings - Fork 649
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
Missing blocks due to high latency of maintenance block #504
Comments
very interesting. let me ask you some stuff to understand better. is the 3 slots skipping a parameter that can be changed in case this blocks became more expensive or it is just happening because it is the time it is currently taking ? should we be be thinking on modifying witness plugin so the next witness wait 9 secs(or whatever) instead of 3 when we are at maintain time? on a side note there is an old issue at #211 that proposes plugins to add tasks to maintenance, something i think it will not be a good idea. |
Iirc, the number of blocks that can be skipped at most is a committee parameter and can thus be changed |
It's getting worse.
|
Hm, any idea what's causing this? |
This is a plugin issue, although the logic is tricky. When the witness plugin didn't receive a block in 3 seconds then it tries to produce another block, actually this can be profiled, say, if it took itself 3 seconds to produce the new block, it should know the previous witness need 3 seconds to produce and some time to propagate, so the best guess should be it should have received the block now, so best to validate it (may need time as well) and build the next block based on it, but not simply broadcast its own maintenance block (then miss its turn). Anyway, maintenance blocks are meant to need longer time to produce, we need to figure out the best way to handle them, which is independent from what's done in the maintenance interval. Above comment is a direction. On the other hand, you've asked, why we now need so long time to produce the block? One simple reason is we have more and more accounts, so the node need longer time to iterate through them to re-tally votes. We may need to improve this mechanism at some time, one option could be learning from Steem (update votes on every block). |
Similar new log entries:
|
Now I tend to believe that current behavior / implementation is the best approach in the worst scenario, so likely won't change it. I will close this issue if there is no new feedback. |
Copied @pmconrad's comment in #1157 (comment) to this issue since it's related:
|
According to the design, there are much more work to be done at maintenance interval, so it's expected that latency of those maintenance blocks will be higher. It's exactly what happening in the production network, logs attached below. At every maintenance interval, 3 slots will be skipped, that means we have 12 seconds for a witness to generate a maintenance block and broadcast it to the next witness and the next witness should be able to validate it before generating the next block.
However, if the next witness didn't receive the maintenance block in 3 seconds, according to current implementation of witness plugin, she will consider that block as lost, so she will generate another maintenance block. This behavior is debatable.
Thoughts?
Related logs:
The text was updated successfully, but these errors were encountered: