From 61a1934c9653657385a0702827fe912a81bbdc63 Mon Sep 17 00:00:00 2001 From: Brendan Nee Date: Thu, 12 Sep 2024 11:37:35 -0700 Subject: [PATCH] Better error handling for `gtfsrealtime-update` --- CHANGELOG.md | 5 +++ src/lib/import.ts | 80 ++++++++++++++++++++++++++--------------------- 2 files changed, 49 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61b8ad82..340cf577 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Fixed +- Better error handling for `gtfsrealtime-update` + ## [4.14.2] - 2024-09-11 ### Fixed diff --git a/src/lib/import.ts b/src/lib/import.ts index 3fbd3fd2..bb3ba727 100644 --- a/src/lib/import.ts +++ b/src/lib/import.ts @@ -810,30 +810,30 @@ export async function importGtfs(initialConfig: Config) { path: any; prefix: any; }) => { - const tempPath = temporaryDirectory(); - - const task = { - exclude: agency.exclude, - url: agency.url, - headers: agency.headers, - realtimeAlerts: agency.realtimeAlerts, - realtimeTripUpdates: agency.realtimeTripUpdates, - realtimeVehiclePositions: agency.realtimeVehiclePositions, - downloadDir: tempPath, - downloadTimeout: config.downloadTimeout, - gtfsRealtimeExpirationSeconds: config.gtfsRealtimeExpirationSeconds, - path: agency.path, - csvOptions: config.csvOptions || {}, - ignoreDuplicates: config.ignoreDuplicates, - sqlitePath: config.sqlitePath, - prefix: agency.prefix, - currentTimestamp: Math.floor(Date.now() / 1000), - log, - logWarning, - logError, - }; - try { + const tempPath = temporaryDirectory(); + + const task = { + exclude: agency.exclude, + url: agency.url, + headers: agency.headers, + realtimeAlerts: agency.realtimeAlerts, + realtimeTripUpdates: agency.realtimeTripUpdates, + realtimeVehiclePositions: agency.realtimeVehiclePositions, + downloadDir: tempPath, + downloadTimeout: config.downloadTimeout, + gtfsRealtimeExpirationSeconds: config.gtfsRealtimeExpirationSeconds, + path: agency.path, + csvOptions: config.csvOptions || {}, + ignoreDuplicates: config.ignoreDuplicates, + sqlitePath: config.sqlitePath, + prefix: agency.prefix, + currentTimestamp: Math.floor(Date.now() / 1000), + log, + logWarning, + logError, + }; + if (task.url) { await downloadFiles(task); } @@ -890,20 +890,28 @@ export async function updateGtfsRealtime(initialConfig: Config) { await Promise.all( config.agencies.map(async (agency) => { - const task = { - realtimeAlerts: agency.realtimeAlerts, - realtimeTripUpdates: agency.realtimeTripUpdates, - realtimeVehiclePositions: agency.realtimeVehiclePositions, - downloadTimeout: config.downloadTimeout, - gtfsRealtimeExpirationSeconds: config.gtfsRealtimeExpirationSeconds, - sqlitePath: config.sqlitePath, - currentTimestamp: Math.floor(Date.now() / 1000), - log, - logWarning, - logError, - }; + try { + const task = { + realtimeAlerts: agency.realtimeAlerts, + realtimeTripUpdates: agency.realtimeTripUpdates, + realtimeVehiclePositions: agency.realtimeVehiclePositions, + downloadTimeout: config.downloadTimeout, + gtfsRealtimeExpirationSeconds: config.gtfsRealtimeExpirationSeconds, + sqlitePath: config.sqlitePath, + currentTimestamp: Math.floor(Date.now() / 1000), + log, + logWarning, + logError, + }; - await updateRealtimeData(task); + await updateRealtimeData(task); + } catch (error: any) { + if (config.ignoreErrors) { + logError(error.message); + } else { + throw error; + } + } }), );