-
Notifications
You must be signed in to change notification settings - Fork 215
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
Unbork Emerynet: Cleanup Auctioneers, PriceAuthorities, and QuoteNotifiers #10725
Comments
@siarhei-agoric : for reference, #9483 (comment) has a lot of notes about how to find the necessary objects to terminate the old vats. And @gibson042 probably has even more ideas. |
The auctioneers are not designed to be halted, but it is straightforward to give them a long schedule. For instance a week. The issue with this approach is that it's not possible to reset the schedule to a shorter period until that time elapses. So choosing a very long time (like a year) effectively disables that auction, since if you wanted to restart it to a shorter period, you'd have to wait for that year to elapse before the auctioneer would pay attention to a shorter period. It's possible that giving them inconsistent parameters would turn the schedule off until a new set of parameters are supplied, but I haven't tested this to be sure what parameters would have this effect. If turning the schedule off were a priority, I could run some tests and likely find a workable approach. |
Based on multiple conversations with @gibson042, @mhofman, and @Chris-Hibbert, along with some digging:
Timeline (rough estimates):
|
refs: #10725 Initial set of changes to get auctioneer governors terminated.
What is the Problem Being Solved?
Emerynet currently suffers from severe performance degradation due to multiple generations of auctioneer vats running simultaneously. This has led to the accumulation of thousands of ephemeral observers and QuoteNotifiers (QNs). Each additional price submission triggers massive computations and delays, causing push-price operations to run for hours. The problem is aggravated by old auctioneers continually waking up on timers, creating new observer chains and further inflating the backlog of QNs. This situation makes Emerynet slow, unresponsive, and difficult to use for testing and validation.
Description of the Design
The proposed solution involves a multi-step cleanup and reset process:
(Optional) Halt Auctioneer Timers (for Gen4/Gen5)
Attempt to stop timers associated with problematic auctioneers (e.g., v661 and v665) to prevent further growth of observers/QNs. If this isn't possible via existing governance tools, move directly to terminating these vats.
Terminate Old Auctioneer Vats
Use governance actions (coreProposals) to kill all old auctioneers (including gen1 through gen5) on Emerynet. Removing these vats will cascade a cleanup of their associated observers, QNs, and references in scaledPriceAuthorities and priceFeeds over time.
Submit Prices for All Denoms
Push updated prices for every denom to trigger the release and garbage collection of QN references in scaledPriceAuthorities (sPA) and priceFeeds (pf). While each price submission will take hours initially, this step eventually clears the backlog of QNs and observers.
Create a New, Clean Auctioneer
After full cleanup, instantiate a fresh auctioneer vat that references updated priceAuthorities without legacy baggage. This ensures a stable and clean testing environment going forward.
Monitor and Verify Stability
Observe Emerynet after the cleanup to ensure:
Security Considerations
Scaling Considerations
Test Plan
Measure the current backlog and record how long price submissions take.
Upgrade Considerations
Sub-Tasks:
Investigate Timer Controls for Auctioneers
Terminate Old Auctioneer Vats
Submit Prices for All Denoms
Confirm QN and Observer Cleanup
Create a New Auctioneer
Monitor Post-Cleanup Stability
Run test pushes of prices.
The text was updated successfully, but these errors were encountered: