@@ -29,6 +29,7 @@ module Cardano.DbSync.Api (
2929 withDBSyncConnections ,
3030 withScriptConnection ,
3131 withDatumConnection ,
32+ commitAll ,
3233 mkSyncEnvFromConfig ,
3334 getInsertOptions ,
3435 getTrace ,
@@ -44,7 +45,7 @@ import qualified Cardano.Chain.Genesis as Byron
4445import Cardano.Crypto.ProtocolMagic (ProtocolMagicId (.. ))
4546import qualified Cardano.Db as DB
4647import Cardano.DbSync.Api.Types
47- import Cardano.DbSync.Cache.Types ( CacheCapacity ( .. ), newEmptyCache , newMAChannels , newStakeChannels , useNoCache )
48+ import Cardano.DbSync.Cache.Types
4849import Cardano.DbSync.Config.Cardano
4950import Cardano.DbSync.Config.Shelley
5051import Cardano.DbSync.Config.Types
@@ -61,14 +62,15 @@ import qualified Cardano.Ledger.Shelley.Genesis as Shelley
6162import Cardano.Prelude
6263import Cardano.Slotting.Slot (EpochNo (.. ))
6364import Control.Concurrent.Class.MonadSTM.Strict (
65+ newEmptyTMVarIO ,
6466 newTBQueueIO ,
6567 newTVarIO ,
6668 readTVar ,
6769 readTVarIO ,
70+ takeTMVar ,
6871 writeTVar ,
6972 )
70- import qualified Control.Concurrent.Class.MonadSTM.Strict.TBQueue as TBQ
71- import Control.Concurrent.MVar
73+ import qualified Control.Concurrent.STM.TBQueue as TBQ
7274import Control.Monad.Logger (LoggingT , MonadLoggerIO )
7375import Control.Monad.Trans.Resource (MonadUnliftIO )
7476import qualified Data.Strict.Maybe as Strict
@@ -247,10 +249,11 @@ hasLedgerState syncEnv =
247249 NoLedger _ -> False
248250
249251writePrefetch :: SyncEnv -> CardanoBlock -> IO ()
250- writePrefetch syncEnv cblock = do
251- atomically $
252- TBQ. writeTBQueue (pTxInQueue $ envPrefetch syncEnv) $
253- PrefetchTxIdBlock cblock
252+ writePrefetch _syncEnv _cblock = pure ()
253+
254+ -- atomically $
255+ -- TBQ.writeTBQueue (pTxInQueue $ envPrefetch syncEnv) $
256+ -- PrefetchTxIdBlock cblock
254257
255258mkSyncEnv ::
256259 Trace IO Text ->
@@ -381,6 +384,18 @@ withGivenConnection toConn syncEnv action = do
381384 where
382385 connVar = toConn $ envBackends syncEnv
383386
387+ commitAll :: SyncEnv -> IO ()
388+ commitAll syncEnv = do
389+ maRet <- newEmptyTMVarIO
390+ stakeRet <- newEmptyTMVarIO
391+ -- queue actions are async here, so we let them run, while blocking on sync actions.
392+ atomically $ TBQ. writeTBQueue (macPriorityQueue $ envMAChans syncEnv) $ CommitMA maRet
393+ atomically $ TBQ. writeTBQueue (scPriorityQueue $ envStakeChans syncEnv) $ CommitStake stakeRet
394+ withScriptConnection syncEnv DB. transactionCommit
395+ withDatumConnection syncEnv DB. transactionCommit
396+ atomically $ takeTMVar maRet
397+ atomically $ takeTMVar stakeRet
398+
384399mkSyncEnvFromConfig ::
385400 Trace IO Text ->
386401 DbConnections ->
0 commit comments