From 68aaf9e5758f7c63d5ffb21947344a1055d96a06 Mon Sep 17 00:00:00 2001 From: Jonathan Knowles Date: Tue, 8 Sep 2020 03:27:21 +0000 Subject: [PATCH] Make `listPoolLifeCycleData` log parse failures. For rows that fail to parse: we create a log entry for each error. For rows that parse successfully: we return these as part of the result. In response to review feedback: https://github.com/input-output-hk/cardano-wallet/pull/2111#discussion_r484482369 --- lib/core/src/Cardano/Pool/DB/Sqlite.hs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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