@@ -29,6 +29,7 @@ module Cardano.DbSync.Api (
29
29
withDBSyncConnections ,
30
30
withScriptConnection ,
31
31
withDatumConnection ,
32
+ commitAll ,
32
33
mkSyncEnvFromConfig ,
33
34
getInsertOptions ,
34
35
getTrace ,
@@ -44,7 +45,7 @@ import qualified Cardano.Chain.Genesis as Byron
44
45
import Cardano.Crypto.ProtocolMagic (ProtocolMagicId (.. ))
45
46
import qualified Cardano.Db as DB
46
47
import Cardano.DbSync.Api.Types
47
- import Cardano.DbSync.Cache.Types ( CacheCapacity ( .. ), newEmptyCache , newMAChannels , newStakeChannels , useNoCache )
48
+ import Cardano.DbSync.Cache.Types
48
49
import Cardano.DbSync.Config.Cardano
49
50
import Cardano.DbSync.Config.Shelley
50
51
import Cardano.DbSync.Config.Types
@@ -61,14 +62,15 @@ import qualified Cardano.Ledger.Shelley.Genesis as Shelley
61
62
import Cardano.Prelude
62
63
import Cardano.Slotting.Slot (EpochNo (.. ))
63
64
import Control.Concurrent.Class.MonadSTM.Strict (
65
+ newEmptyTMVarIO ,
64
66
newTBQueueIO ,
65
67
newTVarIO ,
66
68
readTVar ,
67
69
readTVarIO ,
70
+ takeTMVar ,
68
71
writeTVar ,
69
72
)
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
72
74
import Control.Monad.Logger (LoggingT , MonadLoggerIO )
73
75
import Control.Monad.Trans.Resource (MonadUnliftIO )
74
76
import qualified Data.Strict.Maybe as Strict
@@ -247,10 +249,11 @@ hasLedgerState syncEnv =
247
249
NoLedger _ -> False
248
250
249
251
writePrefetch :: 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
254
257
255
258
mkSyncEnv ::
256
259
Trace IO Text ->
@@ -381,6 +384,18 @@ withGivenConnection toConn syncEnv action = do
381
384
where
382
385
connVar = toConn $ envBackends syncEnv
383
386
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
+
384
399
mkSyncEnvFromConfig ::
385
400
Trace IO Text ->
386
401
DbConnections ->
0 commit comments