Skip to content

Commit b2ceb4f

Browse files
committed
TOSQUASH I forgot to also abstract over rotateDynamo
1 parent 7b6de0b commit b2ceb4f

File tree

4 files changed

+34
-6
lines changed
  • ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/MiniProtocol/BlockFetch
  • ouroboros-consensus-diffusion

4 files changed

+34
-6
lines changed

ouroboros-consensus-diffusion/src/ouroboros-consensus-diffusion/Ouroboros/Consensus/NodeKernel.hs

+2
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import Ouroboros.Consensus.MiniProtocol.ChainSync.Client.HistoricityCh
7575
(HistoricityCheck)
7676
import Ouroboros.Consensus.MiniProtocol.ChainSync.Client.InFutureCheck
7777
(SomeHeaderInFutureCheck)
78+
import qualified Ouroboros.Consensus.MiniProtocol.ChainSync.Client.Jumping as CSJumping
7879
import Ouroboros.Consensus.Node.Genesis (GenesisNodeKernelArgs (..),
7980
LoEAndGDDConfig (..), LoEAndGDDNodeKernelArgs (..),
8081
setGetLoEFragment)
@@ -438,6 +439,7 @@ initInternalState NodeKernelArgs { tracers, chainDB, registry, cfg
438439
blockFetchSize
439440
readFetchMode
440441
getDiffusionPipeliningSupport
442+
CSJumping.rotateDynamo
441443

442444
peerSharingRegistry <- newPeerSharingRegistry
443445

ouroboros-consensus-diffusion/test/consensus-test/Test/Consensus/PeerSimulator/BlockFetch.hs

+26-3
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,20 @@ module Test.Consensus.PeerSimulator.BlockFetch (
1515
, startKeepAliveThread
1616
) where
1717

18-
import Control.Monad (void)
18+
import Cardano.Slotting.Slot (SlotNo (unSlotNo))
19+
import Control.Monad (join, void)
1920
import Control.Monad.Class.MonadTime
2021
import Control.Monad.Class.MonadTimer.SI (MonadTimer)
2122
import Control.ResourceRegistry
22-
import Control.Tracer (Tracer, nullTracer, traceWith)
23+
import Control.Tracer (Tracer, contramap, nullTracer, traceWith)
2324
import Data.Functor.Contravariant ((>$<))
25+
import Data.Map (Map)
2426
import Network.TypedProtocol.Codec (ActiveState, AnyMessage,
2527
StateToken, notActiveState)
2628
import Ouroboros.Consensus.Block (HasHeader)
2729
import Ouroboros.Consensus.Block.Abstract (Header, Point (..))
30+
import Ouroboros.Consensus.Block.RealPoint
31+
(pointToWithOriginRealPoint, realPointSlot)
2832
import Ouroboros.Consensus.Config
2933
import Ouroboros.Consensus.HeaderValidation (HeaderWithTime (..))
3034
import qualified Ouroboros.Consensus.MiniProtocol.BlockFetch.ClientInterface as BlockFetchClientInterface
@@ -37,6 +41,7 @@ import Ouroboros.Consensus.Node.ProtocolInfo
3741
import Ouroboros.Consensus.Storage.ChainDB.API
3842
import Ouroboros.Consensus.Util (ShowProxy)
3943
import Ouroboros.Consensus.Util.IOLike
44+
import qualified Ouroboros.Network.AnchoredFragment as AF
4045
import Ouroboros.Network.BlockFetch (BlockFetchConfiguration (..),
4146
FetchClientRegistry, GenesisBlockFetchConfiguration (..),
4247
blockFetchLogic, bracketFetchClient,
@@ -68,6 +73,8 @@ import Test.Consensus.PeerSimulator.Trace
6873
TraceEvent (..))
6974
import Test.Consensus.PointSchedule (BlockFetchTimeout (..))
7075
import Test.Consensus.PointSchedule.Peers (PeerId)
76+
import qualified Test.CsjModel as CsjModel
77+
import qualified Test.CsjModel.Jumping as CsjModel
7178
import Test.Util.Orphans.IOLike ()
7279
import Test.Util.TestBlock (BlockConfig (TestBlockConfig), TestBlock)
7380

@@ -80,8 +87,11 @@ startBlockFetchLogic ::
8087
-> ChainDB m TestBlock
8188
-> FetchClientRegistry PeerId (HeaderWithTime TestBlock) TestBlock m
8289
-> ChainSyncClientHandleCollection PeerId m TestBlock
90+
-> SlotNo
91+
-> StrictTVar m (CsjModel.F (CsjModel.CsjState PeerId) TestBlock)
92+
-> StrictTVar m (Map PeerId (CsjModel.Inbox m TestBlock))
8393
-> m ()
84-
startBlockFetchLogic enableChainSelStarvation registry tracer chainDb fetchClientRegistry csHandlesCol = do
94+
startBlockFetchLogic enableChainSelStarvation registry tracer chainDb fetchClientRegistry csHandlesCol jumpSize varCsj varInboxes = do
8595
let blockFetchConsensusInterface =
8696
BlockFetchClientInterface.mkBlockFetchConsensusInterface
8797
nullTracer -- FIXME
@@ -94,6 +104,19 @@ startBlockFetchLogic enableChainSelStarvation registry tracer chainDb fetchClien
94104
-- This is a syncing test, so we use 'FetchModeGenesis'.
95105
(pure FetchModeGenesis)
96106
DiffusionPipeliningOn
107+
(\_tracer _cschcol peer -> join $ atomically $ do
108+
imm <- (pointToWithOriginRealPoint . AF.castPoint . AF.anchorPoint) <$> getCurrentChain chainDb
109+
CsjModel.rotateDynamo
110+
(contramap TraceCsjModelEvent tracer)
111+
CsjModel.CsjEnv {
112+
CsjModel.minJumpSlots = unSlotNo jumpSize
113+
, CsjModel.realPointSlot = realPointSlot
114+
}
115+
varCsj
116+
varInboxes
117+
peer
118+
imm
119+
)
97120

98121
bfcGenesisBFConfig = if enableChainSelStarvation
99122
then GenesisBlockFetchConfiguration

ouroboros-consensus-diffusion/test/consensus-test/Test/Consensus/PeerSimulator/Run.hs

+3
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,9 @@ startNode schedulerConfig genesisTest interval = do
433433
lnChainDb
434434
fetchClientRegistry
435435
handles
436+
csjpJumpSize
437+
varCsj
438+
varInboxes
436439

437440
for_ lrLoEVar $ \ var -> do
438441
forkLinkedWatcher lrRegistry "LoE updater background" $

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/MiniProtocol/BlockFetch/ClientInterface.hs

+3-3
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ mkBlockFetchConsensusInterface ::
110110
forall m peer blk.
111111
( IOLike m
112112
, BlockSupportsDiffusionPipelining blk
113-
, Ord peer
114113
, LedgerSupportsProtocol blk
115114
, SupportsNode.ConfigSupportsNode blk
116115
)
@@ -122,9 +121,10 @@ mkBlockFetchConsensusInterface ::
122121
-> STM m FetchMode
123122
-- ^ See 'readFetchMode'.
124123
-> DiffusionPipeliningSupport
124+
-> (Tracer m (CSJumping.TraceEventDbf peer) -> CSClient.ChainSyncClientHandleCollection peer m blk -> peer -> m ())
125125
-> BlockFetchConsensusInterface peer (HeaderWithTime blk) blk m
126126
mkBlockFetchConsensusInterface
127-
csjTracer bcfg chainDB csHandlesCol blockFetchSize readFetchMode pipelining =
127+
csjTracer bcfg chainDB csHandlesCol blockFetchSize readFetchMode pipelining csjDemote =
128128
BlockFetchConsensusInterface {blockFetchSize = blockFetchSize . hwtHeader, ..}
129129
where
130130
getCandidates :: STM m (Map peer (AnchoredFragment (HeaderWithTime blk)))
@@ -281,4 +281,4 @@ mkBlockFetchConsensusInterface
281281
readChainSelStarvation = getChainSelStarvation chainDB
282282

283283
demoteChainSyncJumpingDynamo :: peer -> m ()
284-
demoteChainSyncJumpingDynamo = CSJumping.rotateDynamo csjTracer csHandlesCol
284+
demoteChainSyncJumpingDynamo = csjDemote csjTracer csHandlesCol

0 commit comments

Comments
 (0)