Skip to content

Commit 7738702

Browse files
committed
change DbAction monad to not have ExceptT
1 parent 19ba860 commit 7738702

File tree

49 files changed

+1064
-868
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1064
-868
lines changed

cardano-db-sync/cardano-db-sync.cabal

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ library
188188
, memory
189189
, microlens
190190
, monad-control
191-
, monad-logger
192191
, network-mux
193192
, ouroboros-consensus
194193
, ouroboros-consensus-cardano

cardano-db-sync/src/Cardano/DbSync.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,19 +145,19 @@ runDbSync metricsSetters iomgr trce params syncNodeConfigFromFile abortOnPanic =
145145
void $ unsafeRollback trce (txOutConfigToTableType txOutConfig) pgConfig slotNo
146146

147147
-- This runMigration is ONLY for delayed migrations during sync (like indexes)
148-
let runIndexesMigration mode = do
148+
let runNearTipMigration mode = do
149149
msg <- DB.getMaintenancePsqlConf pgConfig
150-
logInfo trce $ "Running database migrations in mode " <> textShow mode
150+
logInfo trce $ "Running NearTip database migrations in mode " <> textShow mode
151151
logInfo trce msg
152-
when (mode `elem` [DB.Indexes, DB.Full]) $ logWarning trce indexesMsg
152+
when (mode `elem` [DB.NearTip, DB.Full]) $ logWarning trce indexesMsg
153153
DB.runMigrations pgConfig True dbMigrationDir (Just $ DB.LogFileDir "/tmp") mode (txOutConfigToTableType txOutConfig)
154154

155155
runSyncNode
156156
metricsSetters
157157
trce
158158
iomgr
159159
dbConnectionSetting
160-
(void . runIndexesMigration)
160+
(void . runNearTipMigration)
161161
syncNodeConfigFromFile
162162
params
163163
syncOpts
@@ -188,7 +188,7 @@ runSyncNode ::
188188
SyncNodeParams ->
189189
SyncOptions ->
190190
IO ()
191-
runSyncNode metricsSetters trce iomgr dbConnSetting runIndexesMigrationFnc syncNodeConfigFromFile syncNodeParams syncOptions = do
191+
runSyncNode metricsSetters trce iomgr dbConnSetting runNearTipMigrationFnc syncNodeConfigFromFile syncNodeParams syncOptions = do
192192
whenJust maybeLedgerDir $
193193
\enpLedgerStateDir -> do
194194
createDirectoryIfMissing True (unLedgerStateDir enpLedgerStateDir)
@@ -222,7 +222,7 @@ runSyncNode metricsSetters trce iomgr dbConnSetting runIndexesMigrationFnc syncN
222222
genCfg
223223
syncNodeConfigFromFile
224224
syncNodeParams
225-
runIndexesMigrationFnc
225+
runNearTipMigrationFnc
226226

227227
-- Warn the user that jsonb datatypes are being removed from the database schema.
228228
when (isJsonbInSchema && removeJsonbFromSchemaConfig) $ do

cardano-db-sync/src/Cardano/DbSync/Api.hs

