diff --git a/cardano-db-sync/src/Cardano/DbSync/Era/Universal/Insert/LedgerEvent.hs b/cardano-db-sync/src/Cardano/DbSync/Era/Universal/Insert/LedgerEvent.hs index c4938e8f6..061f2df01 100644 --- a/cardano-db-sync/src/Cardano/DbSync/Era/Universal/Insert/LedgerEvent.hs +++ b/cardano-db-sync/src/Cardano/DbSync/Era/Universal/Insert/LedgerEvent.hs @@ -13,7 +13,7 @@ module Cardano.DbSync.Era.Universal.Insert.LedgerEvent ( import Cardano.BM.Trace (logInfo) import qualified Cardano.Db as DB import Cardano.DbSync.Api -import Cardano.DbSync.Api.Types (SyncEnv (..)) +import Cardano.DbSync.Api.Types (SyncEnv (..), InsertOptions (..)) import Cardano.DbSync.Cache.Types (textShowStats) import Cardano.DbSync.Era.Cardano.Insert (insertEpochSyncTime) import qualified Cardano.DbSync.Era.Shelley.Generic as Generic @@ -50,6 +50,7 @@ insertNewEpochLedgerEvents syncEnv currentEpochNo@(EpochNo curEpoch) = tracer = getTrace syncEnv cache = envCache syncEnv ntw = getNetwork syncEnv +    iopts = getInsertOptions syncEnv subFromCurrentEpoch :: Word64 -> EpochNo subFromCurrentEpoch m = @@ -94,20 +95,21 @@ insertNewEpochLedgerEvents syncEnv currentEpochNo@(EpochNo curEpoch) = lift $ validateEpochRewards tracer ntw (subFromCurrentEpoch 2) currentEpochNo rwd LedgerAdaPots _ -> pure () -- These are handled separately by insertBlock - LedgerGovInfo enacted dropped expired uncl -> do - unless (Set.null uncl) $ - liftIO $ - logInfo tracer $ - "Found " <> textShow (Set.size uncl) <> " unclaimed proposal refunds" - updateDropped cache (EpochNo curEpoch) (garGovActionId <$> (dropped <> expired)) - let refunded = filter (\e -> Set.notMember (garGovActionId e) uncl) (enacted <> dropped <> expired) - insertProposalRefunds tracer ntw (subFromCurrentEpoch 1) currentEpochNo cache refunded -- TODO: check if they are disjoint to avoid double entries. - forM_ enacted $ \gar -> do - gaId <- resolveGovActionProposal cache (garGovActionId gar) - lift $ void $ DB.updateGovActionEnacted gaId (unEpochNo currentEpochNo) - whenJust (garMTreasury gar) $ \treasuryMap -> do - let rewards = Map.mapKeys Ledger.raCredential $ Map.map (Set.singleton . mkTreasuryReward) treasuryMap - insertRewardRests tracer ntw (subFromCurrentEpoch 1) currentEpochNo cache (Map.toList rewards) +        LedgerGovInfo enacted dropped expired uncl -> do +          when (ioGov iopts) $ do +            unless (Set.null uncl) $ +              liftIO $ +                logInfo tracer $ +                  "Found " <> textShow (Set.size uncl) <> " unclaimed proposal refunds" +            updateDropped cache (EpochNo curEpoch) (garGovActionId <$> (dropped <> expired)) +            let refunded = filter (\e -> Set.notMember (garGovActionId e) uncl) (enacted <> dropped <> expired) +            insertProposalRefunds tracer ntw (subFromCurrentEpoch 1) currentEpochNo cache refunded -- TODO: check if they are disjoint to avoid double entries. +            forM_ enacted $ \gar -> do +              gaId <- resolveGovActionProposal cache (garGovActionId gar) +              lift $ void $ DB.updateGovActionEnacted gaId (unEpochNo currentEpochNo) +              whenJust (garMTreasury gar) $ \treasuryMap -> do +                let rewards = Map.mapKeys Ledger.raCredential $ Map.map (Set.singleton . mkTreasuryReward) treasuryMap +                insertRewardRests tracer ntw (subFromCurrentEpoch 1) currentEpochNo cache (Map.toList rewards) LedgerMirDist rwd -> do unless (Map.null rwd) $ do let rewards = Map.toList rwd