-
Notifications
You must be signed in to change notification settings - Fork 7
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
Late-start with no state #477
Comments
For 1.b. (store power tables), we could trigger this from splitstore GC. I.e., before the splitstore garbage collects, it would make sure to "inject" power table deltas. But again, we'd need to change the finality certificate store to store power deltas separate from finality certificate information for this to work. |
For 2.b, we'd either need an index of epoch->finality cert, or we'd need to binary search for the right finality certificate. Honestly, I'm tempted to just binary search (maybe with an in-memory cache so we can easily jump to the correct range of finality certificates to search. |
Alternative (and probably better) way to solve 2:
This doesn't require any new protocols. |
Now that this cropped up, I remember why I wanted to ship the initial power table in the manifest. On the other hand, I don't think we need to store all of them; we need the initial one. After that, we should be able to use finality certificates (with their deltas) to move forward until we are within the range of the available state. |
This doesn't solve the splitstore + bootstrap issue, we would have to tag the power table as "not to be removed", but also it gets more complex in the late start scenario. |
Ah, yeah, we'd need to include all the "deltas" as well.
The issue is phase 2. We won't have deltas/certificates in that case because F3 hasn't really "started".
Same as above. We need the deltas as well. |
We can fetch the deltas from cert-exchange, assuming we made progress initially while the state was available. |
For bootstrap (if no finality certificates were formed), we could shift the bootstrap epoch to every N epoch. |
We have no good way to know that for sure.
We can:
|
I think this is the best idea. Do we have the full power table request thing in the finality cert exchange? |
Yes, but the certificate exchange doesn't have access to power tables after we finalize them. Furthermore, we store deltas along with certificates which we won't have yet. Basically, we need to implement 1.b from the first comment: store power tables/deltas independently of finality certificates. |
Why is this an epic? Is there more follow-up issues need to be resolved on this topic? |
It explains the issue but not the solution. There is a separate issue for the solution. |
@ZenGround0 ran into an issue where F3 failed to load state on start. @rvagg pointed out that this was likely because F3 reached back too far (after the splitstore deleted state).
This likely happened because calibnet failed to start F3 due to insufficient power. Restarting the node attempted to re-bootstrap F3 and failed because the power table had been garbage collected.
We need to solve this in a couple of ways:
Tasks
The text was updated successfully, but these errors were encountered: