diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs index b0148c000a..a8aa8d14ef 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs @@ -37,7 +37,6 @@ module Ouroboros.Network.PeerSelection.Governor , ChurnMode (..) ) where -import Data.Cache import Data.Foldable (traverse_) import Data.Hashable import Data.Void (Void) @@ -556,23 +555,23 @@ peerSelectionGovernorLoop tracer now <- getMonotonicTime let Decision { decisionTrace, decisionJobs, decisionState } = timedDecision now - !newCounters = peerSelectionStateToCounters decisionState - atomically $ do + mbCounters <- atomically $ do -- Update counters - withCacheA (countersCache decisionState) - newCounters - (writeTVar countersVar) + counters <- readTVar countersVar + let !counters' = peerSelectionStateToCounters decisionState + if counters' /= counters + then writeTVar countersVar counters' + >> return (Just counters') + else return Nothing -- Trace counters - traceWithCache countersTracer - (countersCache decisionState) - newCounters + traverse_ (traceWith countersTracer) mbCounters traverse_ (traceWith tracer) decisionTrace mapM_ (JobPool.forkJob jobPool) decisionJobs - loop (decisionState { countersCache = Cache newCounters }) dbgUpdateAt' + loop decisionState dbgUpdateAt' evalGuardedDecisions :: Time -> PeerSelectionState peeraddr peerconn diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs index 4801dabdd7..8f3a5eb1a2 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs @@ -50,7 +50,6 @@ module Ouroboros.Network.PeerSelection.Governor.Types , BootstrapPeersCriticalTimeoutError (..) ) where -import Data.Cache (Cache (..)) import Data.Map.Strict (Map) import Data.Map.Strict qualified as Map import Data.Maybe (fromMaybe) @@ -441,11 +440,6 @@ data PeerSelectionState peeraddr peerconn = PeerSelectionState { -- | Rng for fuzzy delay fuzzRng :: !StdGen, - -- | 'PeerSelectionCounters' counters cache. Allows to only trace - -- values when necessary. - -- - countersCache :: !(Cache PeerSelectionCounters), - -- | Current ledger state judgement -- ledgerStateJudgement :: !LedgerStateJudgement, @@ -914,7 +908,6 @@ emptyPeerSelectionState rng = inProgressDemoteHot = Set.empty, inProgressDemoteToCold = Set.empty, fuzzRng = rng, - countersCache = Cache emptyPeerSelectionCounters, ledgerStateJudgement = TooOld, bootstrapPeersFlag = DontUseBootstrapPeers, hasOnlyBootstrapPeers = False,