noi-techpark / odh-mentor-otp

4 stars 8 forks source link

As a project manager I would like to bring the current OTP implementation in production #90

Closed rcavaliere closed 2 years ago

rcavaliere commented 2 years ago

We need:

RudiThoeni commented 2 years ago

@rcavaliere will contact Alex Lanz if he can replicate the testing environment on production

RudiThoeni commented 2 years ago

docker server api.mobility.docker.opendatahub.bz.it --> docker01.opendatahub.bz.it

alexlanz commented 2 years ago

@rcavaliere What is the end-user application on the test environment? We have a lot of domains configured on the test environment:

Regarding the internal naming convention, we structured the test domains because we thought it should later be released as otp.opendatahub.bz.it. But should it now be released as mobility.meran.eu?

alexlanz commented 2 years ago

And also some other question regarding the configuration of the production environment. Do these values stay the same for both environments?

https://github.com/noi-techpark/odh-mentor-otp/blob/development/infrastructure/Jenkinsfile-Test-Execute.groovy#L29-L30 https://github.com/noi-techpark/odh-mentor-otp/blob/development/infrastructure/Jenkinsfile-Test-Execute.groovy#L45-L46 https://github.com/noi-techpark/odh-mentor-otp/blob/development/infrastructure/Jenkinsfile-Test-Calculate.groovy#L18-L22

Sorry, that I don't ask the questions with a bit more context, but I don't really know what the applications do.

rcavaliere commented 2 years ago

@alexlanz thanks for the update. Nobody of these end-points is the end-user application (OTP client), the end-point is https://journey.opendatahub.testingmachine.eu/ These end-points are API made at disposal by the OTP back-end that are used by the OTP client. For the other question, yes, the values are to be kept as they are also for the productive environment

RudiThoeni commented 2 years ago

@rcavaliere We have a potential race condition. The application starts an AWS Instance to do some calculations and then stops it. With the parameter GTFS_URL_UPDATETIME this updates are controlled (default:"daily" possible values: 15min|daily|hourly|monthly|weekly). We wanted to use the same Instance on Development & Production to do the calculations. The problem now is with this Scheduling possibilities the job is executed at the same time (even daily on production + weekly on test would lead to 1 day at week starting the instances at the same time), an and the AWS Instance is shut down by the faster service..... So it could occur the Instance is shut down during Calculations........

We wanted to ask if the developer can change this parameter GTFS_URL_UPDATETIME to a standardized cron schedule expressions so we can schedule Test + Production on different times?

rcavaliere commented 2 years ago

@RudiThoeni @alexlanz received. I have asked OpenMove if they can implement this. @Piiit I also asked to solve the conflicts on https://github.com/noi-techpark/odh-mentor-otp/pull/85 so that we can proceed with the integration of the several other development that they have in the meantime done

alexlanz commented 2 years ago

Perfect. Can you please tell me when this is done so I can go ahead with the deployment?

rcavaliere commented 2 years ago

For sure! I will give you feedback in this user story

zabuTNT commented 2 years ago

@alexlanz with this commit I changed the value of GTFS_URL_UPDATETIME https://github.com/noi-techpark/odh-mentor-otp/pull/85/commits/6f20790948342b2acbe6eade1c8e44162d0cf363

now you have to define it as a cron schedule expression. For example 0 2 * * * in order to run it at 2am, or */30 * * * * if you want every 30 minute.... and so on. So now, you can do for example: 0 3 * * * for production (once a day at 3am) and 0 2 * * 1 for test (on monday at 2 am)

@rcavaliere Now I don't see conflicts in #85. I fixed them days ago. Did I miss something?

alexlanz commented 2 years ago

Perfect, thank you @zabuTNT! I will try it out when the PR is merged.

RudiThoeni commented 2 years ago

The CI fails (in the past it did not even work, but this time it fails at a very early stage....)

+ cp .env.example .env
cp: cannot stat '.env.example': No such file or directory

the .env.example was renamed to dot.env.example? is this intentional?

stefanocudini commented 2 years ago

@RudiThoeni yes, there must be a little mistake in the last commits let's fix it right away however I think that the line cp dot.env.example .env is useless because all the necessary variables are appended immediately after in the script https://github.com/noi-techpark/odh-mentor-otp/blob/development/infrastructure/Jenkinsfile-Test-Execute.groovy#L56

stefanocudini commented 2 years ago

fixed and add new env var named DRT_BASEURL this require also a new subdomain https://**drt**.otp.opendatahub.testingmachine.eu

RudiThoeni commented 2 years ago

@rcavaliere we put everything in production please check https://journey.opendatahub.bz.it

stefanocudini commented 2 years ago

@RudiThoeni https://otp.opendatahub.bz.it service does not respond

alexlanz commented 2 years ago

The container is running. Here are the logs of the whole application:

carsharing_1  | Start Carsharing OpenData Hub...
carsharing_1  | Config:
carsharing_1  |  {
carsharing_1  |   server: { port: 8091, polling_interval: 100 },
carsharing_1  |   endpoints: {
carsharing_1  |     stations: {
carsharing_1  |       path: '/v2/flat%2Cnode/CarsharingStation?distinct=true&limit=500',
charger_1     | Start Charger OpenData Hub...
charger_1     | Config:
charger_1     |  {
charger_1     |   server: { port: 8093, polling_interval: 10 },
charger_1     |   endpoints: {
charger_1     |     stations: {
charger_1     |       path: '/v2/flat%2Cnode/EChargingStation/*/latest?distinct=true&limit=-1&where=scoordinate.bbc.(10,46,12.8,47.2)',
charger_1     |       hostname: 'mobility.api.opendatahub.bz.it',
charger_1     |       port: 443,
charger_1     |       method: 'GET',
charger_1     |       headers: [Object]
charger_1     |     },
charger_1     |     plugs: {
charger_1     |       path: '/v2/flat%2Cnode/EChargingPlug/*/latest?distinct=true&limit=-1&where=scoordinate.bbc.(10,46,12.8,47.2)',
charger_1     |       hostname: 'mobility.api.opendatahub.bz.it',
charger_1     |       port: 443,
charger_1     |       method: 'GET',
charger_1     |       headers: [Object]
charger_1     |     }
charger_1     |   }
charger_1     | }
charger_1     | [ 'get /charger/stations.json', 'get /charger/filters.yml' ]
charger_1     | listening at http://localhost:8093
carsharing_1  |       hostname: 'mobility.api.opendatahub.bz.it',
carsharing_1  |       port: 443,
carsharing_1  |       method: 'GET',
carsharing_1  |       headers: [Object]
carsharing_1  |     },
carsharing_1  |     cars: {
carsharing_1  |       path: '/v2/flat%2Cnode/CarsharingCar?distinct=true&limit=500',
carsharing_1  |       hostname: 'mobility.api.opendatahub.bz.it',
carsharing_1  |       port: 443,
carsharing_1  |       method: 'GET',
carsharing_1  |       headers: [Object]
carsharing_1  |     }
carsharing_1  |   },
carsharing_1  |   uri: {
carsharing_1  |     meran: { web: 'https://www.comune.merano.bz.it' },
carsharing_1  |     bozen: { web: 'https://bolzano.ecospazio.it/' }
carsharing_1  |   }
carsharing_1  | }
carsharing_1  | [
carsharing_1  |   'get /carsharing/stations.json',
carsharing_1  |   'get /carsharing/vehicles.json',
carsharing_1  |   'get /carsharing/regions.json',
carsharing_1  |   'get /carsharing/filters.yml'
carsharing_1  | ]
carsharing_1  | listening at http://localhost:8091
gbfs_1        | Start GBFS OpenData Hub...
gbfs_1        | Config:
gbfs_1        |  {
gbfs_1        |   server: { port: 8089, polling_interval: 10 },
gbfs_1        |   endpoints: {
gbfs_1        |     stations: {
gbfs_1        |       path: '/v2/flat%2Cnode/BikesharingStation?distinct=true',
gbfs_1        |       hostname: 'mobility.api.opendatahub.bz.it',
gbfs_1        |       port: 443,
gbfs_1        |       method: 'GET',
gbfs_1        |       headers: [Object]
gbfs_1        |     },
gbfs_1        |     bays: {
gbfs_1        |       path: '/v2/flat%2Cnode/Bicyclestationbay?distinct=true',
gbfs_1        |       hostname: 'mobility.api.opendatahub.bz.it',
gbfs_1        |       port: 443,
gbfs_1        |       method: 'GET',
gbfs_1        |       headers: [Object]
gbfs_1        |     },
gbfs_1        |     bikes: {
gbfs_1        |       path: '/v2/flat%2Cnode/Bicycle?distinct=true&limit=500',
gbfs_1        |       hostname: 'mobility.api.opendatahub.bz.it',
gbfs_1        |       port: 443,
gbfs_1        |       method: 'GET',
gbfs_1        |       headers: [Object]
gbfs_1        |     }
gbfs_1        |   },
gbfs_1        |   uri: {
gbfs_1        |     meran: {
gbfs_1        |       android: 'https://play.google.com/store/apps/details?id=de.moqo.work&hl=en_US"',
gbfs_1        |       ios: 'https://apps.apple.com/de/app/moqo/id1385011262',
gbfs_1        |       web: 'https://www.comune.merano.bz.it/it/Bikesharing'
gbfs_1        |     },
gbfs_1        |     bozen: { web: 'https://bolzano.ecospazio.it/' },
gbfs_1        |     papin: { web: 'https://www.papinsport.com/' }
gbfs_1        |   }
gbfs_1        | }
gbfs_1        | [
gbfs_1        |   'get /:context/:version/gbfs.json',
gbfs_1        |   'get /:context/:version/gbfs_versions.json',
gbfs_1        |   'get /:context/:version/system_regions.json',
gbfs_1        |   'get /:context/:version/vehicle_types.json',
gbfs_1        |   'get /:context/:version/system_information.json',
gbfs_1        |   'get /:context/:version/station_information.json',
gbfs_1        |   'get /:context/:version/station_status.json',
gbfs_1        |   'get /:context/:version/free_bike_status.json',
gbfs_1        |   'get /:context/:version/system_hours.json'
gbfs_1        | ]
gbfs_1        | listening at http://localhost:8089
otp_1         | 11:19:20.239 INFO (OTPServer.java:39) Wiring up and configuring server.
otp_1         | 11:19:20.259 INFO (GraphScanner.java:64) Attempting to automatically register routerIds [openmove]
otp_1         | 11:19:20.259 INFO (GraphScanner.java:65) Graph files will be sought in paths relative to /data
otp_1         | 11:19:20.278 INFO (GraphService.java:176) Registering new router 'openmove'
otp_1         | 11:19:20.284 INFO (InputStreamGraphSource.java:177) Loading graph...
otp_1         | 11:19:22.755 INFO (Graph.java:797) Graph version: MavenVersion(1, 5, 0, SNAPSHOT, 799c20856f219bf814378f81455aeade9aa6d220)
otp_1         | 11:19:22.756 INFO (Graph.java:798) OTP version:   MavenVersion(1, 5, 0, SNAPSHOT, 799c20856f219bf814378f81455aeade9aa6d220)
otp_1         | 11:19:22.765 INFO (Graph.java:815) This graph was built with the currently running version and commit of OTP.
geocoder_1    | GEOCODER CONFIG {
geocoder_1    |   server: { port: 8088, default_lang: 'en', mintextlength: 3 },
geocoder_1    |   endpoints: {
geocoder_1    |     here: {
geocoder_1    |       appId: 123456,
geocoder_1    |       appCode: 123456,
geocoder_1    |       size: 5,
geocoder_1    |       layer: 'address',
geocoder_1    |       boundary: [Object],
geocoder_1    |       hostname: 'tourism.opendatahub.bz.it',
geocoder_1    |       port: 443,
geocoder_1    |       method: 'GET',
geocoder_1    |       headers: [Object]
geocoder_1    |     },
geocoder_1    |     opentripplanner: {
geocoder_1    |       hostname: '/otp/routers/openmove',
geocoder_1    |       path: '/otp/routers/default/geocode?query={{text}}',
geocoder_1    |       port: null,
geocoder_1    |       size: 5,
geocoder_1    |       layer: 'stops',
geocoder_1    |       method: 'GET',
geocoder_1    |       headers: [Object]
geocoder_1    |     },
geocoder_1    |     accommodations: {
geocoder_1    |       path: '/api/Accommodation?searchfilter={{text}}&pagesize={{size}}&language={{lang}}&poitype=447&active=true&fields=Id,AccoDetail.{{lang}}.Name,Latitude,Longitude',
geocoder_1    |       size: 5,
geocoder_1    |       layer: 'venue',
geocoder_1    |       hostname: 'tourism.opendatahub.bz.it',
geocoder_1    |       port: 443,
geocoder_1    |       method: 'GET',
geocoder_1    |       headers: [Object]
geocoder_1    |     },
geocoder_1    |     ODHActivityPoi: {
geocoder_1    |       path: '/api/ODHActivityPoi/?searchfilter={{text}}&pagesize={{size}}&language={{lang}}&poitype=447&active=true&fields=Id,Detail.{{lang}}.Title,GpsInfo',
geocoder_1    |       size: 5,
geocoder_1    |       layer: 'venue',
geocoder_1    |       hostname: 'tourism.opendatahub.bz.it',
geocoder_1    |       port: 443,
geocoder_1    |       method: 'GET',
geocoder_1    |       headers: [Object]
geocoder_1    |     }
geocoder_1    |   }
geocoder_1    | }
geocoder_1    | [
geocoder_1    |   'get /',
geocoder_1    |   'get /v1/',
geocoder_1    |   'get /v1/attribution',
geocoder_1    |   'get /attribution',
geocoder_1    |   'get /status',
geocoder_1    |   'get /v1/place',
geocoder_1    |   'get /v1/autocomplete',
geocoder_1    |   'get /v1/search',
geocoder_1    |   'post /v1/search',
geocoder_1    |   'get /v1/search/structured',
geocoder_1    |   'get /v1/reverse',
geocoder_1    |   'get /v1/nearby'
geocoder_1    | ]
geocoder_1    | [GEOCODER] listening on 8088
geocoder_1    | [GEOCODER] Pelias Search: " test " lang: en
geocoder_1    | [GEOCODER] search: "test" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 1
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 1
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " meran " lang: en
geocoder_1    | [GEOCODER] search: "meran" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " freiheits " lang: de
geocoder_1    | [GEOCODER] search: "freiheits" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 1
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " eisstadion " lang: de
geocoder_1    | [GEOCODER] search: "eisstadion" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " meran " lang: de
geocoder_1    | [GEOCODER] search: "meran" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " kursaal " lang: de
geocoder_1    | [GEOCODER] search: "kursaal" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 0
parking_1     | Start Parking OpenData Hub...
parking_1     | Config:
parking_1     |  {
parking_1     |   server: {
parking_1     |     port: 8092,
parking_1     |     polling_interval: 10,
parking_1     |     geometryCircleRadius: 100,
parking_1     |     returnGroupSensors: false,
parking_1     |     minGroupSensors: 4
parking_1     |   },
parking_1     |   endpoints: {
parking_1     |     stations: {
parking_1     |       path: '/v2/flat%2Cnode/ParkingStation/free/latest?distinct=true&limit=-1&where=mperiod.eq.300',
parking_1     |       hostname: 'mobility.api.opendatahub.bz.it',
parking_1     |       port: 443,
parking_1     |       method: 'GET',
parking_1     |       headers: [Object]
parking_1     |     },
parking_1     |     sensors: {
parking_1     |       path: '/v2/flat%2Cnode/ParkingSensor/*/latest?distinct=true&limit=-1',
parking_1     |       hostname: 'mobility.api.opendatahub.bz.it',
parking_1     |       port: 443,
parking_1     |       method: 'GET',
parking_1     |       headers: [Object]
parking_1     |     }
parking_1     |   }
parking_1     | }
parking_1     | [
parking_1     |   'get /parking/stations.json',
parking_1     |   'get /parking/park-ride.json',
parking_1     |   'get /parking/sensors.json',
parking_1     |   'get /parking/all.json'
parking_1     | ]
parking_1     | listening at http://localhost:8092
drt_1         | Start DRT OpenData Hub...
drt_1         | Config:
drt_1         |  {
drt_1         |   server: { port: 8095, polling_interval: 20, filename: 'gtfs-flex' },
drt_1         |   endpoints: {
drt_1         |     vehicles: {
drt_1         |       path: '/v2/flat,node/ON_DEMAND_VEHICLE/*/latest',
drt_1         |       hostname: 'mobility.api.opendatahub.testingmachine.eu',
drt_1         |       port: 443,
drt_1         |       method: 'GET',
drt_1         |       headers: [Object]
drt_1         |     },
drt_1         |     stops: {
drt_1         |       path: '/v2/flat,node/ON_DEMAND_STOP',
drt_1         |       hostname: 'mobility.api.opendatahub.testingmachine.eu',
drt_1         |       port: 443,
drt_1         |       method: 'GET',
drt_1         |       headers: [Object]
drt_1         |     },
drt_1         |     trips: {
drt_1         |       path: '/v2/flat,node/ON_DEMAND_ITINERARY/*/latest',
drt_1         |       hostname: 'mobility.api.opendatahub.testingmachine.eu',
drt_1         |       port: 443,
drt_1         |       method: 'GET',
drt_1         |       headers: [Object]
drt_1         |     }
drt_1         |   },
drt_1         |   gtfsFlex: {
drt_1         |     agency_id: 'DRT',
drt_1         |     agency_name: 'Call Bus',
drt_1         |     agency_url: 'https://www.sasabz.it/callbus',
drt_1         |     agency_timezone: 'Europe/Rome',
drt_1         |     agency_lang: 'it',
drt_1         |     agency_phone: 390471706633
drt_1         |   }
drt_1         | }
drt_1         | [
drt_1         |   'get /drt/vehicles.json',
drt_1         |   'get /drt/stops.json',
drt_1         |   'get /drt/all.json',
drt_1         |   'get /drt/flex',
drt_1         |   'get /drt/vehicles.proto'
drt_1         | ]
drt_1         | listening at http://localhost:8095
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " kursa " lang: de
geocoder_1    | [GEOCODER] search: "kursa" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " kursaal " lang: de
geocoder_1    | [GEOCODER] search: "kursaal" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: "  " lang: en
geocoder_1    | [GEOCODER] Pelias Search: " k " lang: de
geocoder_1    | [GEOCODER] Pelias Search: " kurs " lang: de
geocoder_1    | [GEOCODER] search: "kurs" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " kursaal " lang: de
geocoder_1    | [GEOCODER] search: "kursaal" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " kursaal " lang: de
geocoder_1    | [GEOCODER] search: "kursaal" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " s " lang: de
geocoder_1    | [GEOCODER] Pelias Search: " meran " lang: de
geocoder_1    | [GEOCODER] search: "meran" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
geocoder_1    | [GEOCODER] Pelias Search: " meran " lang: de
geocoder_1    | [GEOCODER] search: "meran" parallel remote requests...
geocoder_1    | [GEOCODER] response Endpoint: 'opentripplanner' results 0
geocoder_1    | [GEOCODER] response Endpoint: 'accommodations' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'ODHActivityPoi' results 5
geocoder_1    | [GEOCODER] response Endpoint: 'here' results 0
stefanocudini commented 2 years ago

for example this: https://otp.opendatahub.bz.it/otp/routers/openmove/index/stops return only HTTP 502 Bad Gateway

yesterday this worked

alexlanz commented 2 years ago
otp_1         | 12:41:08.519 INFO (Graph.java:782) Main graph read. |V|=1300742 |E|=3397623
otp_1         | 12:41:08.519 INFO (Graph.java:734) building street index
otp_1         | 12:41:19.591 INFO (StreetSplitter.java:144) New StreetSpiltter created successfully!
otp_1         | 12:41:19.591 INFO (Graph.java:736) street index built
otp_1         | 12:41:19.591 INFO (Graph.java:738) Rebuilding edge and vertex indices
otp_1         | 12:41:21.290 INFO (GraphIndex.java:127) Indexing graph...
otp_1         | 12:41:25.862 INFO (GraphIndex.java:665) Clustering stops by parent station...
otp_1         | 12:41:25.888 INFO (GraphIndex.java:210) Creating a spatial index for stop clusters.
otp_1         | 12:41:25.943 INFO (GraphIndex.java:192) Initializing areas....
otp_1         | 12:41:25.944 INFO (GraphIndex.java:199) Done indexing graph.
otp_1         | 12:41:26.235 INFO (Router.java:100) No default routing parameters were found in the router config JSON. Using built-in OTP defaults.
otp_1         | 12:41:26.243 INFO (Router.java:127) Timeouts for router 'openmove': [5.0, 4.0, 2.0]
otp_1         | 12:41:26.243 INFO (Router.java:134) Incoming requests will not be logged.
otp_1         | 12:41:26.245 INFO (GraphUpdaterConfigurator.java:45) Using configurations: [main]
otp_1         | 12:41:26.250 INFO (PollingStoptimeUpdater.java:105) Creating stop time updater running every 60 seconds : GtfsRealtimeHttpUpdateStreamer(https://efa.sta.bz.it/gtfs-r/)
otp_1         | 12:41:26.254 INFO (GraphUpdaterConfigurator.java:126) Configured GraphUpdater: Streaming stoptime updater with update source = GtfsRealtimeHttpUpdateStreamer(https://efa.sta.bz.it/gtfs-r/)
otp_1         | 12:41:26.262 INFO (BikeRentalUpdater.java:117) Setting up bike rental updater.
otp_1         | 12:41:26.262 INFO (BikeRentalUpdater.java:124) Creating bike-rental updater running every 120 seconds: org.opentripplanner.updater.bike_rental.GbfsBikeRentalDataSource@334c80be
otp_1         | 12:41:26.263 INFO (GraphUpdaterConfigurator.java:126) Configured GraphUpdater: org.opentripplanner.updater.bike_rental.BikeRentalUpdater@5a49c1e
otp_1         | 12:41:26.263 INFO (BikeRentalUpdater.java:117) Setting up bike rental updater.
otp_1         | 12:41:26.263 INFO (BikeRentalUpdater.java:124) Creating bike-rental updater running every 120 seconds: org.opentripplanner.updater.bike_rental.GbfsBikeRentalDataSource@4662fa99
otp_1         | 12:41:26.264 INFO (GraphUpdaterConfigurator.java:126) Configured GraphUpdater: org.opentripplanner.updater.bike_rental.BikeRentalUpdater@54539319
otp_1         | 12:41:26.264 INFO (BikeRentalUpdater.java:117) Setting up bike rental updater.
otp_1         | 12:41:26.264 INFO (BikeRentalUpdater.java:124) Creating bike-rental updater running every 120 seconds: org.opentripplanner.updater.bike_rental.GbfsBikeRentalDataSource@5312c883
otp_1         | 12:41:26.264 INFO (GraphUpdaterConfigurator.java:126) Configured GraphUpdater: org.opentripplanner.updater.bike_rental.BikeRentalUpdater@7277fa93
otp_1         | 12:41:26.267 INFO (CarRentalUpdater.java:91) Setting up car rental updater.
otp_1         | 12:41:26.268 INFO (CarRentalUpdater.java:98) Creating car rental updater running every 30 seconds : org.opentripplanner.updater.car_rental.Car2GoCarRentalDataSource@243deb3f
otp_1         | 12:41:26.269 INFO (GraphUpdaterConfigurator.java:126) Configured GraphUpdater: org.opentripplanner.updater.car_rental.CarRentalUpdater@1bf3af3d
otp_1         | 12:41:26.272 INFO (CarParkUpdater.java:106) Creating car-park updater running every 60 seconds : org.opentripplanner.updater.car_park.ODHCarParkDataSource(https://parking.otp.opendatahub.bz.it/parking/park-ride.json)
otp_1         | 12:41:26.277 INFO (GraphUpdaterConfigurator.java:126) Configured GraphUpdater: org.opentripplanner.updater.car_park.CarParkUpdater@763e1ec9
otp_1         | 12:41:26.278 INFO (GraphUpdaterManager.java:159) Starting new thread for updater Streaming stoptime updater with update source = GtfsRealtimeHttpUpdateStreamer(https://efa.sta.bz.it/gtfs-r/)
otp_1         | 12:41:26.282 INFO (GraphUpdaterManager.java:159) Starting new thread for updater org.opentripplanner.updater.bike_rental.BikeRentalUpdater@5a49c1e
otp_1         | 12:41:26.283 INFO (GraphUpdaterManager.java:159) Starting new thread for updater org.opentripplanner.updater.bike_rental.BikeRentalUpdater@54539319
otp_1         | 12:41:26.284 INFO (PollingGraphUpdater.java:43) Polling updater started: org.opentripplanner.updater.bike_rental.BikeRentalUpdater@5a49c1e
otp_1         | 12:41:26.286 INFO (GraphUpdaterManager.java:159) Starting new thread for updater org.opentripplanner.updater.bike_rental.BikeRentalUpdater@7277fa93
otp_1         | 12:41:26.288 INFO (PollingGraphUpdater.java:43) Polling updater started: org.opentripplanner.updater.bike_rental.BikeRentalUpdater@54539319
otp_1         | 12:41:26.291 INFO (PollingGraphUpdater.java:43) Polling updater started: Streaming stoptime updater with update source = GtfsRealtimeHttpUpdateStreamer(https://efa.sta.bz.it/gtfs-r/)
otp_1         | 12:41:26.295 INFO (GraphUpdaterManager.java:159) Starting new thread for updater org.opentripplanner.updater.car_rental.CarRentalUpdater@1bf3af3d
otp_1         | 12:41:26.299 INFO (GraphUpdaterManager.java:159) Starting new thread for updater org.opentripplanner.updater.car_park.CarParkUpdater@763e1ec9
otp_1         | 12:41:26.300 INFO (PollingGraphUpdater.java:43) Polling updater started: org.opentripplanner.updater.car_rental.CarRentalUpdater@1bf3af3d
otp_1         | 12:41:26.302 INFO (PollingGraphUpdater.java:43) Polling updater started: org.opentripplanner.updater.bike_rental.BikeRentalUpdater@7277fa93
otp_1         | 12:41:26.308 INFO (PollingGraphUpdater.java:43) Polling updater started: org.opentripplanner.updater.car_park.CarParkUpdater@763e1ec9
otp_1         | 12:41:26.725 INFO (Router.java:172) Computed ellipsoid/geoid offset at (43.8251550055187, 13.1475442508431) as 42.54741665801867
otp_1         | 12:41:26.751 INFO (GrizzlyServer.java:72) Starting OTP Grizzly server on ports 8080 (HTTP) and 8081 (HTTPS) of interface 0.0.0.0
otp_1         | 12:41:26.752 INFO (GrizzlyServer.java:74) OTP server base path is /var/otp
otp_1         | 12:41:26.877 INFO (GrizzlyServer.java:51) Java reports that this machine has 2 available processors.
otp_1         | 12:41:26.879 INFO (GrizzlyServer.java:62) Maximum HTTP handler thread pool size will be 4 threads.
otp_1         | 12:41:27.081 INFO (ServiceFinder.java:172) Running in a non-OSGi environment
otp_1         | 12:41:37.510 INFO (ApplicationHandler.java:419) Initiating Jersey application, version Jersey: 2.18 2015-06-05 02:28:21...
otp_1         | 12:41:37.602 INFO (CarParkUpdater.java:161) Car park P03 - Piazza Walther at 46.497805, 11.355115 adding...
otp_1         | 12:41:37.710 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_STATIONS] Failed to get data from url http://gbfs.otp.opendatahub.bz.it/bz/1/station_information.json (url: http://gbfs.otp.opendatahub.bz.it/bz/1/station_information.json)
otp_1         | 12:41:37.711 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_STATIONS] Failed to get data from url http://gbfs.otp.opendatahub.bz.it/papin/1/station_information.json (url: http://gbfs.otp.opendatahub.bz.it/papin/1/station_information.json)
otp_1         | 12:41:37.711 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_STATIONS] Failed to get data from url http://gbfs.otp.opendatahub.bz.it/me/1/station_information.json (url: http://gbfs.otp.opendatahub.bz.it/me/1/station_information.json)
otp_1         | 12:41:37.729 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_FLOATING_VEHICLES] Failed to get data from url http://gbfs.otp.opendatahub.bz.it/me/1/free_bike_status.json (url: http://gbfs.otp.opendatahub.bz.it/me/1/free_bike_status.json)
otp_1         | 12:41:37.732 ERROR (GbfsBikeRentalDataSource.java:94) [severity: FEED_WIDE] Both station and vehicle info not found! (network: ME)
otp_1         | 12:41:37.750 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_FLOATING_VEHICLES] Error reading bike rental feed from null (url: null)
otp_1         | java.net.MalformedURLException: null
otp_1         |     at java.net.URL.<init>(URL.java:645) ~[na:1.8.0_275]
otp_1         |     at java.net.URL.<init>(URL.java:508) ~[na:1.8.0_275]
otp_1         |     at java.net.URL.<init>(URL.java:457) ~[na:1.8.0_275]
otp_1         |     at org.opentripplanner.updater.bike_rental.GenericJsonBikeRentalDataSource.update(GenericJsonBikeRentalDataSource.java:106) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.bike_rental.GbfsBikeRentalDataSource.update(GbfsBikeRentalDataSource.java:69) [otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.bike_rental.BikeRentalUpdater.runPolling(BikeRentalUpdater.java:140) [otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.PollingGraphUpdater.run(PollingGraphUpdater.java:47) [otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.GraphUpdaterManager.lambda$startUpdaters$1(GraphUpdaterManager.java:162) [otp-unofficial.jar:1.1]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_275]
otp_1         |     at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_275]
otp_1         | Caused by: java.lang.NullPointerException: null
otp_1         |     at java.net.URL.<init>(URL.java:550) ~[na:1.8.0_275]
otp_1         |     ... 10 common frames omitted
otp_1         | 12:41:37.760 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_FLOATING_VEHICLES] Error reading bike rental feed from null (url: null)
otp_1         | java.net.MalformedURLException: null
otp_1         |     at java.net.URL.<init>(URL.java:645) ~[na:1.8.0_275]
otp_1         |     at java.net.URL.<init>(URL.java:508) ~[na:1.8.0_275]
otp_1         |     at java.net.URL.<init>(URL.java:457) ~[na:1.8.0_275]
otp_1         |     at org.opentripplanner.updater.bike_rental.GenericJsonBikeRentalDataSource.update(GenericJsonBikeRentalDataSource.java:106) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.bike_rental.GbfsBikeRentalDataSource.update(GbfsBikeRentalDataSource.java:69) [otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.bike_rental.BikeRentalUpdater.runPolling(BikeRentalUpdater.java:140) [otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.PollingGraphUpdater.run(PollingGraphUpdater.java:47) [otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.GraphUpdaterManager.lambda$startUpdaters$1(GraphUpdaterManager.java:162) [otp-unofficial.jar:1.1]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_275]
otp_1         |     at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_275]
otp_1         | Caused by: java.lang.NullPointerException: null
otp_1         |     at java.net.URL.<init>(URL.java:550) ~[na:1.8.0_275]
otp_1         |     ... 10 common frames omitted
otp_1         | 12:41:37.764 ERROR (GbfsBikeRentalDataSource.java:94) [severity: FEED_WIDE] Both station and vehicle info not found! (network: PAPIN)
otp_1         | 12:41:37.766 ERROR (GbfsBikeRentalDataSource.java:94) [severity: FEED_WIDE] Both station and vehicle info not found! (network: BZ)
otp_1         | 12:41:37.944 INFO (CarParkUpdater.java:161) Car park P04 - Luna via Molini at 46.500551, 11.358216 adding...
otp_1         | 12:41:37.956 INFO (CarParkUpdater.java:161) Car park P05 - Laurin at 46.498174, 11.357255 adding...
otp_1         | 12:41:38.032 INFO (CarParkUpdater.java:161) Car park P08 - BZ Centro via Mayr Nusser at 46.494402, 11.356716 adding...
otp_1         | 12:41:38.096 INFO (CarParkUpdater.java:161) Car park P15 - Palasport via Resia at 46.491603, 11.318078 adding...
otp_1         | 12:41:38.141 INFO (CarParkUpdater.java:161) Car park A.S.M. at 45.893593, 11.036507 adding...
otp_1         | 12:41:38.161 ERROR (GraphUpdaterManager.java:144) Error while running graph writer org.opentripplanner.updater.car_park.CarParkUpdater$CarParkGraphWriterRunnable:
otp_1         | java.lang.ClassCastException: org.opentripplanner.routing.vertextype.ParkAndRideVertex cannot be cast to org.opentripplanner.routing.location.TemporaryStreetLocation
otp_1         |     at org.opentripplanner.graph_builder.linking.StreetSplitter.linkToGraph(StreetSplitter.java:363) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.graph_builder.linking.StreetSplitter.linkToGraph(StreetSplitter.java:243) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.graph_builder.linking.StreetSplitter.linkToClosestWalkableEdge(StreetSplitter.java:215) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.car_park.CarParkUpdater$CarParkGraphWriterRunnable.run(CarParkUpdater.java:172) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.GraphUpdaterManager.lambda$execute$0(GraphUpdaterManager.java:142) ~[otp-unofficial.jar:1.1]
otp_1         |     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_275]
otp_1         |     at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_275]
otp_1         | 12:41:38.209 INFO (BikeRentalUpdater.java:187) Updating rental bike stations for network.
otp_1         | 12:41:38.210 INFO (BikeRentalUpdater.java:187) Updating rental bike stations for network.
otp_1         | 12:41:38.211 INFO (BikeRentalUpdater.java:187) Updating rental bike stations for network.
otp_1         | 12:41:38.212 INFO (CarRentalUpdater.java:164) Updating car rental stations for network car2go.
otp_1         | 12:41:38.226 ERROR (GraphUpdaterManager.java:144) Error while running graph writer org.opentripplanner.updater.car_rental.CarRentalUpdater$CarRentalGraphWriterRunnable:
otp_1         | java.lang.NullPointerException: null
otp_1         |     at org.opentripplanner.util.DateUtils.withinTimeToLive(DateUtils.java:290) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.car_rental.CarRentalUpdater$CarRentalGraphWriterRunnable.applyStations(CarRentalUpdater.java:170) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.car_rental.CarRentalUpdater$CarRentalGraphWriterRunnable.run(CarRentalUpdater.java:137) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.GraphUpdaterManager.lambda$execute$0(GraphUpdaterManager.java:142) ~[otp-unofficial.jar:1.1]
otp_1         |     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_275]
otp_1         |     at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_275]
otp_1         | 12:41:38.893 INFO (ExtendedLogger.java:345) Selected ExecutorServiceProvider implementation [org.glassfish.jersey.server.internal.process.ServerProcessingBinder$DefaultManagedAsyncExecutorProvider] to be used for injection of executor qualified by [org.glassfish.jersey.server.ManagedAsyncExecutor] annotation.
otp_1         | 12:41:38.896 INFO (ExtendedLogger.java:345) Selected ScheduledExecutorServiceProvider implementation [org.glassfish.jersey.server.internal.process.ServerProcessingBinder$DefaultBackgroundSchedulerProvider] to be used for injection of scheduler qualified by [org.glassfish.jersey.server.BackgroundScheduler] annotation.
otp_1         | 12:41:39.120 WARN (PropertiesHelper.java:330) There is no way how to transform value "true" [java.lang.Boolean] to type [java.lang.String].
otp_1         | 12:41:39.125 INFO (ApplicationHandler.java:683) Jersey application initialized.
otp_1         | Root Resource Classes:
otp_1         |   org.opentripplanner.api.resource.SimpleIsochrone
otp_1         |   org.opentripplanner.api.resource.SIsochrone
otp_1         |   org.opentripplanner.api.resource.TimeGridWs
otp_1         |   org.opentripplanner.index.GeocoderResource
otp_1         |   org.opentripplanner.api.resource.ScriptResource
otp_1         |   org.opentripplanner.api.resource.WalkComfort
otp_1         |   org.opentripplanner.api.resource.SurfaceResource
otp_1         |   org.opentripplanner.api.resource.RepeatedRaptorTestResource
otp_1         |   org.opentripplanner.api.resource.Routers
otp_1         |   org.opentripplanner.api.resource.ProfileResource
otp_1         |   org.opentripplanner.api.resource.PointSetResource
otp_1         |   org.opentripplanner.api.resource.BikeRental
otp_1         |   org.opentripplanner.api.resource.TileService
otp_1         |   org.opentripplanner.api.resource.PlannerResource
otp_1         |   org.opentripplanner.api.resource.ParkAndRide
otp_1         |   org.opentripplanner.api.resource.TransportationNetworkCompanyResource
otp_1         |   org.opentripplanner.api.resource.ServerInfo
otp_1         |   org.opentripplanner.api.resource.AlertPatcher
otp_1         |   org.opentripplanner.api.resource.ExternalGeocoderResource
otp_1         |   org.opentripplanner.api.resource.GraphInspectorTileResource
otp_1         |   org.opentripplanner.api.resource.VehicleRental
otp_1         |   org.opentripplanner.api.resource.CarRental
otp_1         |   org.opentripplanner.api.resource.UpdaterStatusResource
otp_1         |   org.opentripplanner.api.resource.LegendResource
otp_1         |   org.opentripplanner.api.resource.LIsochrone
otp_1         |   org.opentripplanner.api.resource.ScenarioResource
otp_1         |   org.opentripplanner.index.IndexAPI
otp_1         | Global Request Filters:
otp_1         |    org.opentripplanner.standalone.AuthFilter
otp_1         |    org.opentripplanner.standalone.CorsFilter
otp_1         | Global Response Filters:
otp_1         |    org.opentripplanner.standalone.CorsFilter
otp_1         | Global Reader Interceptors:
otp_1         |    org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor
otp_1         | Global Writer Interceptors:
otp_1         |    org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor
otp_1         |    org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor
otp_1         | Dynamic Features:
otp_1         |    org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature@42af751f
otp_1         | Message Body Readers:
otp_1         |    org.glassfish.jersey.media.multipart.internal.MultiPartReaderServerSide
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootElementJaxbProvider$General
otp_1         |    org.glassfish.jersey.message.internal.BasicTypesMessageProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlCollectionJaxbProvider$General
otp_1         |    org.glassfish.jersey.message.internal.FormMultivaluedMapProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlJaxbElementProvider$App
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootObjectJaxbProvider$Text
otp_1         |    org.glassfish.jersey.message.internal.SourceProvider$StreamSourceReader
otp_1         |    org.glassfish.jersey.message.internal.FileProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlJaxbElementProvider$Text
otp_1         |    org.glassfish.jersey.message.internal.FormProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootElementJaxbProvider$Text
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootObjectJaxbProvider$General
otp_1         |    org.glassfish.jersey.message.internal.InputStreamProvider
otp_1         |    org.glassfish.jersey.message.internal.SourceProvider$DomSourceReader
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlCollectionJaxbProvider$App
otp_1         |    org.glassfish.jersey.message.internal.DataSourceProvider
otp_1         |    org.glassfish.jersey.message.internal.ByteArrayProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootElementJaxbProvider$App
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlJaxbElementProvider$General
otp_1         |    org.glassfish.jersey.message.internal.RenderedImageProvider
otp_1         |    org.glassfish.jersey.message.internal.ReaderProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootObjectJaxbProvider$App
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlCollectionJaxbProvider$Text
otp_1         |    org.glassfish.jersey.message.internal.StringMessageProvider
otp_1         |    org.glassfish.jersey.message.internal.SourceProvider$SaxSourceReader
otp_1         |    com.fasterxml.jackson.jaxrs.xml.JacksonXMLProvider
otp_1         |    com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.DocumentProvider
otp_1         | Message Body Writers:
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootElementJaxbProvider$General
otp_1         |    org.glassfish.jersey.message.internal.BasicTypesMessageProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlCollectionJaxbProvider$General
otp_1         |    org.glassfish.jersey.message.internal.FormMultivaluedMapProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlJaxbElementProvider$App
otp_1         |    org.glassfish.jersey.message.internal.FileProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlJaxbElementProvider$Text
otp_1         |    org.glassfish.jersey.message.internal.StreamingOutputProvider
otp_1         |    org.glassfish.jersey.message.internal.FormProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootElementJaxbProvider$Text
otp_1         |    org.glassfish.jersey.media.multipart.internal.MultiPartWriter
otp_1         |    org.glassfish.jersey.message.internal.InputStreamProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlCollectionJaxbProvider$App
otp_1         |    org.glassfish.jersey.message.internal.DataSourceProvider
otp_1         |    org.glassfish.jersey.message.internal.ByteArrayProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlRootElementJaxbProvider$App
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlJaxbElementProvider$General
otp_1         |    org.glassfish.jersey.message.internal.RenderedImageProvider
otp_1         |    org.glassfish.jersey.message.internal.ReaderProvider
otp_1         |    org.glassfish.jersey.message.internal.SourceProvider$SourceWriter
otp_1         |    org.glassfish.jersey.jaxb.internal.XmlCollectionJaxbProvider$Text
otp_1         |    org.glassfish.jersey.message.internal.StringMessageProvider
otp_1         |    org.glassfish.jersey.server.ChunkedResponseWriter
otp_1         |    com.fasterxml.jackson.jaxrs.xml.JacksonXMLProvider
otp_1         |    com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
otp_1         |    org.glassfish.jersey.jaxb.internal.DocumentProvider
otp_1         |
otp_1         | 12:41:39.251 INFO (NetworkListener.java:750) Started listener bound to [0.0.0.0:8080]
otp_1         | 12:41:39.262 INFO (NetworkListener.java:750) Started listener bound to [0.0.0.0:8081]
otp_1         | 12:41:39.265 INFO (HttpServer.java:300) [HttpServer] Started.
otp_1         | 12:41:39.266 INFO (GrizzlyServer.java:153) Grizzly server running.
otp_1         | 12:42:08.013 INFO (CarRentalUpdater.java:164) Updating car rental stations for network car2go.
otp_1         | 12:42:08.014 ERROR (GraphUpdaterManager.java:144) Error while running graph writer org.opentripplanner.updater.car_rental.CarRentalUpdater$CarRentalGraphWriterRunnable:
otp_1         | java.lang.NullPointerException: null
otp_1         |     at org.opentripplanner.util.DateUtils.withinTimeToLive(DateUtils.java:290) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.car_rental.CarRentalUpdater$CarRentalGraphWriterRunnable.applyStations(CarRentalUpdater.java:170) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.car_rental.CarRentalUpdater$CarRentalGraphWriterRunnable.run(CarRentalUpdater.java:137) ~[otp-unofficial.jar:1.1]
otp_1         |     at org.opentripplanner.updater.GraphUpdaterManager.lambda$execute$0(GraphUpdaterManager.java:142) ~[otp-unofficial.jar:1.1]
otp_1         |     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_275]
otp_1         |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_275]
otp_1         |     at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_275]
RudiThoeni commented 2 years ago

@stefanocudini https://otp.opendatahub.bz.it/ is now working however the log displays some errors, can you have a look at it?

We wondered why here are referenced the "http" links in the configuration we set GBFS_HOST ="https://gbfs.otp.opendatahub.bz.it/

otp_1 | 12:41:37.710 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_STATIONS] Failed to get data from url http://gbfs.otp.opendatahub.bz.it/bz/1/station_information.json (url: http://gbfs.otp.opendatahub.bz.it/bz/1/station_information.json)

rcavaliere commented 2 years ago

@alexlanz @RudiThoeni remember: the OTP back-end also has an API that provides the ODH data in "standard" format (e.g. GTFS, GBFS, etc.). @stefanocudini does this have at the moment some impact on the correct visualization of the data on the client https://journey.opendatahub.testingmachine.eu ?

RudiThoeni commented 2 years ago

@rcavaliere i think now it is all working on production ex. https://otp.opendatahub.bz.it/otp/routers/default/index/stops

we want only to investigate the errors shown in the log during deployment.....

stefanocudini commented 2 years ago

otp_1 | 12:41:37.710 ERROR (GenericJsonBikeRentalDataSource.java:97) [severity: ALL_STATIONS] Failed to get data from url http://gbfs.otp.opendatahub.bz.it/bz/1/station_information.json (url: http://gbfs.otp.opendatahub.bz.it/bz/1/station_information.json)

I can suppose that Java don't support http redirect to https.. you can try use same url with https. or it might depend on your container network configuration. I can open the resource from remote and the data they see are correct

RudiThoeni commented 2 years ago

we did not found where we have defined a "http" link because on the config we set the https link GBFS_HOST ="https://gbfs.otp.opendatahub.bz.it/ so the question is where the http link comes from?

RudiThoeni commented 2 years ago

hera a full log when the container start containerlog.txt s

stefanocudini commented 2 years ago

@RudiThoeni the problem is here: https://gbfs.otp.opendatahub.bz.it/bz/1/gbfs.json it should list the url with the same protocol seen from the outside (but I think your proxy redirect http -> https breaks these requests)

we are trying to modify from code container. About this I ask you if currently the proxy is also forwarding the protocol, in this way (example with nginx)

        proxy_next_upstream error timeout;
        proxy_pass http://localhost:8089;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto https;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
        add_header X-Frame-Options "deny";

we need of X-Forward-Proto passed to service

RudiThoeni commented 2 years ago

since we use our new proxy (caddy) i read in the documentation that it should pass x-forward-proto by default, we have to check and if it does not it we will set it....