@@ -68,7 +68,7 @@ import "yet-another-logger" System.Logger hiding (Logger)
6868import "yet-another-logger" System.Logger qualified as YAL
6969import "yet-another-logger" System.Logger.Backend.ColorOption (useColor )
7070import Chainweb.BlockHash
71- import Chainweb.BlockHeader (blockHeight , blockHash , blockPayloadHash )
71+ import Chainweb.BlockHeader (blockHeight , blockForkNumber , blockHash , blockPayloadHash )
7272import Chainweb.BlockHeaderDB.Internal (BlockHeaderDb (.. ), RankedBlockHeader (.. ))
7373import Chainweb.BlockHeight (BlockHeight (.. ))
7474import Chainweb.Cut.CutHashes (cutIdToText )
@@ -762,7 +762,7 @@ doCompactRocksDb logger cwVersion cids minBlockHeight srcDb targetDb = do
762762 iterLast it
763763 iterValue it >>= \ case
764764 Nothing -> exitLog logger " Missing final payload. This is likely due to a corrupted database."
765- Just rbh -> pure ( _getRankedBlockHeader rbh ^. blockHeight)
765+ Just rbh -> pure $ _getRankedBlockHeader rbh
766766
767767 -- The header that we start at depends on whether or not
768768 -- we have a minimal block header history window.
@@ -772,7 +772,10 @@ doCompactRocksDb logger cwVersion cids minBlockHeight srcDb targetDb = do
772772 --
773773 -- On new enough chainweb versions, we want to only copy over
774774 -- the minimal number of block headers.
775- case minimumBlockHeaderHistory cwVersion latestHeader of
775+ -- Note, this behaviour may be dangerous in case of changes on the minimum block history.
776+ --
777+ -- TODO = Option to prune headers history to the minimum should be enabled by flag.
778+ case minimumBlockHeaderHistory cwVersion (latestHeader ^. blockForkNumber) (latestHeader ^. blockHeight) of
776779 -- Go to the earliest possible entry. We migrate all BlockHeaders, for now.
777780 -- They are needed for SPV.
778781 --
@@ -791,16 +794,18 @@ doCompactRocksDb logger cwVersion cids minBlockHeight srcDb targetDb = do
791794 earliestHeader <- do
792795 iterValue it >>= \ case
793796 Nothing -> exitLog logger " Missing first payload. This is likely due to a corrupted database."
794- Just rbh -> pure ( _getRankedBlockHeader rbh ^. blockHeight)
797+ Just rbh -> pure $ _getRankedBlockHeader rbh
795798
796799 -- Ensure that we log progress 100 times per chain
797800 -- I just made this number up as something that felt somewhat sensible
798- let offset = (latestHeader - earliestHeader) `div` 100
799- let headerProgressPoints = [earliestHeader + i * offset | i <- [1 .. 100 ]]
801+ let latestHeight = latestHeader ^. blockHeight
802+ earliestHeight = earliestHeader ^. blockHeight
803+ offset = (latestHeight - earliestHeight) `div` 100
804+ let headerProgressPoints = [earliestHeight + i * offset | i <- [1 .. 100 ]]
800805
801806 let logHeaderProgress bHeight = do
802807 when (bHeight `elem` headerProgressPoints) $ do
803- let percentDone = sshow $ 100 * fromIntegral @ _ @ Double (bHeight - earliestHeader ) / fromIntegral @ _ @ Double (latestHeader - earliestHeader )
808+ let percentDone = sshow $ 100 * fromIntegral @ _ @ Double (bHeight - earliestHeight ) / fromIntegral @ _ @ Double (latestHeight - earliestHeight )
804809 log' LL. Info $ percentDone <> " % done."
805810
806811 let go = do
0 commit comments