Skip to content
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

Implement value circuit breaker #3690

Merged
merged 7 commits into from
Jan 29, 2024
Merged

Implement value circuit breaker #3690

merged 7 commits into from
Jan 29, 2024

Conversation

zbuc
Copy link
Member

@zbuc zbuc commented Jan 29, 2024

This adds a value circuit breaker to the PositionManager logic.

Whenever a position is stored, the total reserve amounts (across all positions) are tracked by the ValueCircuitBreaker. If after storing a position the reserve balance ever becomes negative ("required"), this implies that more value was taken out of positions than was stored in them, and an error is bubbled up.

Closes #2986

@zbuc zbuc requested a review from erwanor January 29, 2024 00:30
@zbuc zbuc requested a review from hdevalence January 29, 2024 00:30
@erwanor erwanor self-assigned this Jan 29, 2024
Copy link
Member

@erwanor erwanor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have done a preliminary pass, but it will be easier for me to dig in when we resolve the serialization shenanigans. It's late but something seems off about the resolution of the balance check; will do a second pass tomorrow am.

@zbuc zbuc merged commit 25410bd into main Jan 29, 2024
7 checks passed
@zbuc zbuc deleted the 2986_value_cb branch January 29, 2024 18:53
hdevalence added a commit that referenced this pull request Mar 6, 2024
Closes #3690

This renames the previous `check_stateful` method to `check_historical`,
renames `execute` to `check_and_execute`, and by default moves all of the
content of `check_stateful` into `check_and_execute`, unless there's an obvious
and LOCAL reason why it's safe to do so that can be written into the body of
the method.

IMO it's still worth it to have the method in the trait. We may wish to take
advantage of it later, when we can spend more time carefully reasoning about
performance.

Note: we've left behind two versions of the trait, which will be reconciled in
a later commit.
hdevalence added a commit that referenced this pull request Mar 7, 2024
Closes #3690

This renames the previous `check_stateful` method to `check_historical`,
renames `execute` to `check_and_execute`, and by default moves all of the
content of `check_stateful` into `check_and_execute`, unless there's an obvious
and LOCAL reason why it's safe to do so that can be written into the body of
the method.

IMO it's still worth it to have the method in the trait. We may wish to take
advantage of it later, when we can spend more time carefully reasoning about
performance.

Note: we've left behind two versions of the trait, which will be reconciled in
a later commit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

dex: implement a value circuit breaker
2 participants