Handle vat resumption on vat or kernel restart #448
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.
These changes make it possible to restart a vat (via the control panel) or restart the kernel (e.g., via a browser restart) without losing persistent vat state and allowing pre-existing vats to continue running. Also, when a vat is actually terminated (as opposed to simply shut down), all the relevant persistent kernel state is now expunged from the database.
Along the way this cleaned up a lot of the incidental logic concerning the various forms of restart that are driven from the control panel. It also ended up pulling in a fix to a nasty bug in the way the kernel handled promise message queues, and which got in the way of some of the testing. Also fixed the way the database is set up for kernel integration tests, so that concurrent tests wouldn't interfere with each other (this also got in the way of testing).
Closes #437