Skip to content

Suspiciously no cancelled trips and skipped stops #3

@traines-source

Description

@traines-source

I have never seen any cancelled trip in the feed. While I may of course have overlooked them (or VBB is just so reliable that there are no cancelled trips) I think this is suspicious. E.g. in the last two days, there are no cancellations, if my search is correct:

for f in */*.gtfs-rt.pbf; do cat $f | npx print-gtfs-rt-cli -j -a | grep -c "schedule_relationship\":3"; done

There are also no skipped stops (schedule_relationship 1), even though there are multiple disruptions today, e.g. M13 being diverted between Möllendorffstr./Storkower Str. and Warschauer Str. and Bus 240 between Betriebhof Lichtenberg and S+U Lichtenberg.

Unfortunately I haven't yet found a VBB cancelled trip in some other source with which I could confirm this issue, but I have found one with skipped stops (from 2025-01-12T14%3A18%3A01%2B01%3A00.gtfs-rt.pbf):

Excerpt from feed
{"id":"3197251471.329042","trip_update":{"trip":{"trip_id":"252167676","start_date":"20250112","route_id":"17368_700","direction_id":0},"stop_time_update":[
{"stop_sequence":0,"arrival":{"time":{"low":1736686020,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686020,"high":0,"unsigned":false}},"stop_id":"de:11000:900152504::1"},
{"stop_sequence":1,"arrival":{"time":{"low":1736686050,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686050,"high":0,"unsigned":false}},"stop_id":"de:11000:900152504::2"},
{"stop_sequence":2,"arrival":{"time":{"low":1736686080,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686080,"high":0,"unsigned":false}},"stop_id":"de:11000:900152004::1"},
{"stop_sequence":3,"arrival":{"time":{"low":1736686140,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686140,"high":0,"unsigned":false}},"stop_id":"de:11000:900152511::2"},
{"stop_sequence":4,"arrival":{"time":{"low":1736686200,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686200,"high":0,"unsigned":false}},"stop_id":"de:11000:900152005::2"},
{"stop_sequence":5,"arrival":{"time":{"low":1736686320,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686320,"high":0,"unsigned":false}},"stop_id":"de:11000:900152506::2"},
{"stop_sequence":6,"arrival":{"time":{"low":1736686380,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686380,"high":0,"unsigned":false}},"stop_id":"de:11000:900152507::2"},
{"stop_sequence":7,"arrival":{"time":{"low":1736686440,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686440,"high":0,"unsigned":false}},"stop_id":"de:11000:900151001::2"},
{"stop_sequence":8,"arrival":{"time":{"low":1736686500,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686500,"high":0,"unsigned":false}},"stop_id":"de:11000:900151002::2"},
{"stop_sequence":9,"arrival":{"time":{"low":1736686560,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686560,"high":0,"unsigned":false}},"stop_id":"de:11000:900151008::2"},
{"stop_sequence":10,"arrival":{"time":{"low":1736686680,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686680,"high":0,"unsigned":false}},"stop_id":"de:11000:900152001::2"},
{"stop_sequence":11,"arrival":{"time":{"low":1736686800,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686800,"high":0,"unsigned":false}},"stop_id":"de:11000:900151006::7"},
{"stop_sequence":12,"arrival":{"time":{"low":1736686860,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686860,"high":0,"unsigned":false}},"stop_id":"de:11000:900150002::1"},
{"stop_sequence":13,"arrival":{"delay":2,"time":{"low":1736686922,"high":0,"unsigned":false}},"departure":{"delay":2,"time":{"low":1736686922,"high":0,"unsigned":false}},"stop_id":"de:11000:900150052::1"},
{"stop_sequence":14,"arrival":{"time":{"low":1736686980,"high":0,"unsigned":false}},"departure":{"time":{"low":1736686980,"high":0,"unsigned":false}},"stop_id":"de:11000:900150053::1"},
{"stop_sequence":15,"arrival":{"delay":2,"time":{"low":1736687102,"high":0,"unsigned":false}},"departure":{"delay":2,"time":{"low":1736687102,"high":0,"unsigned":false}},"stop_id":"de:11000:900150504::3"},
{"stop_sequence":16,"arrival":{"time":{"low":1736687220,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687220,"high":0,"unsigned":false}},"stop_id":"de:11000:900150020::1"},
{"stop_sequence":17,"arrival":{"time":{"low":1736687280,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687280,"high":0,"unsigned":false}},"stop_id":"de:11000:900150051::2"},
{"stop_sequence":18,"arrival":{"time":{"low":1736687340,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687340,"high":0,"unsigned":false}},"stop_id":"de:11000:900150050::1"},
{"stop_sequence":19,"arrival":{"time":{"low":1736687400,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687400,"high":0,"unsigned":false}},"stop_id":"de:11000:900150530::1"},
{"stop_sequence":20,"arrival":{"time":{"low":1736687460,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687460,"high":0,"unsigned":false}},"stop_id":"de:11000:900150531::1"},
{"stop_sequence":21,"arrival":{"time":{"low":1736687520,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687520,"high":0,"unsigned":false}},"stop_id":"de:11000:900150523::2"},
{"stop_sequence":22,"arrival":{"time":{"low":1736687580,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687580,"high":0,"unsigned":false}},"stop_id":"de:11000:900150532::1"},
{"stop_sequence":23,"arrival":{"time":{"low":1736687640,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687640,"high":0,"unsigned":false}},"stop_id":"de:11000:900160505::1"},
{"stop_sequence":24,"arrival":{"time":{"low":1736687700,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687700,"high":0,"unsigned":false}},"stop_id":"de:11000:900160012::2"},
{"stop_sequence":25,"arrival":{"time":{"low":1736687760,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687760,"high":0,"unsigned":false}},"stop_id":"de:11000:900160521::3"},
{"stop_sequence":26,"arrival":{"time":{"low":1736687820,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687820,"high":0,"unsigned":false}},"stop_id":"de:11000:900160522::2"},
{"stop_sequence":27,"arrival":{"time":{"low":1736687850,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687850,"high":0,"unsigned":false}},"stop_id":"de:11000:900160523::1"},
{"stop_sequence":28,"arrival":{"time":{"low":1736687880,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687880,"high":0,"unsigned":false}},"stop_id":"de:11000:900160526::1"},
{"stop_sequence":29,"arrival":{"time":{"low":1736687940,"high":0,"unsigned":false}},"departure":{"time":{"low":1736687940,"high":0,"unsigned":false}},"stop_id":"de:11000:900160020::1"},
{"stop_sequence":30,"arrival":{"time":{"low":1736688000,"high":0,"unsigned":false}},"departure":{"time":{"low":1736688000,"high":0,"unsigned":false}},"stop_id":"de:11000:900160549::1"},
{"stop_sequence":31,"arrival":{"time":{"low":1736688060,"high":0,"unsigned":false}},"departure":{"time":{"low":1736688060,"high":0,"unsigned":false}},"stop_id":"de:11000:900160524::1"},
{"stop_sequence":32,"arrival":{"time":{"low":1736688120,"high":0,"unsigned":false}},"departure":{"time":{"low":1736688120,"high":0,"unsigned":false}},"stop_id":"de:11000:900160540::1"}
]}}

Where all stops after de:11000:900160522::2/Betriebshof Lichtenberg (Berlin) should be skipped according to DB – see screenshot.

Not sure about the skipped stops, but for the cancelled trips, this PR might be related, which should fix too short ttls for cancelled trips. However, even then, I would expect cancelled trips to appear at least very shortly (for five minutes) in the feed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions