@@ -98,6 +98,7 @@ import Ouroboros.Consensus.Protocol.Abstract (ConsensusProtocol)
9898import Ouroboros.Network.Block (BlockNo (.. ), Point (.. ))
9999import Ouroboros.Network.Magic (NetworkMagic (.. ))
100100import qualified Ouroboros.Network.Point as Point
101+ import qualified Hasql.Connection as HqlC
101102
102103setConsistentLevel :: SyncEnv -> ConsistentLevel -> IO ()
103104setConsistentLevel env cst = do
@@ -180,7 +181,7 @@ runExtraMigrationsMaybe syncEnv = do
180181 let pcm = getPruneConsume syncEnv
181182 txOutTableType = getTxOutTableType syncEnv
182183 logInfo (getTrace syncEnv) $ " runExtraMigrationsMaybe: " <> textShow pcm
183- DB. runDbIohkNoLogging (envBackend syncEnv) $
184+ DB. runDbIohkNoLogging (envDbEnv syncEnv) $
184185 DB. runExtraMigrations
185186 (getTrace syncEnv)
186187 txOutTableType
@@ -189,11 +190,17 @@ runExtraMigrationsMaybe syncEnv = do
189190
190191runAddJsonbToSchema :: SyncEnv -> IO ()
191192runAddJsonbToSchema syncEnv =
192- void $ DB. runDbIohkNoLogging (envBackend syncEnv) DB. enableJsonbInSchema
193-
194- runRemoveJsonbFromSchema :: SyncEnv -> IO ()
195- runRemoveJsonbFromSchema syncEnv =
196- void $ DB. runDbIohkNoLogging (envBackend syncEnv) DB. disableJsonbInSchema
193+ void $ DB. runDbIohkNoLogging (envDbEnv syncEnv) DB. enableJsonbInSchema
194+
195+ runRemoveJsonbFromSchema
196+ :: (MonadIO m , AsDbError e )
197+ => SyncEnv
198+ -> DbAction e m ()
199+ runRemoveJsonbFromSchema syncEnv = do
200+ DB. runDbTx DB. Write transx
201+ where
202+ dbEnv = envDbEnv syncEnv
203+ transx = mkDbTransaction " runRemoveJsonbFromSchema" mkCallSite (DB. disableJsonbInSchema (dbConnection dbEnv))
197204
198205getSafeBlockNoDiff :: SyncEnv -> Word64
199206getSafeBlockNoDiff syncEnv = 2 * getSecurityParam syncEnv
@@ -332,9 +339,61 @@ getCurrentTipBlockNo env = do
332339 Just tip -> pure $ At (bBlockNo tip)
333340 Nothing -> pure Origin
334341
342+ mkSyncEnvFromConfig ::
343+ Trace IO Text ->
344+ Db. DbEnv ->
345+ ConnectionString ->
346+ SyncOptions ->
347+ GenesisConfig ->
348+ SyncNodeConfig ->
349+ SyncNodeParams ->
350+ -- | migrations were ran on startup
351+ Bool ->
352+ -- | run migration function
353+ RunMigration ->
354+ IO (Either SyncNodeError SyncEnv )
355+ mkSyncEnvFromConfig trce dbEnv connectionString syncOptions genCfg syncNodeConfigFromFile syncNodeParams ranMigration runMigrationFnc =
356+ case genCfg of
357+ GenesisCardano _ bCfg sCfg _ _
358+ | unProtocolMagicId (Byron. configProtocolMagicId bCfg) /= Shelley. sgNetworkMagic (scConfig sCfg) ->
359+ pure
360+ . Left
361+ . SNErrCardanoConfig
362+ $ mconcat
363+ [ " ProtocolMagicId "
364+ , textShow (unProtocolMagicId $ Byron. configProtocolMagicId bCfg)
365+ , " /= "
366+ , textShow (Shelley. sgNetworkMagic $ scConfig sCfg)
367+ ]
368+ | Byron. gdStartTime (Byron. configGenesisData bCfg) /= Shelley. sgSystemStart (scConfig sCfg) ->
369+ pure
370+ . Left
371+ . SNErrCardanoConfig
372+ $ mconcat
373+ [ " SystemStart "
374+ , textShow (Byron. gdStartTime $ Byron. configGenesisData bCfg)
375+ , " /= "
376+ , textShow (Shelley. sgSystemStart $ scConfig sCfg)
377+ ]
378+ | otherwise ->
379+ Right
380+ <$> mkSyncEnv
381+ trce
382+ dbEnv
383+ connectionString
384+ syncOptions
385+ (fst $ mkProtocolInfoCardano genCfg [] )
386+ (Shelley. sgNetworkId $ scConfig sCfg)
387+ (NetworkMagic . unProtocolMagicId $ Byron. configProtocolMagicId bCfg)
388+ (SystemStart . Byron. gdStartTime $ Byron. configGenesisData bCfg)
389+ syncNodeConfigFromFile
390+ syncNodeParams
391+ ranMigration
392+ runMigrationFnc
393+
335394mkSyncEnv ::
336395 Trace IO Text ->
337- Pool ->
396+ Db. DbEnv ->
338397 ConnectionString ->
339398 SyncOptions ->
340399 ProtocolInfo CardanoBlock ->
@@ -346,7 +405,7 @@ mkSyncEnv ::
346405 Bool ->
347406 RunMigration ->
348407 IO SyncEnv
349- mkSyncEnv trce dbPool connectionString syncOptions protoInfo nw nwMagic systemStart syncNodeConfigFromFile syncNP ranMigrations runMigrationFnc = do
408+ mkSyncEnv trce dbEnv connectionString syncOptions protoInfo nw nwMagic systemStart syncNodeConfigFromFile syncNP ranMigrations runMigrationFnc = do
350409 dbCNamesVar <- newTVarIO =<< dbConstraintNamesExists backend
351410 cache <-
352411 if soptCache syncOptions
@@ -394,7 +453,7 @@ mkSyncEnv trce dbPool connectionString syncOptions protoInfo nw nwMagic systemSt
394453
395454 pure $
396455 SyncEnv
397- { envPool = dbPool
456+ { envDbEnv = dbEnv
398457 , envBootstrap = bootstrapVar
399458 , envCache = cache
400459 , envConnectionString = connectionString
@@ -419,58 +478,6 @@ mkSyncEnv trce dbPool connectionString syncOptions protoInfo nw nwMagic systemSt
419478 hasLedger' = hasLedger . sioLedger . dncInsertOptions
420479 isTxOutConsumedBootstrap' = isTxOutConsumedBootstrap . sioTxOut . dncInsertOptions
421480
422- mkSyncEnvFromConfig ::
423- Trace IO Text ->
424- Pool ->
425- ConnectionString ->
426- SyncOptions ->
427- GenesisConfig ->
428- SyncNodeConfig ->
429- SyncNodeParams ->
430- -- | migrations were ran on startup
431- Bool ->
432- -- | run migration function
433- RunMigration ->
434- IO (Either SyncNodeError SyncEnv )
435- mkSyncEnvFromConfig trce dbPool connectionString syncOptions genCfg syncNodeConfigFromFile syncNodeParams ranMigration runMigrationFnc =
436- case genCfg of
437- GenesisCardano _ bCfg sCfg _ _
438- | unProtocolMagicId (Byron. configProtocolMagicId bCfg) /= Shelley. sgNetworkMagic (scConfig sCfg) ->
439- pure
440- . Left
441- . SNErrCardanoConfig
442- $ mconcat
443- [ " ProtocolMagicId "
444- , textShow (unProtocolMagicId $ Byron. configProtocolMagicId bCfg)
445- , " /= "
446- , textShow (Shelley. sgNetworkMagic $ scConfig sCfg)
447- ]
448- | Byron. gdStartTime (Byron. configGenesisData bCfg) /= Shelley. sgSystemStart (scConfig sCfg) ->
449- pure
450- . Left
451- . SNErrCardanoConfig
452- $ mconcat
453- [ " SystemStart "
454- , textShow (Byron. gdStartTime $ Byron. configGenesisData bCfg)
455- , " /= "
456- , textShow (Shelley. sgSystemStart $ scConfig sCfg)
457- ]
458- | otherwise ->
459- Right
460- <$> mkSyncEnv
461- trce
462- dbPool
463- connectionString
464- syncOptions
465- (fst $ mkProtocolInfoCardano genCfg [] )
466- (Shelley. sgNetworkId $ scConfig sCfg)
467- (NetworkMagic . unProtocolMagicId $ Byron. configProtocolMagicId bCfg)
468- (SystemStart . Byron. gdStartTime $ Byron. configGenesisData bCfg)
469- syncNodeConfigFromFile
470- syncNodeParams
471- ranMigration
472- runMigrationFnc
473-
474481-- | 'True' is for in memory points and 'False' for on disk
475482getLatestPoints :: SyncEnv -> IO [(CardanoPoint , Bool )]
476483getLatestPoints env = do
0 commit comments