-
Notifications
You must be signed in to change notification settings - Fork 208
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
feat: Zoe use watchPromise() to wait for contract finish #8453
Conversation
802141b
to
02a2259
Compare
e09c548
to
1ea44e6
Compare
74ef3f1
to
f2d5ab4
Compare
Agoric/agoric-3-proposals#18 tests upgrading agoric-3 with this version of Zoe. The upgrade is failing due to: "durable Kind stateShape mismatch (body)"
|
8f0f907
to
5707827
Compare
Fixed by reverting the string in the |
0fcd623
to
d9994a3
Compare
85bccb5
to
f10178d
Compare
onFulfilled: M.call( | ||
M.any(), | ||
InstanceAdminShape, | ||
M.remotable('adminNode'), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This param isn't used. I thought we could remove it, but then remembered that in the latest Endo, Exo methods fail if they are passed extra arguments. Filing for future work: #8709
9b3093e
to
373b31f
Compare
I'm getting conflicting opinions from tslint. If I have the following
then If I leave out the Somehow CI runs both checks. Is there a way to make them both happy? |
use watchPromise() to wait for contract finish; This repairs new contracts, but doesn't help existing contracts.
There was a bug in the part of the test that was attempting to run a bunch of scenarios across the upgrade. Rather than resuming each run after the upgrade, it was running the whole scenario from scratch after the upgrade.
it's not necessarily null. it's whatever the version is that's built.
373b31f
to
1881aaf
Compare
* feat: zcf ask zoe to repair 'adminNode.done()` watcher on restart use watchPromise() to wait for contract finish; This repairs new contracts, but doesn't help existing contracts. * test: add tests for userSeat.getExitSubscriber() * test: repair broken test of upgrade There was a bug in the part of the test that was attempting to run a bunch of scenarios across the upgrade. Rather than resuming each run after the upgrade, it was running the whole scenario from scratch after the upgrade. * test: demonstrate Zoe's survival through vatAdmmin vat upgrade * refactor: upgrade-zoe proposal name it's not necessarily null. it's whatever the version is that's built. --------- Co-authored-by: Turadg Aleahmad <[email protected]>
fixes: #8387
fixes: #8265
fixes: #8263
fixes: #8915
Description
Zoe wants to exit all seats when the contract completes. It currently attempts to do that with an ephemeral promise, which will break when Zoe itself is upgraded. This uses durable watched promises to surmount that problem.
Security Considerations
Zoe's durability guarantees, and ability to maintain payout liveness when a contract crashes.
Scaling Considerations
Not a major issue.
Documentation Considerations
N/A
Testing Considerations
There are two tests of upgrade in zoe (test-zoe-upgrade and upgrade-covered-call). These tests invoke the new
onFulfilled
handler.This PR updates
test-zoe-upgrade
to include a restart (null upgrade) of the vat-admin vat. With that and a fix (581e9ad8) to the test, the old code fails the upgrade, and the new code passes.Upgrade Considerations
It's all about upgrade.