App.config.sample in repo missing

Trying to follow the installation instructions to build a non-docker installation, I got stuck. The openrouteservice/WebContent/WEB-INF/app.config.sample is missing in the repo…

Where do I find it?

I found one here:
../openrouteservice/src/main/resources/app.config
Unfortunately, that does not solve all my problems.
My profiles are not recognized and the graphs folder does not seem to exist. I know that the graphs root can be edited via app.config, but related to which parent folder?
I set it in app.config to openrouteservice/graphs/
But I never find it anywhere, and the log gives me these errors:

 Starting Application v6.0.0 on ors with PID 668 (/var/lib/tomcat8/webapps/ors/WEB-INF/classes started by tomcat8 in /var/lib/tomcat8)
2020-03-07 22:35:39,638 DEBUG [ors.Application] - Running with Spring Boot v2.0.4.RELEASE, Spring v5.0.8.RELEASE
2020-03-07 22:35:39,657 INFO [ors.Application] - No active profile set, falling back to default profiles: default
2020-03-07 22:35:58,600 INFO [ors.Application] - Started Application in 25.197 seconds (JVM running for 44.748)
2020-03-07 22:35:59,489 INFO [routing.RoutingProfileManager] -  Total - 10,00 GB, Free - 9,92 GB, Max: 10,00 GB, Used - 76,44 MB
2020-03-07 22:35:59,501 INFO [routing.RoutingProfileManager] -
2020-03-07 22:35:59,607 INFO [routing.RoutingProfileManager] - ====> Initializing profiles from 'openrouteservice/src/main/files/bremen-latest.osm.pbf' (1 threads) ...
2020-03-07 22:35:59,608 INFO [routing.RoutingProfileManager] -
2020-03-07 22:35:59,632 INFO [routing.RoutingProfileManager] -
2020-03-07 22:35:59,717 INFO [routing.RoutingProfile] - [1] Profiles: 'driving-car', location: 'openrouteservice/graphs/car'.
2020-03-07 22:36:00,564 ERROR [routing.RoutingProfileManager] - java.util.concurrent.ExecutionException: java.lang.RuntimeException: Directory openrouteservice/graphs/car does not exist and cannot be created to place lock file there: openrouteservice/graphs/car/gh.lock
2020-03-07 22:36:00,565 ERROR [routing.RoutingProfileManager] - Failed to initialize RoutingProfileManager instance.
java.util.concurrent.ExecutionException: java.lang.RuntimeException: Directory openrouteservice/graphs/car does not exist and cannot be created to place lock file there: openrouteservice/graphs/car/gh.lock
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_242]
        at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_242]
        at org.heigit.ors.routing.RoutingProfileManager.initialize(RoutingProfileManager.java:162) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfileManager.getInstance(RoutingProfileManager.java:57) ~[classes/:6.0.0]
        at org.heigit.ors.servlet.listeners.ORSInitContextListener.lambda$contextInitialized$0(ORSInitContextListener.java:40) ~[classes/:6.0.0]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
Caused by: java.lang.RuntimeException: Directory openrouteservice/graphs/car does not exist and cannot be created to place lock file there: openrouteservice/graphs/car/gh.lock
        at com.graphhopper.storage.NativeFSLockFactory$NativeLock.tryLock(NativeFSLockFactory.java:110) ~[graphhopper-core-v0.12.2.jar:?]
        at com.graphhopper.GraphHopper.process(GraphHopper.java:683) ~[graphhopper-core-v0.12.2.jar:?]
        at com.graphhopper.GraphHopper.importOrLoad(GraphHopper.java:666) ~[graphhopper-core-v0.12.2.jar:?]
        at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.importOrLoad(ORSGraphHopper.java:130) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfile.initGraphHopper(RoutingProfile.java:173) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfile.<init>(RoutingProfile.java:119) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:35) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:21) ~[classes/:6.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_242]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_242]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_242]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_242]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_242]
        ... 1 more
2020-03-07 22:36:00,570 INFO [routing.RoutingProfileManager] - ====> Recycling garbage...
2020-03-07 22:36:00,571 INFO [routing.RoutingProfileManager] - Before:  Total - 10,00 GB, Free - 9,85 GB, Max: 10,00 GB, Used - 144,73 MB
2020-03-07 22:36:00,952 INFO [routing.RoutingProfileManager] - After:  Total - 10,00 GB, Free - 9,95 GB, Max: 10,00 GB, Used - 44,76 MB
2020-03-07 22:36:00,953 INFO [routing.RoutingProfileManager] - ========================================================================
2020-03-07 22:36:00,953 INFO [routing.RoutingProfileManager] - ====> Memory usage by profiles:
2020-03-07 22:36:00,959 INFO [routing.RoutingProfileManager] - Total: 0 B (0,0%)
2020-03-07 22:36:00,959 INFO [routing.RoutingProfileManager] - ========================================================================

The error even persists, if I create the folder manually.

Here is my app.config:

