Skip to content

Exception when flex feed contains a mixture of fixed and window-timed stops _and also_ finishes on a flex window stop #6633

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
leonardehrenfried opened this issue Apr 30, 2025 · 0 comments · May be fixed by #6685

Comments

@leonardehrenfried
Copy link
Member

leonardehrenfried commented Apr 30, 2025

When a GTFS Flex trip contains a mixture of fixed stops and windows and also finishes on a window OTP, like this

route_id,service_id,trip_id,trip_headsign,trip_short_name,direction_id,block_id,shape_id,wheelchair_accessible,bikes_allowed
t_6035171_b_84558_tn_0,11:15:00,11:15:00,4253075,,,1,,0,0,,0,1,1,booking_route_77386,booking_route_77386,,,1.0,0.0,1.0,0.0,
t_6035171_b_84558_tn_0,11:25:00,11:25:00,4253076,,,2,,0,0,,0,1,1,booking_route_77386,booking_route_77386,,,1.0,0.0,1.0,0.0,
t_6035171_b_84558_tn_0,,,,area_1360,,3,,2,1,,0,1,1,booking_route_77386,booking_route_77386,11:38:00,12:40:00,1.0,0.0,1.0,0.0,
t_6035171_b_84558_tn_0,,,,area_1360,,4,,1,2,,0,1,1,booking_route_77386,booking_route_77386,11:38:00,12:40:00,1.0,0.0,1.0,0.0,

then OTP crashes hard during startup.

14:25:50.068 [ERROR] (OTPMain.java:61) An uncaught error occurred inside OTP: java.lang.IllegalArgumentException: Start of the running period is after end of the running period
java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: Start of the running period is after end of the running period
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
	at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:540)
	at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:567)
	at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:670)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:160)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:174)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:765)
	at org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers.RaptorTransitDataMapper.mapTripPatterns(RaptorTransitDataMapper.java:121)
	at org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers.RaptorTransitDataMapper.map(RaptorTransitDataMapper.java:72)
	at org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers.RaptorTransitDataMapper.map(RaptorTransitDataMapper.java:60)
	at org.opentripplanner.standalone.configure.ConstructApplication.createRaptorTransitData(ConstructApplication.java:230)
	at org.opentripplanner.standalone.configure.ConstructApplication.setupTransitRoutingServer(ConstructApplication.java:172)
	at org.opentripplanner.standalone.configure.ConstructApplication.createApplication(ConstructApplication.java:164)
	at org.opentripplanner.standalone.configure.ConstructApplication.createGrizzlyServer(ConstructApplication.java:125)
	at org.opentripplanner.standalone.OTPMain.startOtpWebServer(OTPMain.java:208)
	at org.opentripplanner.standalone.OTPMain.startOTPServer(OTPMain.java:174)
	at org.opentripplanner.standalone.OTPMain.main(OTPMain.java:56)
Caused by: java.lang.IllegalArgumentException: Start of the running period is after end of the running period
	at org.opentripplanner.routing.algorithm.raptoradapter.transit.TripPatternForDate.assertValidRunningPeriod(TripPatternForDate.java:245)
	at org.opentripplanner.routing.algorithm.raptoradapter.transit.TripPatternForDate.<init>(TripPatternForDate.java:97)
	at org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers.TripPatternForDateMapper.map(TripPatternForDateMapper.java:98)
	at org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers.RaptorTransitDataMapper.lambda$mapTripPatterns$0(RaptorTransitDataMapper.java:129)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1715)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291)
	at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

This is a pretty bad bug as the validation of the trip fails to take flex into account. It's a little unusual to have flex trips start fixed and the finish on window but I'm pretty surprised that we have never seen this before.

@westontrillium @lslangley

@leonardehrenfried leonardehrenfried added this to the 2.8 (next release) milestone Apr 30, 2025
@leonardehrenfried leonardehrenfried changed the title Exception when flex feed contains a mixture of fixed and window-timed stops _and also_ finishes on a fixed stop Exception when flex feed contains a mixture of fixed and window-timed stops _and also_ finishes on a flex window stop May 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment