From c9aeeb99c1dcafbc17ca4dd1cb0acf9da2e64e43 Mon Sep 17 00:00:00 2001 From: Cilly Leang Date: Wed, 1 Apr 2026 17:23:59 +1100 Subject: [PATCH] fix(server/gtfs): chunk stop times into smaller blocks --- .../kotlin/moe/lava/banksia/server/gtfs/GtfsParser.kt | 2 +- .../main/kotlin/moe/lava/banksia/server/GtfsImporter.kt | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/server/gtfs/src/main/kotlin/moe/lava/banksia/server/gtfs/GtfsParser.kt b/server/gtfs/src/main/kotlin/moe/lava/banksia/server/gtfs/GtfsParser.kt index b3fd80c..ed4fd25 100644 --- a/server/gtfs/src/main/kotlin/moe/lava/banksia/server/gtfs/GtfsParser.kt +++ b/server/gtfs/src/main/kotlin/moe/lava/banksia/server/gtfs/GtfsParser.kt @@ -128,7 +128,7 @@ class GtfsParser( .forEach { fd -> log.info("parsing stop times for ${fd.parent}...") parseStopTimes(fd, trips) { seq -> - seq.chunked(1000000) + seq.chunked(10000) .forEach { emit(GtfsData.StopTimeChunk(it)) } } } diff --git a/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt b/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt index 9a18108..8928cda 100644 --- a/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt +++ b/server/src/main/kotlin/moe/lava/banksia/server/GtfsImporter.kt @@ -36,7 +36,7 @@ class GtfsImporter( is GtfsData.ServiceChunk -> addServices(chunk.services) is GtfsData.ShapeChunk -> addShapes(chunk.shapes) is GtfsData.StopChunk -> addStops(chunk.stops) - is GtfsData.StopTimeChunk -> addStopTimes(chunk.stopTimes) + is GtfsData.StopTimeChunk -> addStopTimes(chunk.stopTimes) is GtfsData.TripChunk -> addTrips(chunk.trips) } } @@ -50,24 +50,28 @@ class GtfsImporter( val dao = database.versionMetadataDao log.info("updating metadata...") dao.update(date, listOf("routes", "stops", "shapes", "trips", "stop_times")) + log.info("done") } private suspend fun addRoutes(routes: List) { val dao = database.routeDao log.info("inserting routes...") dao.insertOrReplaceAll(*routes.map { it.asEntity() }.toTypedArray()) + log.info("done") } private suspend fun addServices(services: List) { val dao = database.serviceDao log.info("inserting services...") dao.insertOrReplaceAll(*services.map { it.asEntity() }.toTypedArray()) + log.info("done") } private suspend fun addShapes(shapes: List) { val dao = database.shapeDao log.info("inserting shapes...") dao.insertOrReplaceAll(*shapes.map { it.asEntity() }.toTypedArray()) + log.info("done") } private suspend fun addStops(stops: List) { @@ -85,17 +89,20 @@ class GtfsImporter( } } dao.insertOrReplaceAll(*stops.map { it.asEntity() }.toTypedArray()) + log.info("done") } private suspend fun addStopTimes(stopTimes: List) { val dao = database.stopTimeDao log.info("inserting ${stopTimes.size} stoptimes...") dao.insertOrReplaceAll(*stopTimes.map { it.asEntity() }.toTypedArray()) + log.info("done") } private suspend fun addTrips(trips: List) { val dao = database.tripDao log.info("inserting ${trips.size} trips...") dao.insertOrReplaceAll(*trips.map { it.asEntity() }.toTypedArray()) + log.info("done") } }