Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump network packages version #5409

Merged
merged 5 commits into from
Jul 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bench/locli/locli.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ library
, optparse-generic
, ouroboros-consensus
-- for Data.SOP.Strict:
, ouroboros-network ^>= 0.8.1.0
, ouroboros-network ^>= 0.8.2.0
, ouroboros-network-api
, process
, quiet
Expand Down
2 changes: 1 addition & 1 deletion bench/tx-generator/tx-generator.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ library
, ouroboros-consensus >= 0.6
, ouroboros-consensus-cardano >= 0.5
, ouroboros-consensus-diffusion >= 0.7.0
, ouroboros-network ^>= 0.8.1.0
, ouroboros-network ^>= 0.8.2.0
, ouroboros-network-api
, ouroboros-network-framework
, ouroboros-network-protocols
Expand Down
8 changes: 5 additions & 3 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ repository cardano-haskell-packages
-- See CONTRIBUTING for information about these, including some Nix commands
-- you need to run if you change them
index-state:
, hackage.haskell.org 2023-07-10T14:55:34Z
, cardano-haskell-packages 2023-07-16T00:00:00Z
, hackage.haskell.org 2023-07-21T10:12:20Z
, cardano-haskell-packages 2023-07-21T12:48:43Z

packages:
cardano-client-demo
Expand Down Expand Up @@ -102,7 +102,9 @@ write-ghc-environment-files: always
package snap-server
flags: +openssl

allow-newer: text
allow-newer:
text,
ekg-forward

constraints:
optparse-applicative >= 0.16.0 && < 0.16.1,
Expand Down
4 changes: 4 additions & 0 deletions cardano-node/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
`TraceLocalHandshake`, `TraceLocalInboundGovernor`, `TraceLocalServer` and
`TraceServer`.

- Added `hotValency` optional to P2P Topology files, keeping the backwards compatible
`valency` flag.
- Added `warmValency` optional to P2P Topology files.

## 8.1.0

-
Expand Down
6 changes: 3 additions & 3 deletions cardano-node/cardano-node.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,8 @@ library
, ouroboros-consensus-diffusion >= 0.7
, ouroboros-consensus-protocol >= 0.5
, ouroboros-network-api
, ouroboros-network ^>= 0.8.1.1
, ouroboros-network-framework >= 0.6
, ouroboros-network ^>= 0.8.2.0
, ouroboros-network-framework >= 0.7
, ouroboros-network-protocols
, prettyprinter
, prettyprinter-ansi-terminal
Expand Down Expand Up @@ -249,7 +249,7 @@ test-suite cardano-node-test
, ouroboros-consensus >= 0.9
, ouroboros-consensus-cardano
, ouroboros-consensus-diffusion >= 0.7
, ouroboros-network ^>= 0.8.1.1
, ouroboros-network ^>= 0.8.2.0
, ouroboros-network-api
, text >= 2.0
, time
Expand Down
30 changes: 21 additions & 9 deletions cardano-node/src/Cardano/Node/Configuration/TopologyP2P.hs
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,11 @@ import Cardano.Node.Configuration.Topology (TopologyError (..))
import Cardano.Node.Startup (StartupTrace (..))
import Cardano.Node.Types

import Cardano.Tracing.OrphanInstances.Network ()
import Control.Applicative (Alternative (..))
import Ouroboros.Network.NodeToNode (PeerAdvertise (..))
import Ouroboros.Network.PeerSelection.LedgerPeers (UseLedgerAfter (..))
import Ouroboros.Network.PeerSelection.LocalRootPeers (HotValency (..), WarmValency (..))
import Ouroboros.Network.PeerSelection.RelayAccessPoint (RelayAccessPoint (..))

data NodeSetup = NodeSetup
Expand Down Expand Up @@ -112,28 +115,35 @@ rootConfigToRelayAccessPoint RootConfig { rootAccessPoints, rootAdvertise } =

-- | A local root peers group. Local roots are treated by the outbound
-- governor in a special way. The node will make sure that a node has the
-- requested number ('valency') of connections to the local root peer group.
-- requested number ('valency'/'hotValency') of connections to the local root peer group.
-- 'warmValency' value is the value of warm/established connections that the node
-- will attempt to maintain. By default this value will be equal to 'hotValency'.
--
data LocalRootPeersGroup = LocalRootPeersGroup
{ localRoots :: RootConfig
, valency :: Int
, hotValency :: HotValency
, warmValency :: WarmValency
} deriving (Eq, Show)

