fix: ensure we hit leave auction trigger on mark-price calc, and hand… #10861
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.
close #10858
The addition of the check that the mark price calculation can trigger a price auction was causing the book-keeping of enter/leaving auctions for perpetuals to become out of sync.
We now tell the perp that we are leaving when we call
as.Left()
and then update it again to entering an auction if the price-monitoring is triggered. The perpetual then just handles this zero length interval.Another interesting thing is that the flow was a bit borked in
leaveAuction()
where price monitoring is triggered by the mark price calculation, we would never hit the call toenterAuction()
after the call toCalculateMarkPrice()
but would by luck start the auction by falling intocommandLiquidityAuction()
.I've changed the check in
updateMarkPriceIfNotInAuction()
to properly return anerr
if we hit price-monitoring, hopefully this does not cause integration tests to fail.