Compact more when pruning states #6667
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed Changes
@chong-he noticed that nodes running v6.0.0 do not reclaim disk space after pruning states. This is because the generic
compact
method on the database only compacts a handful of columns:BeaconState
,BeaconStateSummary
,BeaconBlock
.For pre-v6.0.0 databases, most of the data for historic states will have been stored in the
BeaconState
column, so users upgrading from v5.x to v6 should have been able to reclaim most of the used space. There are only a handful of old columns likeBeaconStateRoots
which won't have been compacted.For nodes running v6 that prune states after upgrading, the compaction currently misses the two most important columns:
BeaconStateSnapshot
andBeaconStateDiff
. I've added a newcompact_freezer
method which compacts all of the current-schema columns, and all the old schema columns for good measure.