This is opt-in, so it won't screw anything up by default
Test cases:
[ ] Boot a new ship, run for a "little while", then run replay to recreate ship state
[ ] While replaying, do the following, and ensure that on re-run it completes
[ ] Interrupt with CTRL-c
[ ] Interrupt with kill -9
[ ] If dedicated replay (subcommand) is interrupted, using ./<pier>/.run should complete
[ ] Explicit snapshot interval (--snap-at or -s)
[ ] Full replay (--full or -f)
[ ] Should print an error message and shut down if this is attempted after chopping
[ ] Partial replay (--replay-to or -n)
[ ] Chop an event log, and then replay. Ideally this is done on a live ship.
[ ] Auto-meld (--auto-meld) — melds in response to bail:meme
[ ] Soft mugs (--soft-mugs)
Run a fakezod, introduce a jet mismatch (or fix one of the many existing ones that are sitting in open PRs like https://github.com/urbit/vere/pull/444), run with soft mugs and verify that replay works
[ ] Crash a ship after it has written a snapshot patch but before it has finished applying it, start up with a different loom size (both bigger and smaller), and verify that resuming works as expected
[ ] Take a running fakezod, shut it down, and run the following commands to create a lockfile with read-only permissions, then check that the ship prints the reason the lockfile was unable to be written to:
adds a -toss argument to minimize memory usage, runs MADV_DONTNEED on the inner space of the loom after every event.
takes a number of pages to keep adjacent to the home road heap and stack. --toss 0 discards everything it can
this option is independent of demand paging, swap, &c
testing should verify that it works correctly on its own or in combination with these other args. memory usage can be observed with the pmap command on linux
vere-v2.10
Date: ~2023.6.27 Kelvin: 413 Overview: TODO
Pulls
Candidates
RC1: vere-2.10-rc1 RC2: vere-2.10-rc2
Test Plan
kill -9
./<pier>/.run
should complete--snap-at
or-s
)--full
or-f
)--replay-to
or-n
)--auto-meld
) — melds in response tobail:meme
--soft-mugs
)Deleting the lockfile will make the fakezod operable again.
=((turn (gulf 0 30) bex) (turn (gulf 0 30) :(corl (cury met 0) dec bex bex)))
and check that the result is%.y
.=((sub (bex 31) 16) (met 0 (dec (bex (sub (bex 31) 16)))))
and check that it completes and the result is%.y
.If you're testing, please comment on this thread with results from the above.
Volunteers so far: @matthew-levan