-
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 Garbage Collection #6728
Conversation
rebased for changes in the base branch. |
rebased on master. |
I'll rebase and resolve the gen conflicts when we are ready to merge. |
This needs integration tests. I.e., tests where we trigger GC while computing a tipset or at least something that approximates computing a tipset (i.e. a bunch of reads, then
VM execution doesn't just write blocks, it makes a bunch of assumptions about what we have and what we don't have. |
Agreed; for now I am testing in a live node, but we definitely want a proper integration test. How does it sounds to you? |
It's really a waste of time to review until there are tests. Testing on a node isn't likely to trigger the conditions we care about. |
(also, let's please break this into two PRs: one that refactors (splits files), then one that makes the actual change) |
Agreed with the sentiment, following our sync discussion. |
c98ab56
to
68da14c
Compare
02ef0de
to
05b6ec9
Compare
05b6ec9
to
5a23f64
Compare
@vyzo should we close this one since it's related to 1.11.1 which is out? |
no, its in draft for a reason.
…On Fri, Sep 10, 2021, 21:08 Dragan Z ***@***.***> wrote:
@vyzo <https://github.com/vyzo> should we close this one since it's
related to 1.11.1 which is out?
FYI: @jennijuju <https://github.com/jennijuju>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#6728 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAI4SWD2CEXRMYXTCKXWG3UBJCS7ANCNFSM5AFLT4NQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
Done in #9056 |
Implements online coldstore chain pruning and garbage collection with the
lotus chain prune
command.See #6577 for discussion.
From the README:
The coldstore can be pruned and garbage collection using the
lotus chain prune
command.Note that the command initiates pruning, but runs asynchronously as it can take a long time to
complete.
By default, pruning keeps all chain reachable object; the user however has the option to specify
a retention policy for old state roots and message receipts with the
--retention
option.The value is an integer with the following semantics:
This is the (safe) default.
be retained in the coldstore.
This effectively throws away all old state roots and it is maximally effective at reclaiming space.
for which chain-reachable state objects are retained.
This allows you to keep some older state roots in case you need to reset your head outside
the compaction boundary or perform historical queries.
During pruning, unreachable objects are deleted from the coldstore. In order to reclaim space,
you also need to specify a gargage collection policy, with two possible options:
--online-gc
flag performs online garbage collection; this is fast but does not reclaim allspace possible.
--moving-gc
flag performs moving garbage collection, where the coldstore is moved,copying only live objects. If your coldstore lives outside the
.lotus
directory, e.g. witha symlink to a different file system comprising of cheaper disks, then you can specify the
directory to move to with the
--move-to
option.This reclaims all possible space, but it is slow and also requires disk space to house the new
coldstore together with the old coldstore during the move.