diff --git a/lib/core/src/Cardano/Pool/DB/Sqlite.hs b/lib/core/src/Cardano/Pool/DB/Sqlite.hs index 70b3ba07693..3c2e2dfce38 100644 --- a/lib/core/src/Cardano/Pool/DB/Sqlite.hs +++ b/lib/core/src/Cardano/Pool/DB/Sqlite.hs @@ -78,7 +78,7 @@ import Control.Monad.Trans.Except import Control.Tracer ( Tracer (..), contramap, natTracer, traceWith ) import Data.Either - ( rights ) + ( lefts, rights ) import Data.Function ( (&) ) import Data.Functor @@ -385,14 +385,19 @@ newDBLayer trace fp timeInterpreter = do <*> fromPersistValue retirementEpoch rights . fmap safeCast <$> rawSql query parameters - listPoolLifeCycleData epochNo = - rights . fmap parseRow <$> rawSql query parameters + listPoolLifeCycleData epochNo = do + parsedRows <- fmap parseRow <$> rawSql query parameters + mapM_ onParseFailure $ lefts parsedRows + pure $ rights parsedRows where query = T.unwords [ "SELECT *" , "FROM active_pool_lifecycle_data" , "WHERE retirement_epoch IS NULL OR retirement_epoch > ?;" ] + onParseFailure e = + liftIO $ traceWith trace $ MsgParseFailure $ T.unwords + ["listPoolLifeCycleData:", e] parameters = [ toPersistValue epochNo ] parseRow ( Single fieldPoolId