-
Notifications
You must be signed in to change notification settings - Fork 457
feat: when running in preparation_mode, pack graph #2185
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
base: main
Are you sure you want to change the base?
Conversation
…t's called in the repo client settings
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request adds functionality to automatically pack graph files into archives when running in preparation mode, making it easier to upload and distribute pre-built graphs.
Key changes:
- When ORS runs in
preparation_mode, generated graph files are automatically packed into.ghzarchives and saved alongside corresponding.ymlmetadata files - The graph metadata now includes the total size of graph files in
graph_size_bytes - Refactored the singleton pattern in
RoutingProfileManagerto allow re-initialization during tests
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfile.java | Adds prepareGeneratedGraphForUpload() method to create zip archives of graph files, copy metadata, and cleanup; resets profileIdentifier in close() method |
| ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/manage/local/ORSGraphFileManager.java | Adds calculateFolderSizeInBytes() to compute total graph directory size and includes it in build info |
| ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/manage/PersistedGraphBuildInfo.java | Adds graphSizeBytes field to store the total size of graph files |
| ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfileManager.java | Modifies constructor to allow re-initialization by destroying existing instance before creating new one |
| ors-engine/src/main/java/org/heigit/ors/config/profile/BuildProperties.java | Adds profileGroup and graphExtent fields to support graph naming in preparation mode |
| ors-api/src/main/java/org/heigit/ors/api/servlet/listeners/ORSInitContextListener.java | Moves preparation mode exit logic and adds Environment dependency to detect test vs production mode; improves cleanup error handling |
| ors-api/src/main/java/org/heigit/ors/api/Application.java | Updates bean creation to inject Environment into ORSInitContextListener |
| ors-api/src/test/java/org/heigit/ors/api/servlet/listeners/ORSInitContextListenerTest.java | Updates test to inject Environment dependency |
| ors-api/src/test/resources/application-preparation-mode-test.yml | Adds test configuration for preparation mode testing |
| ors-api/src/test/java/org/heigit/ors/apitests/PreparationModeTest.java | Adds integration test to verify graph packing functionality in preparation mode |
| docs/technical-details/graph-repo-client/index.md | Fixes typo: changes "coverage" to "graph extent" in comments |
| docs/run-instance/configuration/engine/profiles/repo.md | Fixes spelling error in table description and updates formatting |
| docs/run-instance/configuration/engine/profiles/build.md | Adds documentation for graph_extent and profile_group configuration options |
| CHANGELOG.md | Documents the new preparation mode packing feature |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfile.java
Outdated
Show resolved
Hide resolved
...ain/java/org/heigit/ors/routing/graphhopper/extensions/manage/local/ORSGraphFileManager.java
Show resolved
Hide resolved
...ain/java/org/heigit/ors/routing/graphhopper/extensions/manage/local/ORSGraphFileManager.java
Show resolved
Hide resolved
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfileManager.java
Outdated
Show resolved
Hide resolved
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfile.java
Outdated
Show resolved
Hide resolved
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfile.java
Outdated
Show resolved
Hide resolved
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfile.java
Outdated
Show resolved
Hide resolved
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfile.java
Outdated
Show resolved
Hide resolved
ors-api/src/main/java/org/heigit/ors/api/servlet/listeners/ORSInitContextListener.java
Outdated
Show resolved
Hide resolved
aoles
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks a lot! 💪
Please refactor the contextInitialized method to reduce its Cognitive Complexity as reported by SonarQube.
Also, you might want to consider the unresolved comments from copilot's review 🤖
Cheers!
…anager.isInitialized
|



Pull Request Checklist
have been resolved.
[Unreleased] heading.
along with a short description of what it is for, and documented this in the Pull Request (below).
(at least Germany), and the graphs build without problems (i.e. no out-of-memory errors).
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.
and why the change was needed.
Information about the changes
Key functionality added:
preparation_mode, the produced graph files are packed in a.ghzfile and saved in thegraph_pathalong with the corresponding build info.ymlfile.graph_size_bytesors-api)