Error 3099 Unable to build an isochrone

So I finally got a docker instance to build with maven through a proxy but my issue is that using the australia-oceania pbf from geofabrik (which I have verified the md5 of and verified it is being pushed into the docker container) and URI of http://ors.test.server:8080/ors/isochrones?profile=driving-car&locations=144.967346,-37.781569&range=60,120,600 I get the following lengthy error - could someone please advise what may be wrong??

01-Jul-2020 11:01:59.311 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 7944 ms
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - Total time: 0.323s.
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - ========================================================================
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - ====> Recycling garbage…
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - Before: Total - 1019 MB, Free - 644.33 MB, Max: 2.00 GB, Used - 374.67 MB
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - After: Total - 1019 MB, Free - 918.74 MB, Max: 2.00 GB, Used - 100.26 MB
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - ========================================================================
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - ====> Memory usage by profiles:
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - [1] 20.03 MB (20.0%)
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - Total: 20.03 MB (20.0%)
01 Jul 11:01:59 INFO [routing.RoutingProfileManager] - ========================================================================
01 Jul 11:13:29 ERROR [routing.RoutingProfile] - java.lang.IllegalStateException: Calculate snapped point before!
01 Jul 11:13:29 ERROR [http.BaseHttpServlet] - Exception
org.heigit.ors.exceptions.InternalServerException: Unable to build an isochrone map.
at org.heigit.ors.routing.RoutingProfile.buildIsochrone(RoutingProfile.java:1034) ~[classes/:6.1.1]
at org.heigit.ors.routing.RoutingProfileManager.buildIsochrone(RoutingProfileManager.java:601) ~[classes/:6.1.1]
at org.heigit.ors.services.isochrones.requestprocessors.json.JsonIsochronesRequestProcessor.process(JsonIsochronesRequestProcessor.java:97) ~[classes/:6.1.1]
at org.heigit.ors.services.isochrones.IsochronesServiceServlet.doGet(IsochronesServiceServlet.java:67) [classes/:6.1.1]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_252]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_252]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_252]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_252]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) [servlet-api.jar:?]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) [spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [servlet-api.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.heigit.ors.servlet.filters.StatusCodeHandlerFilter.doFilter(StatusCodeHandlerFilter.java:43) [classes/:6.1.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.heigit.ors.servlet.filters.CompressionFilter.doFilter(CompressionFilter.java:44) [classes/:6.1.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:436) [catalina.jar:8.0.32]
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:177) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.32]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [catalina.jar:8.0.32]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.32]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.32]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) [catalina.jar:8.0.32]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) [tomcat-coyote.jar:8.0.32]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) [tomcat-coyote.jar:8.0.32]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-coyote.jar:8.0.32]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-coyote.jar:8.0.32]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.32]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]

Looking at the memory usage, I very much doubt that has actually built the graphs (I would expect Gigabytes of memory usage rather than megabytes).

Can you check the contents of the graphs folder to make sure that there are a number of files in there?

There’s a car folder with the following contents but that’s it:

-rw-r–r-- 1 root root 1048676 Jun 30 01:13 edges
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 ext_hgv
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 ext_road_access_restrictions
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 ext_waycategory
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 ext_waysurface
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 geometry
-rw-r–r-- 1 root root 1048676 Jun 30 01:12 landmarks_core_fastest_car-ors_allow_all
-rw-r–r-- 1 root root 1048676 Jun 30 01:12 landmarks_core_fastest_car-ors_highways
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 landmarks_core_shortest_car-ors_allow_all
-rw-r–r-- 1 root root 1048676 Jun 30 01:12 landmarks_core_shortest_car-ors_highways
-rw-r–r-- 1 root root 1048676 Jun 30 01:12 location_index
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 names
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 nodes
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 nodes_ch_fastest_car-ors_node
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 nodes_core_fastest_car-ors_node
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 nodes_core_shortest_car-ors_node
-rw-r–r-- 1 root root 32868 Jun 30 01:13 properties
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 shortcuts_ch_fastest_car-ors_node
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 shortcuts_core_fastest_car-ors_node
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 shortcuts_core_shortest_car-ors_node
-rw-r–r-- 1 root root 8 Jun 30 01:13 stamp.txt
-rw-r–r-- 1 root root 1048676 Jun 30 01:12 subnetwork_landmarks_core_fastest_car-ors_allow_all
-rw-r–r-- 1 root root 1048676 Jun 30 01:12 subnetwork_landmarks_core_fastest_car-ors_highways
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 subnetwork_landmarks_core_shortest_car-ors_allow_all
-rw-r–r-- 1 root root 1048676 Jun 30 01:12 subnetwork_landmarks_core_shortest_car-ors_highways
-rw-r–r-- 1 root root 1048676 Jun 30 01:13 turn_costs

Actually, looking at the numbers I guess it has built using the sample data. If you are using the docker-compose method, what you would need to do is to change the line in the docker-compose.yam file that points to ./data/heidelberg.osm.gz and point it to your the file you downloaded.

Make sure you delete the contents of the graphs folder before starting it again though else it likely wont rebuild the graphs

I used docker run with the following addition -v $PWD/australia-oceania-latest.osm.pbf:/ors-core/data/osm_file.pbf (which was commented out in the example). It seems to push the PBF file correctly in the docker container’s data folder - ~800mb osm_file.pbf as opposed to the much smaller Heidelberg file.

Maybe I should clear the contents of the graph folder in the container and restart - is that what you are suggesting?

Yes, if there was already contents in the graph folder, it wont automatically rebuild when it restarts, but instead it reads what is already there. Hopefully restarting after clearing it out should then trigger the building of the graphs. In general, I would expect it to take a good few hours to build them for the bigger pbf file. If port 9001 is exposed, then you can use that to track where it is using a java monitor (we use VisualVM)

Ok excellent I will let it run for a while and see if that makes a difference. Thank you so much for your help Adam :smiley: