rijdendetreinen / rdt-serviceinfo

HTTP interface for train schedules
GNU General Public License v3.0
3 stars 2 forks source link

DVS injector fails with ValueError: need more than 1 value to unpack #17

Closed geertw closed 8 years ago

geertw commented 8 years ago

The DVS injector fails since today ~11:35, apparently due to some invalid data in Redis.

The following exception is thrown when running dvs-injector:

Traceback (most recent call last):
  File "/opt/rdt/serviceinfo/dvs-injector.py", line 131, in <module>
    main()
  File "/opt/rdt/serviceinfo/dvs-injector.py", line 123, in main
    services = get_services(serviceinfo.common.configuration)
  File "/opt/rdt/serviceinfo/dvs-injector.py", line 42, in get_services
    services = store.get_services_between(from_time, to_time)
  File "/opt/rdt/serviceinfo/serviceinfo/service_store.py", line 356, in get_services_between
    last_arrival = isodate.parse_datetime(metadata['last_arrival'])
  File "/usr/lib/python2.7/dist-packages/isodate/isodatetime.py", line 48, in parse_datetime
    datestring, timestring = datetimestring.split('T')
ValueError: need more than 1 value to unpack

I can't reproduce this on a development system with a clean database, which makes me think that some invalid timestamp originated in an ARNU message and now bugs the DVS injector.

geertw commented 8 years ago

This service is the culprit:

{
    "services": [
        {
            "cancelled": false,
            "company": "ns",
            "company_name": "NS",
            "destination": "mrg",
            "service_id": "7434-mrg-mrg",
            "service_number": "7434",
            "servicedate": "2015-12-28",
            "source": "actual",
            "stops": [
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 0,
                    "arrival_time": null,
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 2,
                    "departure_time": "2015-12-28T11:30:00+01:00",
                    "scheduled_arrival_platform": null,
                    "scheduled_departure_platform": null,
                    "servicenumber": "7434",
                    "station": "mrg",
                    "station_name": null
                }
            ],
            "transport_mode": "SPR",
            "transport_mode_description": "Sprinter"
        },
        {
            "cancelled": false,
            "company": "ns",
            "company_name": "NS",
            "destination": "bkl",
            "service_id": "7434-rhn-bkl",
            "service_number": "7434",
            "servicedate": "2015-12-28",
            "source": "actual",
            "stops": [
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 0,
                    "arrival_time": null,
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 0,
                    "departure_time": "2015-12-28T11:09:00+01:00",
                    "scheduled_arrival_platform": null,
                    "scheduled_departure_platform": "1",
                    "servicenumber": "7434",
                    "station": "rhn",
                    "station_name": "Rhenen"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 0,
                    "arrival_time": "2015-12-28T11:14:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 0,
                    "departure_time": "2015-12-28T11:17:00+01:00",
                    "scheduled_arrival_platform": "1",
                    "scheduled_departure_platform": "1",
                    "servicenumber": "7434",
                    "station": "vndc",
                    "station_name": "Veenendaal Centrum"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 0,
                    "arrival_time": "2015-12-28T11:20:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 0,
                    "departure_time": "2015-12-28T11:20:00+01:00",
                    "scheduled_arrival_platform": "1",
                    "scheduled_departure_platform": "1",
                    "servicenumber": "7434",
                    "station": "vndw",
                    "station_name": "Veenendaal West"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 0,
                    "arrival_time": "2015-12-28T11:29:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 0,
                    "departure_time": "2015-12-28T11:29:00+01:00",
                    "scheduled_arrival_platform": "1",
                    "scheduled_departure_platform": "1",
                    "servicenumber": "7434",
                    "station": "mrn",
                    "station_name": "Maarn"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 2,
                    "arrival_time": "2015-12-28T11:35:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 2,
                    "departure_time": "2015-12-28T11:35:00+01:00",
                    "scheduled_arrival_platform": "2",
                    "scheduled_departure_platform": "2",
                    "servicenumber": "7434",
                    "station": "db",
                    "station_name": "Driebergen-Zeist"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 2,
                    "arrival_time": "2015-12-28T11:39:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 2,
                    "departure_time": "2015-12-28T11:39:00+01:00",
                    "scheduled_arrival_platform": "1",
                    "scheduled_departure_platform": "1",
                    "servicenumber": "7434",
                    "station": "bnk",
                    "station_name": "Bunnik"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 2,
                    "arrival_time": "2015-12-28T11:46:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 2,
                    "departure_time": "2015-12-28T11:47:00+01:00",
                    "scheduled_arrival_platform": "5",
                    "scheduled_departure_platform": "5",
                    "servicenumber": "7434",
                    "station": "ut",
                    "station_name": "Utrecht Centraal"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 1,
                    "arrival_time": "2015-12-28T11:50:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 1,
                    "departure_time": "2015-12-28T11:50:00+01:00",
                    "scheduled_arrival_platform": "2",
                    "scheduled_departure_platform": "2",
                    "servicenumber": "7434",
                    "station": "utzl",
                    "station_name": "Utrecht Zuilen"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 1,
                    "arrival_time": "2015-12-28T11:55:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 1,
                    "departure_time": "2015-12-28T11:55:00+01:00",
                    "scheduled_arrival_platform": "2",
                    "scheduled_departure_platform": "2",
                    "servicenumber": "7434",
                    "station": "mas",
                    "station_name": "Maarssen"
                },
                {
                    "actual_arrival_platform": null,
                    "actual_departure_platform": null,
                    "arrival_delay": 0,
                    "arrival_time": "2015-12-28T12:00:00+01:00",
                    "cancelled_arrival": false,
                    "cancelled_departure": false,
                    "departure_delay": 0,
                    "departure_time": null,
                    "scheduled_arrival_platform": "2",
                    "scheduled_departure_platform": null,
                    "servicenumber": "7434",
                    "station": "bkl",
                    "station_name": "Breukelen"
                }
            ],
            "transport_mode": "SPR",
            "transport_mode_description": "Sprinter"
        }
    ]
}

Which resulted in the following metadata in Redis:

{
   "company_code": "ns",
   "transport_mode": "SPR",
   "servicenumber": "7434",
   "first_departure": "2015-12-28T11:30:00+01:00",
   "stops": [
      {
         "cancelled_departure": false,
         "actual_arrival_platform": null,
         "servicenumber": "7434",
         "arrival_time": null,
         "attributes": [],
         "cancelled_arrival": false,
         "departure_time": "2015-12-28T11:30:00+01:00",
         "actual_departure_platform": null,
         "departure_delay": 2,
         "stop_code": "mrg",
         "arrival_delay": 0,
         "scheduled_arrival_platform": null,
         "scheduled_departure_platform": null,
         "stop_name": null
      }
   ],
   "last_arrival": "None",
   "company_name": "NS",
   "cancelled": "False",
   "transport_mode_description": "Sprinter"
}

The attribute last_arrival is set to "None" (None as a string) which confuses isodate.parse_datetime() and in turn throws a ValueError.