Skip to content

Commit d8f1b96

Browse files
Cmdvkderme
authored andcommitted
add seperate db connections for vote and pool
1 parent 3d6a71d commit d8f1b96

File tree

4 files changed

+34
-19
lines changed

4 files changed

+34
-19
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,12 @@ runSyncNode metricsSetters trce iomgr dbConnString ranMigrations runMigrationFnc
167167
runOrThrowIO $ runExceptT $ do
168168
genCfg <- readCardanoGenesisConfig syncNodeConfig
169169
logProtocolMagicId trce $ genesisProtocolMagicId genCfg
170-
171170
syncEnv <-
172171
ExceptT $
173172
mkSyncEnvFromConfig
174173
trce
175174
backend
175+
dbConnString
176176
syncOptions
177177
genCfg
178178
syncNodeParams

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ import Control.Concurrent.Class.MonadSTM.Strict (
8585
import Control.Monad.Trans.Maybe (MaybeT (..))
8686
import qualified Data.Strict.Maybe as Strict
8787
import Data.Time.Clock (getCurrentTime)
88+
import Database.Persist.Postgresql (ConnectionString)
8889
import Database.Persist.Sql (SqlBackend)
8990
import Ouroboros.Consensus.Block.Abstract (BlockProtocol, HeaderHash, Point (..), fromRawHash)
9091
import Ouroboros.Consensus.BlockchainTime.WallClock.Types (SystemStart (..))
@@ -331,6 +332,7 @@ getCurrentTipBlockNo env = do
331332
mkSyncEnv ::
332333
Trace IO Text ->
333334
SqlBackend ->
335+
ConnectionString ->
334336
SyncOptions ->
335337
ProtocolInfo CardanoBlock ->
336338
Ledger.Network ->
@@ -340,7 +342,7 @@ mkSyncEnv ::
340342
Bool ->
341343
RunMigration ->
342344
IO SyncEnv
343-
mkSyncEnv trce backend syncOptions protoInfo nw nwMagic systemStart syncNP ranMigrations runMigrationFnc = do
345+
mkSyncEnv trce backend connectionString syncOptions protoInfo nw nwMagic systemStart syncNP ranMigrations runMigrationFnc = do
344346
dbCNamesVar <- newTVarIO =<< dbConstraintNamesExists backend
345347
cache <- if soptCache syncOptions then newEmptyCache 250000 50000 else pure uninitiatedCache
346348
consistentLevelVar <- newTVarIO Unchecked
@@ -379,6 +381,7 @@ mkSyncEnv trce backend syncOptions protoInfo nw nwMagic systemStart syncNP ranMi
379381
SyncEnv
380382
{ envBackend = backend
381383
, envCache = cache
384+
, envConnectionString = connectionString
382385
, envConsistentLevel = consistentLevelVar
383386
, envDbConstraints = dbCNamesVar
384387
, envEpochState = epochVar
@@ -400,6 +403,7 @@ mkSyncEnv trce backend syncOptions protoInfo nw nwMagic systemStart syncNP ranMi
400403
mkSyncEnvFromConfig ::
401404
Trace IO Text ->
402405
SqlBackend ->
406+
ConnectionString ->
403407
SyncOptions ->
404408
GenesisConfig ->
405409
SyncNodeParams ->
@@ -408,7 +412,7 @@ mkSyncEnvFromConfig ::
408412
-- | run migration function
409413
RunMigration ->
410414
IO (Either SyncNodeError SyncEnv)
411-
mkSyncEnvFromConfig trce backend syncOptions genCfg syncNodeParams ranMigration runMigrationFnc =
415+
mkSyncEnvFromConfig trce backend connectionString syncOptions genCfg syncNodeParams ranMigration runMigrationFnc =
412416
case genCfg of
413417
GenesisCardano _ bCfg sCfg _ _
414418
| unProtocolMagicId (Byron.configProtocolMagicId bCfg) /= Shelley.sgNetworkMagic (scConfig sCfg) ->
@@ -436,6 +440,7 @@ mkSyncEnvFromConfig trce backend syncOptions genCfg syncNodeParams ranMigration
436440
<$> mkSyncEnv
437441
trce
438442
backend
443+
connectionString
439444
syncOptions
440445
(fst $ mkProtocolInfoCardano genCfg [])
441446
(Shelley.sgNetworkId $ scConfig sCfg)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ import Control.Concurrent.Class.MonadSTM.Strict (
3131
import Control.Concurrent.Class.MonadSTM.Strict.TBQueue (StrictTBQueue)
3232
import qualified Data.Strict.Maybe as Strict
3333
import Data.Time.Clock (UTCTime)
34+
import Database.Persist.Postgresql (ConnectionString)
3435
import Database.Persist.Sql (SqlBackend)
3536
import Ouroboros.Consensus.BlockchainTime.WallClock.Types (SystemStart (..))
3637
import Ouroboros.Network.Magic (NetworkMagic (..))
3738

3839
data SyncEnv = SyncEnv
3940
{ envBackend :: !SqlBackend
4041
, envCache :: !Cache
42+
, envConnectionString :: !ConnectionString
4143
, envConsistentLevel :: !(StrictTVar IO ConsistentLevel)
4244
, envDbConstraints :: !(StrictTVar IO DB.ManualDbConstraints)
4345
, envEpochState :: !(StrictTVar IO EpochState)

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

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module Cardano.DbSync.OffChain (
1818
) where
1919

2020
import Cardano.BM.Trace (Trace, logInfo)
21+
import Cardano.Db (runIohkLogging)
2122
import qualified Cardano.Db as DB
2223
import Cardano.DbSync.Api
2324
import Cardano.DbSync.Api.Types (InsertOptions (..), SyncEnv (..))
@@ -34,6 +35,7 @@ import Control.Concurrent.Class.MonadSTM.Strict (
3435
import Control.Monad.Trans.Control (MonadBaseControl)
3536
import Data.Time.Clock.POSIX (POSIXTime)
3637
import qualified Data.Time.Clock.POSIX as Time
38+
import Database.Persist.Postgresql (withPostgresqlConn)
3739
import Database.Persist.Sql (SqlBackend)
3840
import qualified Network.HTTP.Client as Http
3941
import Network.HTTP.Client.TLS (tlsManagerSettings)
@@ -167,14 +169,17 @@ runFetchOffChainPoolThread syncEnv = do
167169
-- if dissable gov is active then don't run voting anchor thread
168170
when (ioOffChainPoolData iopts) $ do
169171
logInfo trce "Running Offchain Pool fetch thread"
170-
forever $ do
171-
tDelay
172-
-- load the offChain vote work queue using the db
173-
_ <- runReaderT (loadOffChainPoolWorkQueue trce (envOffChainPoolWorkQueue syncEnv)) (envBackend syncEnv)
174-
poolq <- atomically $ flushTBQueue (envOffChainPoolWorkQueue syncEnv)
175-
manager <- Http.newManager tlsManagerSettings
176-
now <- liftIO Time.getPOSIXTime
177-
mapM_ (queuePoolInsert <=< fetchOffChainPoolData trce manager now) poolq
172+
runIohkLogging trce $
173+
withPostgresqlConn (envConnectionString syncEnv) $
174+
\backendPool -> liftIO $
175+
forever $ do
176+
tDelay
177+
-- load the offChain vote work queue using the db
178+
_ <- runReaderT (loadOffChainPoolWorkQueue trce (envOffChainPoolWorkQueue syncEnv)) backendPool
179+
poolq <- atomically $ flushTBQueue (envOffChainPoolWorkQueue syncEnv)
180+
manager <- Http.newManager tlsManagerSettings
181+
now <- liftIO Time.getPOSIXTime
182+
mapM_ (queuePoolInsert <=< fetchOffChainPoolData trce manager now) poolq
178183
where
179184
trce = getTrace syncEnv
180185
iopts = getInsertOptions syncEnv
@@ -187,14 +192,17 @@ runFetchOffChainVoteThread syncEnv = do
187192
-- if dissable gov is active then don't run voting anchor thread
188193
when (ioGov iopts) $ do
189194
logInfo trce "Running Offchain Vote Anchor fetch thread"
190-
forever $ do
191-
tDelay
192-
-- load the offChain pool work queue using the db
193-
_ <- runReaderT (loadOffChainVoteWorkQueue trce (envOffChainVoteWorkQueue syncEnv)) (envBackend syncEnv)
194-
voteq <- atomically $ flushTBQueue (envOffChainVoteWorkQueue syncEnv)
195-
manager <- Http.newManager tlsManagerSettings
196-
now <- liftIO Time.getPOSIXTime
197-
mapM_ (queueVoteInsert <=< fetchOffChainVoteData trce manager now) voteq
195+
runIohkLogging trce $
196+
withPostgresqlConn (envConnectionString syncEnv) $
197+
\backendVote -> liftIO $
198+
forever $ do
199+
tDelay
200+
-- load the offChain pool work queue using the db
201+
_ <- runReaderT (loadOffChainVoteWorkQueue trce (envOffChainVoteWorkQueue syncEnv)) backendVote
202+
voteq <- atomically $ flushTBQueue (envOffChainVoteWorkQueue syncEnv)
203+
manager <- Http.newManager tlsManagerSettings
204+
now <- liftIO Time.getPOSIXTime
205+
mapM_ (queueVoteInsert <=< fetchOffChainVoteData trce manager now) voteq
198206
where
199207
trce = getTrace syncEnv
200208
iopts = getInsertOptions syncEnv

0 commit comments

Comments
 (0)