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

fix: matrix limit not respected #1875

Merged
merged 3 commits into from
Oct 29, 2024
Merged

fix: matrix limit not respected #1875

merged 3 commits into from
Oct 29, 2024

Conversation

TheGreatRefrigerator
Copy link
Contributor

@TheGreatRefrigerator TheGreatRefrigerator commented Oct 28, 2024

Pull Request Checklist

  • 1. I have rebased the latest version of the main branch into my feature branch and all conflicts
    have been resolved.
  • 2. I have added information about the change/addition to functionality to the CHANGELOG.md file under the
    [Unreleased] heading.
  • 3. I have documented my code using JDocs tags.
  • 4. I have removed unnecessary commented out code, imports and System.out.println statements.
  • 5. I have written JUnit tests for any new methods/classes and ensured that they pass.
  • 6. I have created API tests for any new functionality exposed to the API.
  • 7. If changes/additions are made to the ors-config.json file, I have added these to the ors config documentation
    along with a short description of what it is for, and documented this in the Pull Request (below).
  • 8. I have built graphs with my code of the Heidelberg.osm.gz file and run the api-tests with all test passing
  • 9. I have referenced the Issue Number in the Pull Request (if the changes were from an issue).
  • 10. For new features or changes involving building of graphs, I have tested on a larger dataset
    (at least Germany), and the graphs build without problems (i.e. no out-of-memory errors).
  • 11. For new features or changes involving the graphbuilding process (i.e. changing encoders, updating the
    importer etc.), I have generated longer distance routes for the affected profiles with different options
    (avoid features, max weight etc.) and compared these with the routes of the same parameters and start/end
    points generated from the current live ORS.
    If there are differences then the reasoning for these MUST be documented in the pull request.
  • 12. I have written in the Pull Request information about the changes made including their intended usage
    and why the change was needed.
  • 13. For changes touching the API documentation, I have tested that the API playground renders correctly.

Information about the changes

  • Key functionality added: fixed matrix 'maximum_route' limit for explicit 'all' in destiantions and/or sources
  • Reason for change: matrix requests could circumvent the route limit as 'all' was counted as single entry during the check

Examples and reasons for differences between live ORS routes, and those generated from this pull request

Required changes to ors config (if applicable)

passing 'all' to 'sources' or 'directions' in a request
was counted as 1 instead of the amount of locations, so
all-to-all matrix requests were treated as a 1x1 when
checking against the 'maximum_routes' setting.

Fixed by checking if sources/destinations is 'all' and then counting locations
@TheGreatRefrigerator TheGreatRefrigerator changed the title Fix/matrix limit not respected fix: matrix limit not respected Oct 28, 2024
@github-actions github-actions bot added the fix label Oct 28, 2024
Copy link

@aoles
Copy link
Member

aoles commented Oct 28, 2024

Is it actually desired to allow passing a String value of "all" as a valid value to the sources/destination parameter? To be honest, I didn't even know this was possible. I always understood these parameters as integer arrays, which if not provided defaulted to all locations, i.e. arrays of [0, n-1] where n is the number of provided locations. I'm not sure whether mixing different types such as strings and integers within one parameter is a good idea. So maybe the actual issue here is about allowing passing "all" as a valid parameter value, which to me sounds a bit obsolete considering that the default is to take all locations anyway.

@TheGreatRefrigerator
Copy link
Contributor Author

Is it actually desired to allow passing a String value of "all" as a valid value to the sources/destination parameter? To be honest, I didn't even know this was possible. I always understood these parameters as integer arrays, which if not provided defaulted to all locations, i.e. arrays of [0, n-1] where n is the number of provided locations. I'm not sure whether mixing different types such as strings and integers within one parameter is a good idea. So maybe the actual issue here is about allowing passing "all" as a valid parameter value, which to me sounds a bit obsolete considering that the default is to take all locations anyway.

Can we discuss this in a separate issue please. Currently you can circumvent the config limit. That's fixed with the PR. Being able to set all has been this way at least since 2018. The whole array is read in as strings and converted afterwards...
Of course that's not conceptually ideal, but i don't think that's relevant for this PR.

Copy link
Member

@aoles aoles left a comment

Choose a reason for hiding this comment

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

LGTM, cheers! 🌈

@aoles aoles merged commit 9cccb8b into main Oct 29, 2024
42 of 44 checks passed
@aoles aoles deleted the fix/matrix-limit-not-respected branch October 29, 2024 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants