From cc9077360b83cc205195528591649844b7f52567 Mon Sep 17 00:00:00 2001 From: Guntis Smaukstelis Date: Mon, 5 May 2025 22:56:10 +0300 Subject: [PATCH] Dont break grib parsing on corrupted data --- src/main/scala/parse/grib/GribParser.scala | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/scala/parse/grib/GribParser.scala b/src/main/scala/parse/grib/GribParser.scala index 700e371..6d4b214 100644 --- a/src/main/scala/parse/grib/GribParser.scala +++ b/src/main/scala/parse/grib/GribParser.scala @@ -17,10 +17,14 @@ object GribParser { result <- if (ptr >= fileSize) { IO.pure(acc.reverse) } else { - for { - grib <- parseGrib(path, ptr) - nextResult <- loop(ptr + grib.length, grib :: acc) - } yield nextResult + parseGrib(path, ptr).attempt.flatMap { + case Right(grib) => + loop(ptr + grib.length, grib :: acc) + case Left(error) => + // Just log the error and end parsing + IO(println(s"Error parsing GRIB at position $ptr: ${error.getMessage}")) >> + IO.pure(acc.reverse) + } } } yield result }