szczanieckiej.git

commit a1a8b143cc63d4e875a58e2141334ed145af608e

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 {