Skip to content
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

local (non-consensus) scheduling of XS snapshots #3430

Closed
warner opened this issue Jun 29, 2021 · 3 comments
Closed

local (non-consensus) scheduling of XS snapshots #3430

warner opened this issue Jun 29, 2021 · 3 comments
Labels
enhancement New feature or request SwingSet package: SwingSet xsnap the XS execution tool

Comments

@warner
Copy link
Member

warner commented Jun 29, 2021

What is the Problem Being Solved?

As described in #3428 , writing an XS snapshot necessarily (and appropriately) causes a GC sweep, which is visible to the consensus state because it affects the timing of "organic" (non-forced) GC sweeps, which provokes GC syscalls, which provoke GC action deliveries, which might provoke comms messages.

We'd prefer to allow each validator to be able to independently choose when to write snapshots.

TODO: copy more text from #3428 with the options available to us.

Description of the Design

Security Considerations

Test Plan

@warner warner added enhancement New feature or request SwingSet package: SwingSet xsnap the XS execution tool labels Jun 29, 2021
@FUDCo
Copy link
Contributor

FUDCo commented Jun 29, 2021

In principle it strikes me that the GC associated with a snapshot is no different from an organic GC in that it can happen at arbitrary times. The issue really is the release of visible GC-driven events (drop, retire, et al) into the consensus stream. If XS' GC is indeed complete, then we can at any arbitrary time, i.e., at a time and place of our choosing, assure ourselves that we know all the garbage there is to be collected (i.e., that all of the potentially visible GC-driven events that could be known up to that point are known). So this reduces the problem to "when do we release GC actions into the consensus stream?", which seems like a question we can provide a deterministic answer for.

@aj-agoric
Copy link

Per discussion with @mhofman closing as will not do as we have changed course.

@mhofman mhofman closed this as not planned Won't fix, can't repro, duplicate, stale Sep 24, 2024
@mhofman
Copy link
Member

mhofman commented Sep 25, 2024

To clarify, we have since decided to make snapshots an integral part of consensus data. While we could imagine allowing extra snapshots performed outside of consensus, it would require that we fix all liveslots sensitivity to gc (#6784), including on non-organic gc which treat WeakRef as strong to hide the effect from liveslots (the gc triggered by snapshots is considered non-organic by XS)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request SwingSet package: SwingSet xsnap the XS execution tool
Projects
None yet
Development

No branches or pull requests

5 participants