Author: Adam <git@apiote.xyz>
fix detecting blocking errors in lua scripts
traffic/realtime.go | 7 ++++++- traffic/realtime_lua.go | 4 ++--
diff --git a/traffic/realtime.go b/traffic/realtime.go index 4b72058b5767772208b1383c2565f2b98fecf26c..53de274c8ebd506022f048487a8a27513555a63b 100644 --- a/traffic/realtime.go +++ b/traffic/realtime.go @@ -205,8 +205,13 @@ ) if enrichMethod != nil { updates, areTripsInTimetable, err = enrichMethod(trips[departure.Order.TripOffset].Id, departure.Order.Sequence, stopID, ctx) if err != nil { - if isTimeout(err) || errors.As(err, &BlockingError{}) || strings.Contains(err.Error(), "connection refused") { // TODO or any other connection problem + var ber BlockingError + if isTimeout(err) || errors.As(err, &ber) || strings.Contains(err.Error(), "connection refused") { // TODO or any other connection problem log.Printf("blocking error while enriching departure %s -> %s (%v): %v", departure.LineName, departure.Headsign, departure.Time, err) + update := Update{} + update.VehicleStatus.LineName = trips[departure.Order.TripOffset].LineName + update.VehicleStatus.Headsign = trips[departure.Order.TripOffset].Headsign + enrichedDepartures[i] = departure.WithUpdate(update) enrichMethod = nil continue } else { diff --git a/traffic/realtime_lua.go b/traffic/realtime_lua.go index 2ecdedc5b54cc4c4a9bbaf99e26bbd5c859dfc4a..ab19a437ee7349fdf0056aee45cbc67db918aa4e 100644 --- a/traffic/realtime_lua.go +++ b/traffic/realtime_lua.go @@ -80,7 +80,7 @@ Protect: true, }, lua.LString(""), lua.LNumber(0), lua.LString(stopID)); err != nil { return map[string]Update{}, true, fmt.Errorf("while executing updates function: %w", err) } - luaErr := l.Get(-1) // TODO make err json, and prepare for 429 + luaErr := l.Get(-1) l.Pop(1) result := l.Get(-1) l.Pop(1) @@ -94,7 +94,7 @@ err = BlockingError{luaError} } else { err = luaError } - return map[string]Update{}, true, fmt.Errorf("in updates function: %s", err) + return map[string]Update{}, true, fmt.Errorf("in updates function: %w", err) } err := json.Unmarshal([]byte(result.(lua.LString)), &luaUpdates) if err != nil {