Lines changed: 61 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module Cardano.DbSync.Api (
1414
isConsistent,
1515
getDisableInOutState,
1616
getRanIndexes,
17-
runIndexesMigrations,
17+
runNearTipMigrations,
1818
initPruneConsumeMigration,
1919
runConsumedTxOutMigrationsMaybe,
2020
runAddJsonbToSchema,
@@ -46,6 +46,13 @@ module Cardano.DbSync.Api (
4646
)
4747
where
4848

49+
import Cardano.BM.Trace (Trace, logInfo, logWarning)
50+
import qualified Cardano.Chain.Genesis as Byron
51+
import Cardano.Crypto.ProtocolMagic (ProtocolMagicId (..))
52+
import qualified Cardano.Ledger.BaseTypes as Ledger
53+
import qualified Cardano.Ledger.Shelley.Genesis as Shelley
54+
import Cardano.Prelude
55+
import Cardano.Slotting.Slot (EpochNo (..), SlotNo (..), WithOrigin (..))
4956
import Control.Concurrent.Class.MonadSTM.Strict (
5057
newTBQueueIO,
5158
newTVarIO,
@@ -55,14 +62,6 @@ import Control.Concurrent.Class.MonadSTM.Strict (
5562
)
5663
import Control.Monad.Trans.Maybe (MaybeT (..))
5764
import qualified Data.Strict.Maybe as Strict
58-
59-
import Cardano.BM.Trace (Trace, logInfo, logWarning)
60-
import qualified Cardano.Chain.Genesis as Byron
61-
import Cardano.Crypto.ProtocolMagic (ProtocolMagicId (..))
62-
import qualified Cardano.Ledger.BaseTypes as Ledger
63-
import qualified Cardano.Ledger.Shelley.Genesis as Shelley
64-
import Cardano.Prelude
65-
import Cardano.Slotting.Slot (EpochNo (..), SlotNo (..), WithOrigin (..))
6665
import Ouroboros.Consensus.Block.Abstract (BlockProtocol, HeaderHash, Point (..), fromRawHash)
6766
import Ouroboros.Consensus.BlockchainTime.WallClock.Types (SystemStart (..))
6867
import Ouroboros.Consensus.Config (SecurityParam (..), TopLevelConfig, configSecurityParam)
@@ -120,12 +119,12 @@ getRanIndexes :: SyncEnv -> IO Bool
120119
getRanIndexes env = do
121120
readTVarIO $ envIndexes env
122121

123-
runIndexesMigrations :: SyncEnv -> IO ()
124-
runIndexesMigrations env = do
122+
runNearTipMigrations :: SyncEnv -> IO ()
123+
runNearTipMigrations env = do
125124
haveRan <- readTVarIO $ envIndexes env
126125
unless haveRan $ do
127-
envRunIndexesMigration env DB.Indexes
128-
logInfo (getTrace env) "Indexes were created"
126+
envRunNearTipMigration env DB.NearTip
127+
logInfo (getTrace env) "NearTip migrations were ran successfully."
129128
atomically $ writeTVar (envIndexes env) True
130129

131130
initPruneConsumeMigration :: Bool -> Bool -> Bool -> Bool -> DB.PruneConsumeMigration
@@ -297,53 +296,6 @@ getCurrentTipBlockNo env = do
297296
Just tip -> pure $ At (bBlockNo tip)
298297
Nothing -> pure Origin
299298

300-
mkSyncEnvFromConfig ::
301-
Trace IO Text ->
302-
DB.DbEnv ->
303-
SyncOptions ->
304-
GenesisConfig ->
305-
SyncNodeConfig ->
306-
SyncNodeParams ->
307-
-- | run migration function
308-
RunMigration ->
309-
IO (Either SyncNodeError SyncEnv)
310-
mkSyncEnvFromConfig trce dbEnv syncOptions genCfg syncNodeConfigFromFile syncNodeParams runIndexesMigrationFnc =
311-
case genCfg of
312-
GenesisCardano _ bCfg sCfg _ _
313-
| unProtocolMagicId (Byron.configProtocolMagicId bCfg) /= Shelley.sgNetworkMagic (scConfig sCfg) ->
314-
pure
315-
. Left
316-
. SNErrCardanoConfig
317-
$ mconcat
318-
[ "ProtocolMagicId "
319-
, textShow (unProtocolMagicId $ Byron.configProtocolMagicId bCfg)
320-
, " /= "
321-
, textShow (Shelley.sgNetworkMagic $ scConfig sCfg)
322-
]
323-
| Byron.gdStartTime (Byron.configGenesisData bCfg) /= Shelley.sgSystemStart (scConfig sCfg) ->
324-
pure
325-
. Left
326-
. SNErrCardanoConfig
327-
$ mconcat
328-
[ "SystemStart "
329-
, textShow (Byron.gdStartTime $ Byron.configGenesisData bCfg)
330-
, " /= "
331-
, textShow (Shelley.sgSystemStart $ scConfig sCfg)
332-
]
333-
| otherwise ->
334-
Right
335-
<$> mkSyncEnv
336-
trce
337-
dbEnv
338-
syncOptions
339-
(fst $ mkProtocolInfoCardano genCfg [])
340-
(Shelley.sgNetworkId $ scConfig sCfg)
341-
(NetworkMagic . unProtocolMagicId $ Byron.configProtocolMagicId bCfg)
342-
(SystemStart . Byron.gdStartTime $ Byron.configGenesisData bCfg)
343-
syncNodeConfigFromFile
344-
syncNodeParams
345-
runIndexesMigrationFnc
346-
347299
mkSyncEnv ::
348300
Trace IO Text ->
349301
DB.DbEnv ->
@@ -356,7 +308,7 @@ mkSyncEnv ::
356308
SyncNodeParams ->
357309
RunMigration ->
358310
IO SyncEnv
359-
mkSyncEnv trce dbEnv syncOptions protoInfo nw nwMagic systemStart syncNodeConfigFromFile syncNP runIndexesMigrationFnc = do
311+
mkSyncEnv trce dbEnv syncOptions protoInfo nw nwMagic systemStart syncNodeConfigFromFile syncNP runNearTipMigrationFnc = do
360312
dbCNamesVar <- newTVarIO =<< DB.runDbActionIO dbEnv DB.queryRewardAndEpochStakeConstraints
361313
cache <-
362314
if soptCache syncOptions
@@ -418,14 +370,61 @@ mkSyncEnv trce dbEnv syncOptions protoInfo nw nwMagic systemStart syncNodeConfig
418370
, envOffChainVoteResultQueue = oarq
419371
, envOffChainVoteWorkQueue = oawq
420372
, envOptions = syncOptions
421-
, envRunIndexesMigration = runIndexesMigrationFnc
373+
, envRunNearTipMigration = runNearTipMigrationFnc
422374
, envSyncNodeConfig = syncNodeConfigFromFile
423375
, envSystemStart = systemStart
424376
}
425377
where
426378
hasLedger' = hasLedger . sioLedger . dncInsertOptions
427379
isTxOutConsumedBootstrap' = isTxOutConsumedBootstrap . sioTxOut . dncInsertOptions
428380

381+
mkSyncEnvFromConfig ::
382+
Trace IO Text ->
383+
DB.DbEnv ->
384+
SyncOptions ->
385+
GenesisConfig ->
386+
SyncNodeConfig ->
387+
SyncNodeParams ->
388+
-- | run migration function
389+
RunMigration ->
390+
IO (Either SyncNodeError SyncEnv)
391+
mkSyncEnvFromConfig trce dbEnv syncOptions genCfg syncNodeConfigFromFile syncNodeParams runNearTipMigrationFnc =
392+
case genCfg of
393+
GenesisCardano _ bCfg sCfg _ _
394+
| unProtocolMagicId (Byron.configProtocolMagicId bCfg) /= Shelley.sgNetworkMagic (scConfig sCfg) ->
395+
pure
396+
. Left
397+
. SNErrCardanoConfig
398+
$ mconcat
399+
[ "ProtocolMagicId "
400+
, textShow (unProtocolMagicId $ Byron.configProtocolMagicId bCfg)
401+
, " /= "
402+
, textShow (Shelley.sgNetworkMagic $ scConfig sCfg)
403+
]
404+
| Byron.gdStartTime (Byron.configGenesisData bCfg) /= Shelley.sgSystemStart (scConfig sCfg) ->
405+
pure
406+
. Left
407+
. SNErrCardanoConfig
408+
$ mconcat
409+
[ "SystemStart "
410+
, textShow (Byron.gdStartTime $ Byron.configGenesisData bCfg)
411+
, " /= "
412+
, textShow (Shelley.sgSystemStart $ scConfig sCfg)
413+
]
414+
| otherwise ->
415+
Right
416+
<$> mkSyncEnv
417+
trce
418+
dbEnv
419+
syncOptions
420+
(fst $ mkProtocolInfoCardano genCfg [])
421+
(Shelley.sgNetworkId $ scConfig sCfg)
422+
(NetworkMagic . unProtocolMagicId $ Byron.configProtocolMagicId bCfg)
423+
(SystemStart . Byron.gdStartTime $ Byron.configGenesisData bCfg)
424+
syncNodeConfigFromFile
425+
syncNodeParams
426+
runNearTipMigrationFnc
427+
429428
-- | 'True' is for in memory points and 'False' for on disk
430429
getLatestPoints :: SyncEnv -> IO [(CardanoPoint, Bool)]
431430
getLatestPoints env = do

cardano-db-sync/src/Cardano/DbSync/Api/Ledger.hs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,6 @@
66

77
module Cardano.DbSync.Api.Ledger where
88

9-
import Control.Concurrent.Class.MonadSTM.Strict (atomically, readTVarIO, writeTVar)
10-
import Control.Monad.Extra
11-
import Control.Monad.IO.Class (MonadIO, liftIO)
12-
import Data.List.Extra
13-
import Data.Map (Map)
14-
import qualified Data.Map.Strict as Map
15-
import qualified Data.Text as Text
16-
import Lens.Micro
17-
import Numeric
18-
199
import Cardano.BM.Trace (logError, logInfo, logWarning)
2010
import Cardano.Ledger.Allegra.Scripts (Timelock)
2111
import Cardano.Ledger.Alonzo.Scripts
@@ -26,7 +16,16 @@ import Cardano.Ledger.Core (Value)
2616
import Cardano.Ledger.Mary.Value
2717
import Cardano.Ledger.Shelley.LedgerState
2818
import Cardano.Ledger.TxIn
29-
import Cardano.Prelude (MonadError (..), textShow)
19+
import Cardano.Prelude (textShow, throwIO)
20+
import Control.Concurrent.Class.MonadSTM.Strict (atomically, readTVarIO, writeTVar)
21+
import Control.Monad.Extra
22+
import Control.Monad.IO.Class (MonadIO, liftIO)
23+
import Data.List.Extra
24+
import Data.Map (Map)
25+
import qualified Data.Map.Strict as Map
26+
import qualified Data.Text as Text
27+
import Lens.Micro
28+
import Numeric
3029
import Ouroboros.Consensus.Cardano.Block hiding (CardanoBlock)
3130
import Ouroboros.Consensus.Ledger.Extended (ExtLedgerState, ledgerState)
3231
import qualified Ouroboros.Consensus.Shelley.Ledger.Ledger as Consensus
@@ -158,7 +157,7 @@ prepareTxOut syncEnv (TxIn txIntxId (TxIx index), txOut) = do
158157
let genTxOut = fromTxOut (fromIntegral index) txOut
159158
eTxId <- queryTxIdWithCache syncEnv txIntxId
160159
txId <- case eTxId of
161-
Left err -> throwError err
160+
Left err -> liftIO $ throwIO err
162161
Right tid -> pure tid
163162
insertTxOut syncEnv iopts (txId, txHashByteString) genTxOut
164163
where

cardano-db-sync/src/Cardano/DbSync/Api/Types.hs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ module Cardano.DbSync.Api.Types (
1616
formatUnicodeNullSource,
1717
) where
1818

19+
import Cardano.Prelude (Bool, Eq, IO, Ord, Show, Text, Word64)
20+
import Cardano.Slotting.Slot (EpochNo (..))
1921
import Control.Concurrent.Class.MonadSTM.Strict (StrictTVar)
2022
import Control.Concurrent.Class.MonadSTM.Strict.TBQueue (StrictTBQueue)
2123
import qualified Data.Map.Strict as Map
@@ -24,9 +26,6 @@ import Data.Time.Clock (UTCTime)
2426
import Ouroboros.Consensus.BlockchainTime.WallClock.Types (SystemStart (..))
2527
import Ouroboros.Network.Magic (NetworkMagic (..))
2628

27-
import Cardano.Prelude (Bool, Eq, IO, Ord, Show, Text, Word64)
28-
import Cardano.Slotting.Slot (EpochNo (..))
29-
3029
import qualified Cardano.Db as DB
3130
import Cardano.DbSync.Cache.Types (CacheStatistics, CacheStatus)
3231
import Cardano.DbSync.Config.Types (SyncNodeConfig)
@@ -57,7 +56,7 @@ data SyncEnv = SyncEnv
5756
, envOffChainVoteWorkQueue :: !(StrictTBQueue IO OffChainVoteWorkQueue)
5857
, envOptions :: !SyncOptions
5958
, envSyncNodeConfig :: !SyncNodeConfig
60-
, envRunIndexesMigration :: RunMigration
59+
, envRunNearTipMigration :: RunMigration
6160
, envSystemStart :: !SystemStart
6261
}
6362

0 commit comments

Comments
 (0)