Skip to content

Avoid cycle recovery based on iteration count #1433

@MichaReiser

Description

@MichaReiser

We currently rely on the iteration count for cycle recovery. There are two issues with it:

  1. 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.
  2. 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions