diff --git a/lib/shelley/src/Cardano/Wallet/Shelley/Pools.hs b/lib/shelley/src/Cardano/Wallet/Shelley/Pools.hs index cdee3acd708..0820741c901 100644 --- a/lib/shelley/src/Cardano/Wallet/Shelley/Pools.hs +++ b/lib/shelley/src/Cardano/Wallet/Shelley/Pools.hs @@ -463,19 +463,26 @@ monitorStakePools -> NetworkLayer IO t (CardanoBlock sc) -> DBLayer IO -> IO () -monitorStakePools tr gp nl db@DBLayer{..} = do - latestGarbageCollectionEpochRef <- mkLatestGarbageCollectionEpochRef - let forwardHandler = forward latestGarbageCollectionEpochRef - cursor <- initCursor - traceWith tr $ MsgStartMonitoring cursor - follow nl (contramap MsgFollow tr) cursor forwardHandler getHeader >>= \case - FollowInterrupted -> traceWith tr MsgHaltMonitoring - FollowFailure -> traceWith tr MsgCrashMonitoring - FollowRollback point -> do - traceWith tr $ MsgRollingBackTo point - liftIO . atomically $ rollbackTo point - monitorStakePools tr gp nl db +monitorStakePools tr gp nl DBLayer{..} = + monitor =<< mkLatestGarbageCollectionEpochRef where + monitor latestGarbageCollectionEpochRef = loop + where + loop = do + cursor <- initCursor + traceWith tr $ MsgStartMonitoring cursor + let followTrace = contramap MsgFollow tr + let forwardHandler = forward latestGarbageCollectionEpochRef + follow nl followTrace cursor forwardHandler getHeader >>= \case + FollowInterrupted -> + traceWith tr MsgHaltMonitoring + FollowFailure -> + traceWith tr MsgCrashMonitoring + FollowRollback point -> do + traceWith tr $ MsgRollingBackTo point + liftIO . atomically $ rollbackTo point + loop + GenesisParameters { getGenesisBlockHash , getEpochStability