-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Splitstore: reification of cold objects #6726
Comments
cc @raulk @Stebalien for discussion. |
Actually there is a certain kind of object which can be in the hotstore and have references to the coldstore or missing entirel: that's the block header as the entire chain worth of headers is kept in the hotstore. |
There is actually a very possible case for having hot objects having cold references -- if the users upgrades from splitstore v0, with its issues accurately tracking hot references. |
It has been observed that the hot range in my discard store still contains some references to the cold store (containing only the original snapshot data), even after rewarming up with #6867; afacit these are objects that get recreated by the VM and occurs-checked with Has, which avoids a write. Following discussion with @Stebalien it appears that this is the correct course of action:
This will prevent accidental reification and ensure that we reify when we need to. |
Normally, with #6474, a node should not refer to the coldstore during operation.
In particular, there should be no hot objects with references to cold state.
It is possible however to refer to coldstore objects by operator intervention: e.g. a state-compute or set-head from the API or resolution of a fork.
If the references are more than 4 finalities away they will likely be in the coldstore, and newly created objects will reside in the hotstore but refered to cold objects.
Also, moving forward, we eventually want to make splitstore IPLD-aware so that we can invoke something like
Pin(reference)
and have everything reified to the hotstore.The issue here is that we don't currently reify state when there is a miss. There is a good reason for this currently (see #6705), but it is something we want to tackle eventully.
The text was updated successfully, but these errors were encountered: