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
compactmethod 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
BeaconStatecolumn, 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 likeBeaconStateRootswhich won't have been compacted.For nodes running v6 that prune states after upgrading, the compaction currently misses the two most important columns:
BeaconStateSnapshotandBeaconStateDiff. I've added a newcompact_freezermethod which compacts all of the current-schema columns, and all the old schema columns for good measure.