-
Notifications
You must be signed in to change notification settings - Fork 135
Open
astral-sh/ruff
#20566Milestone
Description
We currently rely on the iteration count for cycle recovery. There are two issues with it:
- Recovery functions aren't guaranteed to be called for every iteration count if they participate in an outer cycle. The recovery function can be skipped for two reasons: a) Because this query did converge in this iteration, but there might be another cycle that didn't converge, enforcing another iteration and b) if the cycle head only conditionally participates in the outer cycle head (e.g. only every other iteration). That's why we want to avoid testing when the iteration count is equal. At least, test if the iteration count is larger than.
- The number of iterations can vary based from which query the cycle is entered. However, the execution order of queries is non-deterministic in a multithreaded context, risking that our error recovery becomes non-deterministic too.
That's why we should prefer cycle recovery functions that recover based on the values rather than the exact iteration count
Metadata
Metadata
Assignees
Labels
No labels