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

Consider consecutive estimator internal errors #3178

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open

Conversation

squadgazzz
Copy link
Contributor

@squadgazzz squadgazzz commented Dec 20, 2024

Description

From the original issue:

Native prices are an essential part of the auction. That's why the autopilot needs to have a valid native price for all tokens (sold and bought) in an auction. The NativePriceCache has a background task that continuously updates missing native prices.
It obviously caches valid native prices but also responses indicating that no solver has enough liquidity for the requested token. This is done to avoid fetching native prices over and over for tokens that no solver supports.
However, when a solver reports some different error (best example are rate limiting errors) we assume they are just intermittent and re-requesting the native price might work in the future.

The problem is that this logic does not consider the case where a solver always returns an error for a given token while also not other solver is able to produce a good result.
This happened recently where one solver always returned 404 errors because it got shut down on staging. Since no solver was able to produce a price and the logic assume these errors are intermittent we queried the native price for a few tokens over and over again which resulted in a lot more request than usual.

This PR addressed it by introducing a consecutive estimator's internal errors counter. The consecutive error threshold is hardcoded with a value of 5(still a subject of consideration). While a threshold is not reached, the requests remain to be sent to the solver. Otherwise, the cache uses the cached value until it expires using the existing timeout or until another result gets cached. Received recoverable errors don't reset the accumulative errors counter.

How to test

Added a unit test.

Related Issues

Fixes #3159

@squadgazzz squadgazzz marked this pull request as ready for review December 24, 2024 20:10
@squadgazzz squadgazzz requested a review from a team as a code owner December 24, 2024 20:10
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.

chore: Cache persistent errors when computing native prices
1 participant