-- | Does not use the 'FromJSON' instance of 'RootConfig', so that
-- 'accessPoints', 'advertise' and 'valency' fields are attached to the same
-- object.
-- 'accessPoints', 'advertise', 'valency' and 'warmValency' fields are attached to the
-- same object.
instance FromJSON LocalRootPeersGroup where
parseJSON = withObject "LocalRootPeersGroup" $ \o ->
parseJSON = withObject "LocalRootPeersGroup" $ \o -> do
hv@(HotValency v) <- o .: "valency"
<|> o .: "hotValency"
LocalRootPeersGroup
<$> parseJSON (Object o)
<*> o .: "valency"
<*> pure hv
<*> o .:? "warmValency" .!= WarmValency v

instance ToJSON LocalRootPeersGroup where
toJSON lrpg =
object
[ "accessPoints" .= rootAccessPoints (localRoots lrpg)
, "advertise" .= rootAdvertise (localRoots lrpg)
, "valency" .= valency lrpg
, "hotValency" .= hotValency lrpg
, "warmValency" .= warmValency lrpg
]

newtype LocalRootPeersGroups = LocalRootPeersGroups
Expand Down Expand Up @@ -185,10 +195,12 @@ instance FromJSON (Legacy a) => FromJSON (Legacy [a]) where
parseJSON = fmap (Legacy . map getLegacy) . parseJSONList

instance FromJSON (Legacy LocalRootPeersGroup) where
parseJSON = withObject "LocalRootPeersGroup" $ \o ->
parseJSON = withObject "LocalRootPeersGroup" $ \o -> do
hv@(HotValency v) <- o .: "hotValency"
fmap Legacy $ LocalRootPeersGroup
<$> o .: "localRoots"
<*> o .: "valency"
<*> pure hv
<*> pure (WarmValency v)

instance FromJSON (Legacy LocalRootPeersGroups) where
parseJSON = withObject "LocalRootPeersGroups" $ \o ->
Expand Down
14 changes: 8 additions & 6 deletions cardano-node/src/Cardano/Node/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ import Cardano.Node.Protocol.Types
import Cardano.Node.Queries
import Cardano.Node.TraceConstraints (TraceConstraints)
import Cardano.Tracing.Tracers
import Ouroboros.Network.PeerSelection.LocalRootPeers (HotValency, WarmValency)
import Ouroboros.Network.PeerSelection.PeerSharing (PeerSharing (..))

{- HLINT ignore "Fuse concatMap/map" -}
Expand Down Expand Up @@ -434,7 +435,7 @@ handleSimpleNode blockType runP p2pMode tracers nc onKernel = do
$ NetworkConfig localRoots
publicRoots
(useLedgerAfterSlot nt)
(localRootsVar :: StrictTVar IO [(Int, Map RelayAccessPoint PeerAdvertise)]) <- newTVarIO localRoots
localRootsVar <- newTVarIO localRoots
publicRootsVar <- newTVarIO publicRoots
useLedgerVar <- newTVarIO (useLedgerAfterSlot nt)
void $
Expand Down Expand Up @@ -557,7 +558,7 @@ installP2PSigHUPHandler :: Tracer IO (StartupTrace blk)
-> Api.BlockType blk
-> NodeConfiguration
-> NodeKernel IO RemoteAddress (ConnectionId LocalAddress) blk
-> StrictTVar IO [(Int, Map RelayAccessPoint PeerAdvertise)]
-> StrictTVar IO [(HotValency, WarmValency, Map RelayAccessPoint PeerAdvertise)]
-> StrictTVar IO (Map RelayAccessPoint PeerAdvertise)
-> StrictTVar IO UseLedgerAfter
-> IO ()
Expand Down Expand Up @@ -646,7 +647,7 @@ updateBlockForging startupTracer blockType nodeKernel nc = do

