Move the auto-router path timeout check to an inner loop #11259
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.
Implementation Notes
Explanation of Change
The auto-router's path timeout is supposed to stop too much time being spent on building up the set of possible routes for trains. It was being checked once in each iteration of possible starting nodes for routes.
However, in particularly degenerate cases this meant that far too long was elapsing between timeout checks: issue #11252 had more than ten hours pass before the first and second timeout checks.
This moves the timeout check to an inner loop, so it is checked more frequently.
Fixes #11252.
Any Assumptions / Hacks
This uses a custom error class to break out of the loop if too long has elapsed. There are other ways that this could be done, I'm not sure if this is the best.
Before clicking "Create"
master
Add thepins
orarchive_alpha_games
label if this change will break existing gamesdocker compose exec rack rubocop -a
docker compose exec rack rake