Skip to content

Commit 6bc6098

Browse files
committed
Parallelise preparing the txs
Also move some util functions
1 parent 256d0f5 commit 6bc6098

File tree

27 files changed

+589
-562
lines changed

27 files changed

+589
-562
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ library
215215
, prometheus
216216
, psqueues
217217
, random-shuffle
218+
, resource-pool
218219
, scientific
219220
, serialise
220221
, small-steps

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ import Control.Concurrent.Class.MonadSTM.Strict (
6767
import qualified Control.Concurrent.Class.MonadSTM.Strict.TBQueue as TBQ
6868
import qualified Data.Strict.Maybe as Strict
6969
import Data.Time.Clock (getCurrentTime)
70-
import Database.Persist.Postgresql (ConnectionString)
70+
import Database.Persist.Postgresql (ConnectionString, createPostgresqlPool)
7171
import Database.Persist.Sql (SqlBackend)
7272
import Ouroboros.Consensus.Block.Abstract (BlockProtocol)
7373
import Ouroboros.Consensus.BlockchainTime.WallClock.Types (SystemStart (..))
@@ -279,6 +279,7 @@ mkSyncEnv trce backend connectionString syncOptions protoInfo nw nwMagic systemS
279279
oarq <- newTBQueueIO 1000
280280
epochVar <- newTVarIO initCurrentEpochNo
281281
epochSyncTime <- newTVarIO =<< getCurrentTime
282+
pool <- DB.runIohkLogging trce $ createPostgresqlPool connectionString 5 -- TODO make configurable
282283
ledgerEnvType <-
283284
case (enpMaybeLedgerStateDir syncNP, hasLedger' syncNodeConfigFromFile) of
284285
(Just dir, True) ->
@@ -302,6 +303,7 @@ mkSyncEnv trce backend connectionString syncOptions protoInfo nw nwMagic systemS
302303
pure $
303304
SyncEnv
304305
{ envBackend = backend
306+
, envPool = pool
305307
, envBootstrap = bootstrapVar
306308
, envCache = cache
307309
, envPrefetch = prefetch

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import Cardano.DbSync.Era.Shelley.Generic.Tx.Babbage (fromTxOut)
1515
import Cardano.DbSync.Era.Shelley.Generic.Tx.Types (DBPlutusScript)
1616
import qualified Cardano.DbSync.Era.Shelley.Generic.Util as Generic
1717
import Cardano.DbSync.Era.Universal.Insert.Grouped
18-
import Cardano.DbSync.Era.Universal.Insert.Tx (insertTxOut)
19-
import Cardano.DbSync.Era.Util (liftLookupFail)
18+
import qualified Cardano.DbSync.Era.Universal.Insert.Tx as Prepare
2019
import Cardano.DbSync.Error
2120
import Cardano.DbSync.Ledger.State
2221
import Cardano.DbSync.Types
@@ -171,7 +170,7 @@ prepareTxOut syncEnv (TxIn txIntxId (TxIx index), txOut) = do
171170
let txHashByteString = Generic.safeHashToByteString $ unTxId txIntxId
172171
let genTxOut = fromTxOut index txOut
173172
txId <- liftLookupFail "prepareTxOut" $ queryTxIdWithCache cache txIntxId
174-
insertTxOut syncEnv iopts (txId, txHashByteString) genTxOut
173+
Prepare.prepareTxOut syncEnv iopts (txId, txHashByteString) genTxOut
175174
where
176175
cache = envCache syncEnv
177176
iopts = soptInsertOptions $ envOptions syncEnv

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import Cardano.Slotting.Slot (EpochNo (..))
3131
import Control.Concurrent.Class.MonadSTM.Strict (StrictTVar, newTBQueueIO, newTVarIO)
3232
import Control.Concurrent.Class.MonadSTM.Strict.TBQueue (StrictTBQueue)
3333
import Data.Map (Map)
34+
import Data.Pool (Pool)
3435
import qualified Data.Strict.Maybe as Strict
3536
import Data.Time.Clock (UTCTime)
3637
import Data.Word (Word64)
@@ -41,6 +42,7 @@ import Ouroboros.Network.Magic (NetworkMagic (..))
4142

4243
data SyncEnv = SyncEnv
4344
{ envBackend :: !SqlBackend
45+
, envPool :: !(Pool SqlBackend)
4446
, envPrefetch :: !Prefetch
4547
, envCache :: !CacheStatus
4648
, envConnectionString :: !ConnectionString

0 commit comments

Comments
 (0)