updateTopologyConfiguration :: Tracer IO (StartupTrace blk)
-> NodeConfiguration
-> StrictTVar IO [(Int, Map RelayAccessPoint PeerAdvertise)]
-> StrictTVar IO [(HotValency, WarmValency, Map RelayAccessPoint PeerAdvertise)]
-> StrictTVar IO (Map RelayAccessPoint PeerAdvertise)
-> StrictTVar IO UseLedgerAfter
-> IO ()
Expand Down Expand Up @@ -719,7 +720,7 @@ checkVRFFilePermissions (File vrfPrivKey) = do

mkP2PArguments
:: NodeConfiguration
-> STM IO [(Int, Map RelayAccessPoint PeerAdvertise)]
-> STM IO [(HotValency, WarmValency, Map RelayAccessPoint PeerAdvertise)]
-- ^ non-overlapping local root peers groups; the 'Int' denotes the
-- valency of its group.
-> STM IO (Map RelayAccessPoint PeerAdvertise)
Expand Down Expand Up @@ -786,11 +787,12 @@ producerAddressesNonP2P nt =

producerAddresses
:: NetworkTopology
-> ([(Int, Map RelayAccessPoint PeerAdvertise)], Map RelayAccessPoint PeerAdvertise)
-> ([(HotValency, WarmValency, Map RelayAccessPoint PeerAdvertise)], Map RelayAccessPoint PeerAdvertise)
producerAddresses nt =
case nt of
RealNodeTopology lrpg prp _ ->
( map (\lrp -> ( valency lrp
( map (\lrp -> ( hotValency lrp
, warmValency lrp
, Map.fromList $ rootConfigToRelayAccessPoint
$ localRoots lrp
)
Expand Down
3 changes: 2 additions & 1 deletion cardano-node/src/Cardano/Node/Startup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import Cardano.Node.Protocol (ProtocolInstantiationError)
import Cardano.Node.Protocol.Types (SomeConsensusProtocol (..))

import Cardano.Git.Rev (gitRev)
import Ouroboros.Network.PeerSelection.LocalRootPeers (HotValency, WarmValency)
import Paths_cardano_node (version)

data StartupTrace blk =
Expand Down Expand Up @@ -108,7 +109,7 @@ data StartupTrace blk =
-- | Log peer-to-peer network configuration, either on startup or when its
-- updated.
--
| NetworkConfig [(Int, Map RelayAccessPoint PeerAdvertise)]
| NetworkConfig [(HotValency, WarmValency, Map RelayAccessPoint PeerAdvertise)]
(Map RelayAccessPoint PeerAdvertise)
UseLedgerAfter

Expand Down
13 changes: 11 additions & 2 deletions cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs
Original file line number Diff line number Diff line change
Expand Up @@ -268,10 +268,9 @@ instance LogFormatting (TracePeerSelection SockAddr) where
, "actualEstablished" .= actualKnown
, "selectedPeers" .= toJSONList (toList sp)
]
forMachine _dtal (TracePromoteColdLocalPeers tLocalEst aLocalEst sp) =
forMachine _dtal (TracePromoteColdLocalPeers tLocalEst sp) =
mconcat [ "kind" .= String "PromoteColdLocalPeers"
, "targetLocalEstablished" .= tLocalEst
, "actualLocalEstablished" .= aLocalEst
, "selectedPeers" .= toJSONList (toList sp)
]
forMachine _dtal (TracePromoteColdFailed tEst aEst p d err) =
Expand Down Expand Up @@ -379,6 +378,10 @@ instance LogFormatting (TracePeerSelection SockAddr) where
forMachine _dtal (TraceChurnMode c) =
mconcat [ "kind" .= String "ChurnMode"
, "event" .= show c ]
forMachine _dtal (TraceKnownInboundConnection addr sharing) =
mconcat [ "kind" .= String "KnownInboundConnection"
, "peer" .= toJSON addr
, "peerSharing" .= String (pack . show $ sharing) ]
forHuman = pack . show

instance MetaTrace (TracePeerSelection SockAddr) where
Expand Down Expand Up @@ -442,6 +445,8 @@ instance MetaTrace (TracePeerSelection SockAddr) where
Namespace [] ["ChurnWait"]
namespaceFor TraceChurnMode {} =
Namespace [] ["ChurnMode"]
namespaceFor TraceKnownInboundConnection {} =
Namespace [] ["KnownInboundConnection"]

severityFor (Namespace [] ["LocalRootPeersChanged"]) _ = Just Notice
severityFor (Namespace [] ["TargetsChanged"]) _ = Just Notice
Expand Down Expand Up @@ -472,6 +477,7 @@ instance MetaTrace (TracePeerSelection SockAddr) where
severityFor (Namespace [] ["GovernorWakeup"]) _ = Just Info
severityFor (Namespace [] ["ChurnWait"]) _ = Just Info
severityFor (Namespace [] ["ChurnMode"]) _ = Just Info
severityFor (Namespace [] ["KnownInboundConnection"]) _ = Just Info
severityFor _ _ = Nothing

documentFor (Namespace [] ["LocalRootPeersChanged"]) = Just ""
Expand Down Expand Up @@ -524,6 +530,8 @@ instance MetaTrace (TracePeerSelection SockAddr) where
documentFor (Namespace [] ["GovernorWakeup"]) = Just ""
documentFor (Namespace [] ["ChurnWait"]) = Just ""
documentFor (Namespace [] ["ChurnMode"]) = Just ""
documentFor (Namespace [] ["KnownInboundConnection"]) = Just
"An inbound connection was added to known set of outbound governor"
documentFor _ = Nothing

allNamespaces = [
Expand Down Expand Up @@ -556,6 +564,7 @@ instance MetaTrace (TracePeerSelection SockAddr) where
, Namespace [] ["GovernorWakeup"]
, Namespace [] ["ChurnWait"]
, Namespace [] ["ChurnMode"]
, Namespace [] ["KnownInboundConnection"]
]

--------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion cardano-node/src/Cardano/Node/Tracing/Tracers/Startup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ ppStartupInfoTrace (NetworkConfig localRoots publicRoots useLedgerAfter) =
pack
$ intercalate "\n"
[ "\nLocal Root Groups:"
, " " ++ intercalate "\n " (map (\(x,y) -> show (x, Map.assocs y))
, " " ++ intercalate "\n " (map (\(x,y,z) -> show (x, y, Map.assocs z))
localRoots)
, "Public Roots:"
, " " ++ intercalate "\n " (map show $ Map.assocs publicRoots)
Expand Down
26 changes: 22 additions & 4 deletions cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}

Check warning on line 10 in cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs

View workflow job for this annotation

GitHub Actions / build

Warning in module Cardano.Tracing.OrphanInstances.Network: Unused LANGUAGE pragma ▫︎ Found: "{-# LANGUAGE StandaloneDeriving #-}"
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}

{-# OPTIONS_GHC -Wno-orphans #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

Check warning on line 16 in cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs

View workflow job for this annotation

GitHub Actions / build

Warning in module Cardano.Tracing.OrphanInstances.Network: Unused LANGUAGE pragma ▫︎ Found: "{-# LANGUAGE GeneralizedNewtypeDeriving #-}"

module Cardano.Tracing.OrphanInstances.Network () where

Expand Down Expand Up @@ -82,7 +84,8 @@
TracePeerSelection (..))
import qualified Ouroboros.Network.PeerSelection.KnownPeers as KnownPeers
import Ouroboros.Network.PeerSelection.LedgerPeers
import Ouroboros.Network.PeerSelection.LocalRootPeers (LocalRootPeers)
import Ouroboros.Network.PeerSelection.LocalRootPeers (HotValency (..), LocalRootPeers,
WarmValency (..))
import qualified Ouroboros.Network.PeerSelection.LocalRootPeers as LocalRootPeers
import Ouroboros.Network.PeerSelection.PeerStateActions (PeerSelectionActionsTrace (..))
import Ouroboros.Network.PeerSelection.RootPeersDNS (TraceLocalRootPeers (..),
Expand Down Expand Up @@ -178,7 +181,7 @@
fetchDecisionSeverity fd =
case fd of
Left FetchDeclineChainNotPlausible -> Debug
Left FetchDeclineChainNoIntersection -> Notice
Left FetchDeclineChainIntersectionTooDeep -> Notice
Left FetchDeclineAlreadyFetched -> Debug
Left FetchDeclineInFlightThisPeer -> Debug
Left FetchDeclineInFlightOtherPeer -> Debug
Expand Down Expand Up @@ -425,6 +428,7 @@
TraceGovernorWakeup {} -> Info
TraceChurnWait {} -> Info
TraceChurnMode {} -> Info
TraceKnownInboundConnection {} -> Info

instance HasPrivacyAnnotation (DebugPeerSelection addr)
instance HasSeverityAnnotation (DebugPeerSelection addr) where
Expand Down Expand Up @@ -1357,6 +1361,17 @@

instance Aeson.ToJSONKey RelayAccessPoint where

instance ToJSON HotValency where
toJSON (HotValency v) = toJSON v
instance ToJSON WarmValency where
toJSON (WarmValency v) = toJSON v

instance FromJSON HotValency where
parseJSON v = HotValency <$> parseJSON v

instance FromJSON WarmValency where
parseJSON v = WarmValency <$> parseJSON v

instance Show exception => ToObject (TraceLocalRootPeers RemoteAddress exception) where
toObject _verb (TraceLocalRootDomains groups) =
mconcat [ "kind" .= String "LocalRootDomains"
Expand Down Expand Up @@ -1513,10 +1528,9 @@
, "actualEstablished" .= actualKnown
, "selectedPeers" .= Aeson.toJSONList (toList sp)
]
toObject _verb (TracePromoteColdLocalPeers tLocalEst aLocalEst sp) =
toObject _verb (TracePromoteColdLocalPeers tLocalEst sp) =
mconcat [ "kind" .= String "PromoteColdLocalPeers"
, "targetLocalEstablished" .= tLocalEst
, "actualLocalEstablished" .= aLocalEst
, "selectedPeers" .= Aeson.toJSONList (toList sp)
]
toObject _verb (TracePromoteColdFailed tEst aEst p d err) =
Expand Down Expand Up @@ -1624,6 +1638,10 @@
toObject _verb (TraceChurnMode c) =
mconcat [ "kind" .= String "ChurnMode"
, "event" .= show c ]
toObject _verb (TraceKnownInboundConnection addr sharing) =
mconcat [ "kind" .= String "KnownInboundConnection"
, "peer" .= show addr
, "peerSharing" .= show sharing ]

-- Connection manager abstract state. For explanation of each state see
-- <https://hydra.iohk.io/job/Cardano/ouroboros-network/native.network-docs.x86_64-linux/latest/download/2>
Expand Down
6 changes: 4 additions & 2 deletions cardano-node/test/Test/Cardano/Node/Gen.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import Cardano.Node.Configuration.TopologyP2P (LocalRootPeersGroup (..
import Cardano.Node.Types (UseLedger (..))
import Cardano.Slotting.Slot (SlotNo (..))
import Ouroboros.Network.PeerSelection.LedgerPeers (UseLedgerAfter (..))
import Ouroboros.Network.PeerSelection.LocalRootPeers (HotValency (..), WarmValency (..))
import Ouroboros.Network.PeerSelection.RelayAccessPoint (DomainAccessPoint (..),
RelayAccessPoint (..))

Expand Down Expand Up @@ -175,8 +176,9 @@ genRootConfig = do
genLocalRootPeersGroup :: Gen LocalRootPeersGroup
genLocalRootPeersGroup = do
ra <- genRootConfig
val <- Gen.int (Range.linear 0 (length (rootAccessPoints ra)))
return (LocalRootPeersGroup ra val)
hval <- Gen.int (Range.linear 0 (length (rootAccessPoints ra)))
wval <- WarmValency <$> Gen.int (Range.linear 0 hval)
return (LocalRootPeersGroup ra (HotValency hval) wval)

genLocalRootPeersGroups :: Gen LocalRootPeersGroups
genLocalRootPeersGroups =
Expand Down
2 changes: 1 addition & 1 deletion cardano-submit-api/cardano-submit-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ library
, network
, optparse-applicative-fork ^>= 0.16.1
, ouroboros-consensus-cardano
, ouroboros-network ^>= 0.8.1.0
, ouroboros-network ^>= 0.8.2.0
, ouroboros-network-protocols
, prometheus
, servant
Expand Down
Loading
Loading