{
  "ors": {
"info": {
  "base_url": "http://localhost/",
  "support_mail": "support@openrouteservice.org",
  "author_tag": "openrouteservice",
  "content_licence": "LGPL 3.0"
},
"services": {
  "matrix": {
    "enabled": true,
    "maximum_routes": 100,
    "maximum_routes_flexible": 25,
    "maximum_search_radius": 5000,
    "maximum_visited_nodes": 100000,
    "allow_resolve_locations": true,
    "attribution": "openrouteservice.org, OpenStreetMap contributors"
  },
  "isochrones": {
    "enabled": true,
    "maximum_range_distance": [
      { "profiles": "any", "value": 50000 },
      { "profiles": "driving-car, driving-hgv", "value": 100000 }
    ],
    "maximum_range_time": [
      { "profiles": "any", "value": 18000 },
      { "profiles": "driving-car, driving-hgv", "value": 3600 }
    ],
    "maximum_intervals": 10,
    "maximum_locations": 2,
    "allow_compute_area": true
  },
  "routing": {
    "enabled": true,
    "mode": "normal",
    "routing_description": "This is a routing file from openrouteservice",
    "routing_name": "openrouteservice routing",
    "sources": ["openrouteservice/src/main/files/bremen-latest.osm.pbf"],
    "init_threads": 2,
    "attribution": "openrouteservice.org, OpenStreetMap contributors",
    "profiles": {
      "active": [
       "car",
        "hgv",
        "bike-regular",
        "bike-mountain",
        "bike-road",
        "bike-electric",
        "walking",
        "hiking",
        "wheelchair"           
      ],
      "default_params": {
        "encoder_flags_size": 8,
        "graphs_root_path": "graphs",
        "elevation_provider": "multi",
        "elevation_cache_path": "cgiar_provider",
        "elevation_cache_clear": false,
        "instructions": true,
        "maximum_distance": 100000,
        "maximum_distance_dynamic_weights": 100000,
        "maximum_distance_avoid_areas": 100000,
        "maximum_waypoints": 50,
        "maximum_snapping_radius": 400,
        "preparation": {
          "min_network_size": 200,
          "min_one_way_network_size": 200,

          "methods": {
            "lm": {
              "enabled": true,
              "threads": 1,
              "weightings": "fastest,shortest",
              "landmarks": 16
            }
          }
        },
        "execution": {
          "methods": {
            "lm": {
              "disabling_allowed": true,
              "active_landmarks": 8
            }
          }
        }
      },
      "profile-car": {
        "profiles": "driving-car",
        "parameters": {
          "encoder_flags_size": 8,
          "encoder_options": "turn_costs=true|block_fords=false|use_acceleration=false",
          "maximum_distance": 100000,
          "elevation": true,
          "maximum_snapping_radius": 350,
          "preparation": {
            "min_network_size": 200,
            "min_one_way_network_size": 200,

            "methods": {
              "ch": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest"
              },
              "lm": {
                "enabled": false,
                "threads": 1,
                "weightings": "fastest,shortest",
                "landmarks": 16
              },
              "core": {
                  "enabled": true,
                  "threads": 1,
                  "weightings": "fastest,shortest",
                  "landmarks": 64,
                  "lmsets": "highways;allow_all"
              }
            }
          },
          "execution": {
            "methods": {
              "ch": {
                "disabling_allowed": true
              },
              "lm": {
                "disabling_allowed": true,
                "active_landmarks": 6
              },
              "core": {
                "disabling_allowed": true,
                "active_landmarks": 6
              }
            }
          },
          "ext_storages": {
            "WayCategory": {},
            "HeavyVehicle": {},
            "WaySurfaceType": {},
            "RoadAccessRestrictions": {
              "use_for_warnings": true
            }
          }
        }
      },
      "profile-hgv": {
        "profiles": "driving-hgv",
        "parameters": {
          "encoder_flags_size": 8,
          "encoder_options": "turn_costs=true|block_fords=false|use_acceleration=false",
          "maximum_distance": 100000,
          "elevation": true,
          "preparation": {
            "min_network_size": 200,
            "min_one_way_network_size": 200,

            "methods": {
              "ch": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest"
              },
              "lm": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest,shortest",
                "landmarks": 16
              },
              "core": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest,shortest",
                "landmarks": 64,
                "lmsets": "highways;allow_all"
              }
            }
          },
          "execution": {
            "methods": {
              "ch": {
                "disabling_allowed": true
              },
              "lm": {
                "disabling_allowed": true,
                "active_landmarks": 6
              },
              "core": {
                "disabling_allowed": true,
                "active_landmarks": 6
              }

            }
          },
          "ext_storages": {
            "WayCategory": {},
            "HeavyVehicle": {
              "restrictions": true
            },
            "WaySurfaceType": {}
          }
        }
      },
      "profile-bike-regular": {
        "profiles": "cycling-regular",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-bike-mountain": {
        "profiles": "cycling-mountain",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-bike-road": {
        "profiles": "cycling-road",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-bike-electric": {
        "profiles": "cycling-electric",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-walking": {
        "profiles": "foot-walking",
        "parameters": {
          "encoder_options": "block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-hiking": {
        "profiles": "foot-hiking",
        "parameters": {
          "encoder_options": "block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },

      "profile-wheelchair": {
        "profiles": "wheelchair",
        "parameters": {
          "encoder_options": "block_fords=true",
          "elevation": true,
          "maximum_snapping_radius": 50,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "Wheelchair": {
              "KerbsOnCrossings": "true"
            },
            "OsmId": {}
          }
        }
      }
    }
  }
},
"logging": {
  "enabled": true,
  "level_file": "DEBUG_LOGGING.json",
  "location": "/var/log/ors",
  "stdout": true
}
  }
}

What could cause the profiles not to be recognized? As far as I see it, they are marked as active in the config…
And for testing I changed folder permissions to 777, so I don’t know why ors is unable to create the graphs folder…

I ran into the same issue :-(. Can someone help?

Hi, seems this went under the radar…

So when running it without docker, you would need to rename the app.config.sample file to app.config in the same folder. For the filepaths, you should change these to absolute paths on the system rather than relative paths, else Tomcat would try to create the folders relative to itself which can cause issues. So something like /data/ors/graphs for the graph folder. You should also do the same for the osm data and elevation (and update the logs path if that isn’t suitable)