diff --git a/.github/workflows/haskell-linux.yml b/.github/workflows/haskell-linux.yml index 852978f8da3..a006ced5c6f 100644 --- a/.github/workflows/haskell-linux.yml +++ b/.github/workflows/haskell-linux.yml @@ -31,7 +31,7 @@ jobs: env: # Modify this value to "invalidate" the cabal cache. - CABAL_CACHE_VERSION: "2023-04-30" + CABAL_CACHE_VERSION: "2023-06-01" # Modify this value to "invalidate" the secp cache. SECP_CACHE_VERSION: "2022-12-30" diff --git a/.github/workflows/haskell.yml b/.github/workflows/haskell.yml index 92684714c7a..633d92220a7 100644 --- a/.github/workflows/haskell.yml +++ b/.github/workflows/haskell.yml @@ -31,7 +31,7 @@ jobs: env: # Modify this value to "invalidate" the cabal cache. - CABAL_CACHE_VERSION: "2023-04-30" + CABAL_CACHE_VERSION: "2023-06-01" # Modify this value to "invalidate" the secp cache. SECP_CACHE_VERSION: "2022-12-30" diff --git a/bench/locli/locli.cabal b/bench/locli/locli.cabal index fe6600384b8..ef97b2cd293 100644 --- a/bench/locli/locli.cabal +++ b/bench/locli/locli.cabal @@ -120,7 +120,7 @@ library , optparse-generic , ouroboros-consensus -- for Data.SOP.Strict: - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-api , process , quiet diff --git a/bench/plutus-scripts-bench/plutus-scripts-bench.cabal b/bench/plutus-scripts-bench/plutus-scripts-bench.cabal index 3144b8ad5a5..20452c15bef 100644 --- a/bench/plutus-scripts-bench/plutus-scripts-bench.cabal +++ b/bench/plutus-scripts-bench/plutus-scripts-bench.cabal @@ -27,6 +27,10 @@ common project-config if os(windows) buildable: False + if impl(ghc < 9) + buildable: False + + common common-definitions build-depends: base >= 4.14 && < 4.17 default-language: Haskell2010 @@ -68,7 +72,7 @@ library -- IOG dependencies -------------------------- build-depends: - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , plutus-ledger-api >=1.0.0 , plutus-tx >=1.0.0 , plutus-tx-plugin >=1.0.0 diff --git a/bench/tx-generator/scripts-fallback/CustomCall.plutus b/bench/tx-generator/scripts-fallback/CustomCall.plutus new file mode 100644 index 00000000000..c351c98d316 --- /dev/null +++ b/bench/tx-generator/scripts-fallback/CustomCall.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "5904485904450100003233223232323232323232323232323232323232323222323225335533353550032200213301333355300e1200132335012223335003220020020013500122001123300101401b253333350012101c2213335017501a002332335530101200135014001350130013350147149101000012101c101b2213335017501900233233553012120013350152233350032200200200135001220012001123300122337000040029000000a801199a80a1a980a89000a80928011aa8059a8030028999a80a280b19aa806980709000a80119aa8069807090009aa8059a8030028999a80a1a980a89000a80928011aa8059a80300288050b09aa8009100089a80180089911919191999ab9a3370e0029000119191991091980080180119191999ab9a3370e00290021091100191999ab9a3370e00490011091100091999ab9a3370e00690001091100111931900799ab9c00f01100d00c00b35573a0026ea8008c020004d5d09aba2500435742a006464c6401066ae70020028018d55ce80109aab9e00137540026a0064646464646666ae68cdc3800a40104646466442444446600800e00c6eb8008cd402dd70009aba135744a0086ae85400c8cccd5cd19b87002480188c8c8cc88488888cc00401c018dd680119a8063ad001357426ae894018d5d0a80291999ab9a3370e00690021191909111118028031bae001357426aae7801c8cccd5cd19b87004480088c8c8488888c00c018dd68009aba135573c01046666ae68cdc3802a40004244444004464c6401866ae7003003802802402001c018d55ce80189aab9e002135573c0026ea800526491035054310012322300237580026aa026446666aae7c00484880088cc88488cc00401000cc010d5d080118019aba200200412001112350012200135500f22112225335001100222133005002333553007120010050040011122333355002323350072233350080030010023500500133500622230033002001200122337000029001000a40006aa01a4422444a66a00226a00c006442666a01200a6008004666aa600e2400200a008002246a00244002246a002440042442466002006004244a66666a00442a66666a00442666a00ca01200400244260169310980524c26012931109805a4c442a66666a0064260169311099803999a8042805802001199a8041a980489000a805801800909805a4c2601493110980624c42a66666a004426014931109805a4c42666a00ca01000400226012931109805a4c2a66666a00242601293110980524c426012930805110980524c442a66666a00642601693110980624c426016930980524c4426600e666a010a014008004666a0106a601224002a01400600244a66a00420022010240026aa00c442444a66a0042a66a0022014442016442a66a0062016442a66a6600e0080042666a60122400200e006002201a244666ae68cdc3801000803002891199ab9a3371e00400200a0084004244004244002224646002002446600660040040021" +} diff --git a/bench/tx-generator/scripts-fallback/EcdsaSecp256k1Loop.plutus b/bench/tx-generator/scripts-fallback/EcdsaSecp256k1Loop.plutus new file mode 100644 index 00000000000..385788a4dd2 --- /dev/null +++ b/bench/tx-generator/scripts-fallback/EcdsaSecp256k1Loop.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "5901ea5901e7010000323232332232332232223232323232253353232323333333574801446666ae68cdc39aab9d500a480008cccd55cfa8051280811999aab9f500a25011233335573ea0144a02446666aae7d40289404c8cccd55cf9aba2500b2533532333333357480024a02c4a02c4a02c46a02e6eb400894058070d5d0a80790a99a98059aba1500f215335300b35742a01e42a66a60166ae85403c84d406448cccc00401401000c0085405c5405854054540509405006806406005c0589403c05094038940389403894038051402d4029402484d400488894cd4ccd5cd19b880044820225e804c0484d40512411572656465656d6572206973203c2031303030303030001333301100400300200113500f49011d5472616365206572726f723a20496e76616c69642072656465656d657200135744a00226ae8940044d5d1280089aab9e500113754002246666666ae900049400c9400c9400c9400c8d4010dd700100489091180100188910009918008009119111299a999ab9a3370e00a904044bd00400388058a99a999ab9a33376800600400201000e2666600866e040152002003002001135009491245472616365206572726f723a2045434453412076616c69646174696f6e206661696c65640030020021220021220011232632003335738002006930900081" +} diff --git a/bench/tx-generator/scripts-fallback/Loop.plutus b/bench/tx-generator/scripts-fallback/Loop.plutus new file mode 100644 index 00000000000..d04b0406afc --- /dev/null +++ b/bench/tx-generator/scripts-fallback/Loop.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "587a58780100003322323222322533532333573466e200052080897a0090085002132632498cd5ce24811572656465656d6572206973203c2031303030303030000061300550021375a0026460020024464a66a666ae68cdc38012410112f400c00a2008264600400266e04009200230020021200112200212200101" +} diff --git a/bench/tx-generator/scripts-fallback/SchnorrSecp256k1Loop.plutus b/bench/tx-generator/scripts-fallback/SchnorrSecp256k1Loop.plutus new file mode 100644 index 00000000000..7b683b1e1ab --- /dev/null +++ b/bench/tx-generator/scripts-fallback/SchnorrSecp256k1Loop.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "5901ec5901e9010000323232332232332232223232323232253353232323333333574801446666ae68cdc39aab9d500a480008cccd55cfa8051280811999aab9f500a25011233335573ea0144a02446666aae7d40289404c8cccd55cf9aba2500b2533532333333357480024a02c4a02c4a02c46a02e6eb400894058070d5d0a80790a99a98059aba1500f215335300b35742a01e42a66a60166ae85403c84d406448cccc00401401000c0085405c5405854054540509405006806406005c0589403c05094038940389403894038051402d4029402484d400488894cd4ccd5cd19b880044820225e804c0484d40512411572656465656d6572206973203c2031303030303030001333301100400300200113500f49011d5472616365206572726f723a20496e76616c69642072656465656d657200135744a00226ae8940044d5d1280089aab9e500113754002246666666ae900049400c9400c9400c9400c8d4010dd700100489091180100188910009918008009119111299a999ab9a3370e00a904044bd00400388058a99a999ab9a33376a00600400201000e2666600866e040152002003002001135009491265472616365206572726f723a205363686e6f72722076616c69646174696f6e206661696c65640030020021220021220011232632003335738002006930900081" +} diff --git a/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs b/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs index 4b21b43107f..becccc87609 100644 --- a/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs +++ b/bench/tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs @@ -109,6 +109,7 @@ benchmarkConnectTxSubmit ioManager handshakeTracer submissionTracer codecConfig { NtN.networkMagic = networkMagic , NtN.diffusionMode = NtN.InitiatorOnlyDiffusionMode , NtN.peerSharing = ownPeerSharing + , NtN.query = False }) $ mkApp $ NtN.nodeToNodeProtocols NtN.defaultMiniProtocolParameters ( \them _ -> diff --git a/bench/tx-generator/src/Cardano/TxGenerator/Setup/Plutus.hs b/bench/tx-generator/src/Cardano/TxGenerator/Setup/Plutus.hs index db627d93085..5f02e467e16 100644 --- a/bench/tx-generator/src/Cardano/TxGenerator/Setup/Plutus.hs +++ b/bench/tx-generator/src/Cardano/TxGenerator/Setup/Plutus.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RankNTypes #-} @@ -10,7 +11,7 @@ module Cardano.TxGenerator.Setup.Plutus ) where -import Data.Bifunctor (bimap) +import Data.Bifunctor import Data.Map.Strict as Map (lookup) import Control.Monad.Trans.Except @@ -27,19 +28,31 @@ import Cardano.Ledger.Alonzo.TxInfo (exBudgetToExUnits) import qualified PlutusLedgerApi.V1 as PlutusV1 import qualified PlutusLedgerApi.V2 as PlutusV2 -import Cardano.Benchmarking.PlutusScripts(findPlutusScript) import Cardano.TxGenerator.Types +#ifdef WITH_LIBRARY +import Cardano.Benchmarking.PlutusScripts (findPlutusScript) +#else +import Control.Exception (SomeException(..), try) +import Paths_tx_generator +#endif type ProtocolVersion = (Int, Int) readPlutusScript :: Either String FilePath -> IO (Either TxGenError ScriptInAnyLang) readPlutusScript (Left s) +#ifdef WITH_LIBRARY = pure $ maybe (Left . TxGenError $ "readPlutusScript: " ++ s ++ " not found.") Right (findPlutusScript s) +#else + = try (getDataFileName $ "scripts-fallback/" ++ s ++ ".plutus") >>= either + (\(SomeException e) -> pure $ Left $ TxGenError $ show e) + (readPlutusScript . Right) +#endif + readPlutusScript (Right fp) = runExceptT $ do script <- firstExceptT ApiError $ diff --git a/bench/tx-generator/test/ApiTest.hs b/bench/tx-generator/test/ApiTest.hs index fc2092e3381..887e78aeff0 100644 --- a/bench/tx-generator/test/ApiTest.hs +++ b/bench/tx-generator/test/ApiTest.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NumericUnderscores #-} {-# LANGUAGE OverloadedStrings #-} @@ -44,8 +45,10 @@ import Cardano.Benchmarking.Script.Aeson (prettyPrint, prettyPrintOrde import Cardano.Benchmarking.Script.Selftest (testScript) import Cardano.Benchmarking.Script.Types (SubmitMode (..)) +#ifdef WITH_LIBRARY import Cardano.Benchmarking.PlutusScripts import Cardano.Benchmarking.PlutusScripts.CustomCallTypes +#endif import Cardano.Node.Protocol.Types @@ -121,6 +124,10 @@ checkFund = genesisInitialFundForKey Mainnet checkPlutusBuiltin :: IO () +#ifndef WITH_LIBRARY +checkPlutusBuiltin + = putStrLn "* checkPlutusBuiltin: skipped - no library available" +#else checkPlutusBuiltin = do let script = case findPlutusScript "CustomCall.hs" of @@ -149,6 +156,7 @@ checkPlutusBuiltin toApiData :: CustomCallArg -> ScriptData toApiData = fromPlutusData . PlutusTx.toData +#endif checkPlutusLoop :: Maybe TxGenPlutusParams diff --git a/bench/tx-generator/tx-generator.cabal b/bench/tx-generator/tx-generator.cabal index ec27914e981..19ea92a8f8c 100644 --- a/bench/tx-generator/tx-generator.cabal +++ b/bench/tx-generator/tx-generator.cabal @@ -19,13 +19,21 @@ data-files: data/protocol-parameters.json data/loop.redeemer.json data/ecdsa-secp256k1-loop.redeemer.json data/schnorr-secp256k1-loop.redeemer.json + scripts-fallback/*.plutus common project-config if os(windows) buildable: False +common with-library + if impl(ghc >= 9) + build-depends: plutus-scripts-bench + cpp-options: -DWITH_LIBRARY + + library - import: project-config + import: project-config, with-library + hs-source-dirs: src ghc-options: -Wall -Wcompat @@ -89,7 +97,7 @@ library , attoparsec , base16-bytestring , bytestring - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-binary , cardano-cli , cardano-crypto-class @@ -118,12 +126,11 @@ library , ouroboros-consensus >= 0.6 , ouroboros-consensus-cardano >= 0.5 , ouroboros-consensus-diffusion >= 0.5.1 - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-api , ouroboros-network-framework , ouroboros-network-protocols , plutus-ledger-api - , plutus-scripts-bench , plutus-tx , random , serialise @@ -170,7 +177,8 @@ executable tx-generator , tx-generator test-suite tx-generator-apitest - import: project-config + import: project-config, with-library + hs-source-dirs: test main-is: ApiTest.hs type: exitcode-stdio-1.0 @@ -185,10 +193,9 @@ test-suite tx-generator-apitest , bytestring , filepath , optparse-applicative-fork - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-cli , cardano-node - , plutus-scripts-bench , plutus-tx , transformers , transformers-except @@ -202,7 +209,7 @@ test-suite tx-generator-apitest , bytestring , filepath , optparse-applicative-fork - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-cli , cardano-node , transformers diff --git a/cabal.project b/cabal.project index ab070ba767e..0c600756fb8 100644 --- a/cabal.project +++ b/cabal.project @@ -14,7 +14,7 @@ repository cardano-haskell-packages -- you need to run if you change them index-state: , hackage.haskell.org 2023-05-10T10:34:57Z - , cardano-haskell-packages 2023-05-25T10:00:00Z + , cardano-haskell-packages 2023-05-31T18:00:00Z packages: cardano-cli @@ -106,4 +106,3 @@ package snap-server -- IMPORTANT -- Do NOT add more source-repository-package stanzas here unless they are strictly -- temporary! Please read the section in CONTRIBUTING about updating dependencies. - diff --git a/cardano-cli/CHANGELOG.md b/cardano-cli/CHANGELOG.md index 7a293bb8007..fdcb7206324 100644 --- a/cardano-cli/CHANGELOG.md +++ b/cardano-cli/CHANGELOG.md @@ -22,6 +22,10 @@ - Fix `toEraInMode` for conway. This means for example that `query utxo` works in Conway. ([PR5175](https://github.com/input-output-hk/cardano-node/pull/5175)) +- Update ledger dependency bounds. + ([PR 5243](https://github.com/input-output-hk/cardano-node/pull/5243)) +- Add the query flag in `Ping` parser. See [here](https://github.com/input-output-hk/ouroboros-network/issues/3907) for more details. + ([PR 5243](https://github.com/input-output-hk/cardano-node/pull/5243)) ## 8.0.0 -- May 2023 diff --git a/cardano-cli/cardano-cli.cabal b/cardano-cli/cardano-cli.cabal index 1497a9bc87b..77d49300eba 100644 --- a/cardano-cli/cardano-cli.cabal +++ b/cardano-cli/cardano-cli.cabal @@ -110,7 +110,7 @@ library , binary , bytestring , canonical-json - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-binary , cardano-crypto , cardano-crypto-class >= 2.1.1 @@ -120,7 +120,7 @@ library , cardano-ledger-alonzo >= 1.1.1 , cardano-ledger-byron >= 1.0 , cardano-ledger-binary >= 1.0 - , cardano-ledger-core >= 1.1 + , cardano-ledger-core >= 1.2 , cardano-ledger-conway >= 1.1 , cardano-ledger-shelley >= 1.1.1 , cardano-ping ^>= 0.1.0.1 @@ -142,8 +142,8 @@ library , microlens , network , optparse-applicative-fork - , ouroboros-consensus >= 0.6 - , ouroboros-consensus-cardano >= 0.5 + , ouroboros-consensus >= 0.7 + , ouroboros-consensus-cardano >= 0.6 , ouroboros-consensus-protocol >= 0.5 , ouroboros-network-api , ouroboros-network-protocols @@ -198,7 +198,7 @@ test-suite cardano-cli-test , base16-bytestring , bech32 >= 1.1.0 , bytestring - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-api-gen ^>= 8.1.0.2 , cardano-cli , cardano-cli:cardano-cli-test-lib @@ -240,7 +240,7 @@ test-suite cardano-cli-golden build-depends: aeson >= 1.5.6.0 , base16-bytestring , bytestring - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-cli , cardano-cli:cardano-cli-test-lib , cardano-crypto-class ^>= 2.1 diff --git a/cardano-client-demo/StakeCredentialHistory.hs b/cardano-client-demo/StakeCredentialHistory.hs index 85d4b946e48..66d89746cfe 100644 --- a/cardano-client-demo/StakeCredentialHistory.hs +++ b/cardano-client-demo/StakeCredentialHistory.hs @@ -16,7 +16,7 @@ import Cardano.Ledger.Crypto (StandardCrypto) import qualified Cardano.Ledger.Shelley.API as L import qualified Cardano.Ledger.Shelley.Rewards as L import qualified Cardano.Ledger.Shelley.RewardUpdate as L -import qualified Cardano.Ledger.UMapCompact as UM +import qualified Cardano.Ledger.UMap as UM import qualified Ouroboros.Consensus.Shelley.Ledger as Shelley import qualified Codec.Binary.Bech32 as Bech32 @@ -258,8 +258,8 @@ main = do let getGoSnapshot = L.unStake . L.ssStake . L.ssStakeGo . L.esSnapshots . L.nesEs getBalances = UM.rewView . L.dsUnified - . L.dpsDState - . L.lsDPState + . L.certDState + . L.lsCertState . L.esLState . L.nesEs getPV :: LC.EraPParams era => L.NewEpochState era -> L.ProtVer diff --git a/cardano-node/cardano-node.cabal b/cardano-node/cardano-node.cabal index d114b949b0c..b23539c10d5 100644 --- a/cardano-node/cardano-node.cabal +++ b/cardano-node/cardano-node.cabal @@ -137,7 +137,7 @@ library , async , base16-bytestring , bytestring - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-crypto-class , cardano-crypto-wrapper , cardano-git-rev @@ -179,8 +179,8 @@ library , ouroboros-consensus-diffusion >= 0.5.1 , ouroboros-consensus-protocol >= 0.5 , ouroboros-network-api - , ouroboros-network >= 0.6 - , ouroboros-network-framework >= 0.5 + , ouroboros-network ^>= 0.8.1.0 + , ouroboros-network-framework >= 0.6 , ouroboros-network-protocols , prettyprinter , prettyprinter-ansi-terminal @@ -233,8 +233,8 @@ test-suite cardano-node-test build-depends: base >= 4.14 && < 4.17 , aeson >= 1.5.6.0 , bytestring - , cardano-api ^>= 8.1.0.1 , cardano-crypto-class + , cardano-api ^>= 8.2 , cardano-ledger-core , cardano-node , cardano-slotting >= 0.1 @@ -248,7 +248,7 @@ test-suite cardano-node-test , ouroboros-consensus , ouroboros-consensus-cardano , ouroboros-consensus-diffusion - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-api , text , time diff --git a/cardano-node/src/Cardano/Node/Handlers/TopLevel.hs b/cardano-node/src/Cardano/Node/Handlers/TopLevel.hs index 2589d8f31dd..4bbef4909d9 100644 --- a/cardano-node/src/Cardano/Node/Handlers/TopLevel.hs +++ b/cardano-node/src/Cardano/Node/Handlers/TopLevel.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE TypeApplications #-} + module Cardano.Node.Handlers.TopLevel ( toplevelExceptionHandler ) where @@ -53,6 +55,7 @@ import System.Environment import System.Exit import System.IO +import qualified Ouroboros.Network.Diffusion as Network -- | An exception handler to use for a program top level, as an alternative to -- the default top level handler provided by GHC. @@ -70,7 +73,8 @@ toplevelExceptionHandler prog = do hSetBuffering stderr LineBuffering catches prog [ Handler rethrowAsyncExceptions - , Handler rethrowExitCode + , Handler rethrowExitCode -- TODO this is possibly not needed anymore + , Handler rethrowDiffusionErrorExceptionInLinkedThreadExitSuccess , Handler handleSomeException ] where @@ -79,7 +83,7 @@ toplevelExceptionHandler prog = do -- then we rethrow ExitSuccess. This happens for example when using the -- `--shutdown-on-slot-synced` option. rethrowAsyncExceptions :: SomeAsyncException -> IO a - rethrowAsyncExceptions full@(SomeAsyncException e) = do + rethrowAsyncExceptions full@(SomeAsyncException e) = case fromException (toException e) of Just (ExceptionInLinkedThread _ eInner) | Just ExitSuccess <- fromException eInner @@ -91,6 +95,17 @@ toplevelExceptionHandler prog = do rethrowExitCode :: ExitCode -> IO a rethrowExitCode = throwIO + rethrowDiffusionErrorExceptionInLinkedThreadExitSuccess :: Network.Failure -> IO a + rethrowDiffusionErrorExceptionInLinkedThreadExitSuccess full = + case full of + Network.DiffusionError e -> + case fromException (toException e) of + Just (ExceptionInLinkedThread _ eInner) + | Just exitCode <- fromException eInner + -> throwIO @ExitCode exitCode + _ -> throwIO full + _ -> throwIO full + -- Print all other exceptions handleSomeException :: SomeException -> IO a handleSomeException e = do diff --git a/cardano-node/src/Cardano/Node/Queries.hs b/cardano-node/src/Cardano/Node/Queries.hs index 4bc080f4d3b..20c320ae553 100644 --- a/cardano-node/src/Cardano/Node/Queries.hs +++ b/cardano-node/src/Cardano/Node/Queries.hs @@ -55,7 +55,7 @@ import qualified Cardano.Ledger.SafeHash as Ledger import qualified Cardano.Ledger.Shelley.LedgerState as Shelley import qualified Cardano.Ledger.Shelley.UTxO as Shelley import qualified Cardano.Ledger.TxIn as Ledger -import qualified Cardano.Ledger.UMapCompact as UM +import qualified Cardano.Ledger.UMap as UM import Ouroboros.Consensus.Block (ForgeStateInfo, ForgeStateUpdateError) import Ouroboros.Consensus.Byron.Ledger.Block (ByronBlock) @@ -251,8 +251,8 @@ instance LedgerQueries (Shelley.ShelleyBlock protocol era) where UM.size . UM.Delegations . Shelley.dsUnified - . Shelley.dpsDState - . Shelley.lsDPState + . Shelley.certDState + . Shelley.lsCertState . Shelley.esLState . Shelley.nesEs . Shelley.shelleyLedgerState diff --git a/cardano-node/src/Cardano/Node/Tracing/Era/Shelley.hs b/cardano-node/src/Cardano/Node/Tracing/Era/Shelley.hs index e142b8ee586..b15a1c51df1 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Era/Shelley.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Era/Shelley.hs @@ -1040,6 +1040,20 @@ instance ( ShelleyBasedEra era , "govActionId" .= govActionIdToText govActionId ] +instance ( ShelleyBasedEra era + , LogFormatting (PredicateFailure (Ledger.EraRule "CERT" era)) + ) => LogFormatting (Conway.ConwayDelegsPredFailure era) where + forMachine _ (Conway.DelegateeNotRegisteredDELEG poolID) = + mconcat [ "kind" .= String "DelegateeNotRegisteredDELEG" + , "poolID" .= String (textShow poolID) + ] + forMachine _ (Conway.WithdrawalsNotInRewardsDELEGS rs) = + mconcat [ "kind" .= String "WithdrawalsNotInRewardsDELEGS" + , "rewardAccounts" .= rs + ] + forMachine dtal (Conway.CertFailure certFailure) = + forMachine dtal certFailure + instance Core.Crypto crypto => LogFormatting (Praos.PraosValidationErr crypto) where forMachine _ err' = diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs index d2dcfb44293..a127df798d6 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs @@ -330,7 +330,7 @@ mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConf traceWith blockchainTimeTr , Consensus.keepAliveClientTracer = Tracer $ traceWith keepAliveClientTr - , Consensus.consensusStartupErrorTracer = Tracer $ + , Consensus.consensusErrorTracer = Tracer $ traceWith consensusStartupErrorTr . ConsensusStartupException } diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/ChainDB.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/ChainDB.hs index a371f27f401..7a5bae99e49 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/ChainDB.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/ChainDB.hs @@ -92,7 +92,6 @@ instance ( LogFormatting (Header blk) forHuman (ChainDB.TraceLedgerReplayEvent v) = forHuman v forHuman (ChainDB.TraceImmutableDBEvent v) = forHuman v forHuman (ChainDB.TraceVolatileDBEvent v) = forHuman v - forHuman (ChainDB.TraceLedgerEvent v) = forHuman v forMachine details (ChainDB.TraceAddBlockEvent v) = forMachine details v @@ -116,8 +115,6 @@ instance ( LogFormatting (Header blk) forMachine details v forMachine details (ChainDB.TraceVolatileDBEvent v) = forMachine details v - forMachine details (ChainDB.TraceLedgerEvent v) = - forMachine details v asMetrics (ChainDB.TraceAddBlockEvent v) = asMetrics v asMetrics (ChainDB.TraceFollowerEvent v) = asMetrics v @@ -130,7 +127,6 @@ instance ( LogFormatting (Header blk) asMetrics (ChainDB.TraceLedgerReplayEvent v) = asMetrics v asMetrics (ChainDB.TraceImmutableDBEvent v) = asMetrics v asMetrics (ChainDB.TraceVolatileDBEvent v) = asMetrics v - asMetrics (ChainDB.TraceLedgerEvent v) = asMetrics v instance MetaTrace (ChainDB.TraceEvent blk) where @@ -156,8 +152,6 @@ instance MetaTrace (ChainDB.TraceEvent blk) where nsPrependInner "ImmDbEvent" (namespaceFor ev) namespaceFor (ChainDB.TraceVolatileDBEvent ev) = nsPrependInner "VolatileDbEvent" (namespaceFor ev) - namespaceFor (ChainDB.TraceLedgerEvent ev) = - nsPrependInner "TraceLedgerEvent" (namespaceFor ev) severityFor (Namespace out ("AddBlockEvent" : tl)) (Just (ChainDB.TraceAddBlockEvent ev')) = severityFor (Namespace out tl) (Just ev') diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/Diffusion.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/Diffusion.hs index a591b70bc97..1a4c7623e43 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/Diffusion.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/Diffusion.hs @@ -249,6 +249,8 @@ instance MetaTrace (AnyMessageAndAgency (HS.Handshake nt term)) where Namespace [] ["ProposeVersions"] namespaceFor (AnyMessageAndAgency _stok HS.MsgReplyVersions {}) = Namespace [] ["ReplyVersions"] + namespaceFor (AnyMessageAndAgency _stok HS.MsgQueryReply {}) = + Namespace [] ["MsgQueryReply"] namespaceFor (AnyMessageAndAgency _stok HS.MsgAcceptVersion {}) = Namespace [] ["AcceptVersion"] namespaceFor (AnyMessageAndAgency _stok HS.MsgRefuse {}) = @@ -256,6 +258,7 @@ instance MetaTrace (AnyMessageAndAgency (HS.Handshake nt term)) where severityFor (Namespace _ ["ProposeVersions"]) _ = Just Info severityFor (Namespace _ ["ReplyVersions"]) _ = Just Info + severityFor (Namespace _ ["MsgQueryReply"]) _ = Just Info severityFor (Namespace _ ["AcceptVersion"]) _ = Just Info severityFor (Namespace _ ["Refuse"]) _ = Just Info severityFor _ _ = Nothing @@ -270,6 +273,10 @@ instance MetaTrace (AnyMessageAndAgency (HS.Handshake nt term)) where , " received as a copy of 'MsgProposeVersions' in a simultaneous open" , " scenario." ] + documentFor (Namespace _ ["MsgQueryReply"]) = Just $ mconcat + [ "`MsgQueryReply` received as a response to a handshake query in " + , " 'MsgProposeVersions' and lists the supported versions." + ] documentFor (Namespace _ ["AcceptVersion"]) = Just $ mconcat [ "The remote end decides which version to use and sends chosen version." , "The server is allowed to modify version parameters." @@ -281,6 +288,7 @@ instance MetaTrace (AnyMessageAndAgency (HS.Handshake nt term)) where allNamespaces = [ Namespace [] ["ProposeVersions"] , Namespace [] ["ReplyVersions"] + , Namespace [] ["MsgQueryReply"] , Namespace [] ["AcceptVersion"] , Namespace [] ["Refuse"] ] diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs index d11b29cd1ea..14e96ece3da 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs @@ -1,6 +1,7 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} +{-# LANGUAGE LambdaCase #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RecordWildCards #-} @@ -57,8 +58,13 @@ import Ouroboros.Network.Snocket (LocalAddress (..)) -- LocalRootPeers Tracer -------------------------------------------------------------------------------- -instance (ToJSONKey ntnAddr, ToJSONKey RelayAccessPoint, Show ntnAddr, Show exception) => - LogFormatting (TraceLocalRootPeers ntnAddr exception) where +instance + ( ToJSONKey ntnAddr + , ToJSON ntnAddr + , ToJSONKey RelayAccessPoint + , Show ntnAddr + , Show exception + ) => LogFormatting (TraceLocalRootPeers ntnAddr exception) where forMachine _dtal (TraceLocalRootDomains groups) = mconcat [ "kind" .= String "LocalRootDomains" , "localRootDomains" .= toJSON groups @@ -92,16 +98,23 @@ instance (ToJSONKey ntnAddr, ToJSONKey RelayAccessPoint, Show ntnAddr, Show exce , "domainAddress" .= toJSON d , "reason" .= show exception ] + forMachine _dtal (TraceLocalRootDNSMap dnsMap) = + mconcat + [ "kind" .= String "TraceLocalRootDNSMap" + , "dnsMap" .= dnsMap + ] forHuman = pack . show instance MetaTrace (TraceLocalRootPeers ntnAddr exception) where - namespaceFor TraceLocalRootDomains {} = Namespace [] ["LocalRootDomains"] - namespaceFor TraceLocalRootWaiting {} = Namespace [] ["LocalRootWaiting"] - namespaceFor TraceLocalRootResult {} = Namespace [] ["LocalRootResult"] - namespaceFor TraceLocalRootGroups {} = Namespace [] ["LocalRootGroups"] - namespaceFor TraceLocalRootFailure {} = Namespace [] ["LocalRootFailure"] - namespaceFor TraceLocalRootError {} = Namespace [] ["LocalRootError"] - namespaceFor TraceLocalRootReconfigured {} = Namespace [] ["LocalRootReconfigured"] + namespaceFor = \case + TraceLocalRootDomains {} -> Namespace [] ["LocalRootDomains"] + TraceLocalRootWaiting {} -> Namespace [] ["LocalRootWaiting"] + TraceLocalRootResult {} -> Namespace [] ["LocalRootResult"] + TraceLocalRootGroups {} -> Namespace [] ["LocalRootGroups"] + TraceLocalRootFailure {} -> Namespace [] ["LocalRootFailure"] + TraceLocalRootError {} -> Namespace [] ["LocalRootError"] + TraceLocalRootReconfigured {} -> Namespace [] ["LocalRootReconfigured"] + TraceLocalRootDNSMap {} -> Namespace [] ["LocalRootDNSMap"] severityFor (Namespace [] ["LocalRootDomains"]) _ = Just Info severityFor (Namespace [] ["LocalRootWaiting"]) _ = Just Info @@ -109,6 +122,8 @@ instance MetaTrace (TraceLocalRootPeers ntnAddr exception) where severityFor (Namespace [] ["LocalRootGroups"]) _ = Just Info severityFor (Namespace [] ["LocalRootFailure"]) _ = Just Info severityFor (Namespace [] ["LocalRootError"]) _ = Just Info + severityFor (Namespace [] ["LocalRootReconfigured"]) _ = Just Info + severityFor (Namespace [] ["LocalRootDNSMap"]) _ = Just Info severityFor _ _ = Nothing documentFor (Namespace [] ["LocalRootDomains"]) = Just @@ -123,6 +138,10 @@ instance MetaTrace (TraceLocalRootPeers ntnAddr exception) where "" documentFor (Namespace [] ["LocalRootError"]) = Just "" + documentFor (Namespace [] ["LocalRootReconfigured"]) = Just + "" + documentFor (Namespace [] ["LocalRootDNSMap"]) = Just + "" documentFor _ = Nothing allNamespaces = @@ -132,6 +151,8 @@ instance MetaTrace (TraceLocalRootPeers ntnAddr exception) where , Namespace [] ["LocalRootGroups"] , Namespace [] ["LocalRootFailure"] , Namespace [] ["LocalRootError"] + , Namespace [] ["LocalRootReconfigured"] + , Namespace [] ["LocalRootDNSMap"] ] -------------------------------------------------------------------------------- @@ -853,6 +874,14 @@ instance (Show versionNumber, ToJSON versionNumber, ToJSON agreedOptions) , "versionNumber" .= toJSON versionNumber , "agreedOptions" .= toJSON agreedOptions ] + forMachine _dtal (TrHandshakeQuery vMap) = + mconcat + [ "kind" .= String "HandshakeQuery" + , "versions" .= toJSON ((\(k,v) -> object [ + "versionNumber" .= k + , "options" .= v + ]) <$> Map.toList vMap) + ] forMachine _dtal (TrHandshakeClientError err) = mconcat [ "kind" .= String "HandshakeClientError" @@ -905,6 +934,7 @@ instance MetaTrace (ConnectionManagerTrace addr (Just (TrConnectionHandler _ ev')) = Just $ case ev' of TrHandshakeSuccess {} -> Info + TrHandshakeQuery {} -> Info TrHandshakeClientError {} -> Notice TrHandshakeServerError {} -> Info TrConnectionHandlerError _ _ ShutdownNode -> Critical diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/Peer.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/Peer.hs index 8e26c5f6107..1ee127d047f 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/Peer.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/Peer.hs @@ -1,5 +1,6 @@ {-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PackageImports #-} @@ -90,10 +91,12 @@ ppMaxSlotNo Net.NoMaxSlotNo = "???" ppMaxSlotNo (Net.MaxSlotNo x) = show (unSlotNo x) ppStatus :: PeerFetchStatus header -> String -ppStatus PeerFetchStatusShutdown = "shutdown" -ppStatus PeerFetchStatusAberrant = "aberrant" -ppStatus PeerFetchStatusBusy = "fetching" -ppStatus PeerFetchStatusReady {} = "ready" +ppStatus = \case + PeerFetchStatusStarting -> "starting" + PeerFetchStatusShutdown -> "shutdown" + PeerFetchStatusAberrant -> "aberrant" + PeerFetchStatusBusy -> "fetching" + PeerFetchStatusReady {} -> "ready" getCurrentPeers :: NodeKernelData blk diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/Startup.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/Startup.hs index fb0900afcc8..a7f3d41b173 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/Startup.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/Startup.hs @@ -406,6 +406,7 @@ nodeToClientVersionToInt = \case NodeToClientV_13 -> 13 NodeToClientV_14 -> 14 NodeToClientV_15 -> 15 + NodeToClientV_16 -> 16 nodeToNodeVersionToInt :: NodeToNodeVersion -> Int nodeToNodeVersionToInt = \case @@ -414,6 +415,7 @@ nodeToNodeVersionToInt = \case NodeToNodeV_9 -> 9 NodeToNodeV_10 -> 10 NodeToNodeV_11 -> 11 + NodeToNodeV_12 -> 12 -- | Pretty print 'StartupInfoTrace' -- diff --git a/cardano-node/src/Cardano/Tracing/OrphanInstances/Consensus.hs b/cardano-node/src/Cardano/Tracing/OrphanInstances/Consensus.hs index 065193999cc..36f3ea33b9f 100644 --- a/cardano-node/src/Cardano/Tracing/OrphanInstances/Consensus.hs +++ b/cardano-node/src/Cardano/Tracing/OrphanInstances/Consensus.hs @@ -120,7 +120,6 @@ instance ConvertRawHash blk => ConvertRawHash (Header blk) where instance HasPrivacyAnnotation (ChainDB.TraceEvent blk) instance HasSeverityAnnotation (ChainDB.TraceEvent blk) where - getSeverityAnnotation (ChainDB.TraceLedgerEvent _ev) = Debug getSeverityAnnotation (ChainDB.TraceAddBlockEvent ev) = case ev of ChainDB.IgnoreBlockOlderThanK {} -> Info ChainDB.IgnoreBlockAlreadyInVolatileDB {} -> Info @@ -301,12 +300,12 @@ instance (LedgerSupportsProtocol blk) formatText _ = pack . show . toList -instance ConvertRawHash blk - => Transformable Text IO (TraceBlockFetchServerEvent blk) where +instance (ToObject peer, ConvertRawHash blk) + => Transformable Text IO (TraceLabelPeer peer (TraceBlockFetchServerEvent blk)) where trTransformer = trStructuredText -instance HasTextFormatter (TraceBlockFetchServerEvent blk) where +instance HasTextFormatter (TraceLabelPeer peer (TraceBlockFetchServerEvent blk)) where formatText _ = pack . show . toList @@ -319,6 +318,13 @@ instance ConvertRawHash blk => Transformable Text IO (TraceChainSyncServerEvent blk) where trTransformer = trStructured +instance (ToObject peer, ToObject (TraceChainSyncServerEvent blk)) + => Transformable Text IO (TraceLabelPeer peer (TraceChainSyncServerEvent blk)) where + trTransformer = trStructured +instance (StandardHash blk, Show peer) + => HasTextFormatter (TraceLabelPeer peer (TraceChainSyncServerEvent blk)) where + formatText a _ = pack $ show a + instance ( ToObject (ApplyTxErr blk), ToObject (GenTx blk), ToJSON (GenTxId blk), LedgerSupportsMempool blk) @@ -466,7 +472,6 @@ instance ( ConvertRawHash blk , InspectLedger blk) => HasTextFormatter (ChainDB.TraceEvent blk) where formatText tev _obj = case tev of - ChainDB.TraceLedgerEvent _ev -> "TraceLedgerEvent" ChainDB.TraceAddBlockEvent ev -> case ev of ChainDB.IgnoreBlockOlderThanK pt -> "Ignoring block older than K: " <> renderRealPointAsPhrase pt @@ -971,9 +976,6 @@ instance ( ConvertRawHash blk chainLengthΔ :: AF.AnchoredFragment (Header blk) -> AF.AnchoredFragment (Header blk) -> Int chainLengthΔ = on (-) (fromWithOrigin (-1) . fmap (fromIntegral . unBlockNo) . AF.headBlockNo) - toObject _verb (ChainDB.TraceLedgerEvent _ev) = - mconcat [ "kind" .= String "TraceLedgerEvent" ] - toObject MinimalVerbosity (ChainDB.TraceLedgerReplayEvent _ev) = mempty -- no output toObject verb (ChainDB.TraceLedgerReplayEvent ev) = case ev of LedgerDB.ReplayFromGenesis _replayTo -> diff --git a/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs b/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs index c4691aa6c9b..a0190350b22 100644 --- a/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs +++ b/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs @@ -20,6 +20,7 @@ import Control.Monad.Class.MonadTime.SI (DiffTime, Time (..)) import Data.Aeson (FromJSON (..), Value (..)) import qualified Data.Aeson as Aeson import Data.Aeson.Types (listValue) +import qualified Data.Aeson.Types as Aeson import Data.Bifunctor (Bifunctor (first)) import Data.Data (Proxy (..)) import Data.Foldable (Foldable (..)) @@ -28,6 +29,8 @@ import qualified Data.IP as IP import qualified Data.Map.Strict as Map import qualified Data.Set as Set import Data.Text (Text, pack) +import qualified Data.Text as Text +import qualified Data.Text.Encoding as Text import Network.TypedProtocol.Codec (AnyMessageAndAgency (..)) import Network.TypedProtocol.Core (PeerHasAgency (..)) @@ -180,6 +183,7 @@ instance HasSeverityAnnotation [TraceLabelPeer peer (FetchDecision [Point header Left FetchDeclineInFlightThisPeer -> Debug Left FetchDeclineInFlightOtherPeer -> Debug Left FetchDeclinePeerShutdown -> Info + Left FetchDeclinePeerStarting -> Info Left FetchDeclinePeerSlow -> Info Left FetchDeclineReqsInFlightLimit {} -> Info Left FetchDeclineBytesInFlightLimit {} -> Info @@ -452,6 +456,7 @@ instance HasSeverityAnnotation (ConnectionManagerTrace addr (ConnectionHandlerTr TrConnectionHandler _ ev' -> case ev' of TrHandshakeSuccess {} -> Info + TrHandshakeQuery {} -> Info TrHandshakeClientError {} -> Notice TrHandshakeServerError {} -> Info TrConnectionHandlerError _ _ ShutdownNode -> Critical @@ -1377,6 +1382,20 @@ instance Show exception => ToObject (TraceLocalRootPeers RemoteAddress exception toObject _verb (TraceLocalRootReconfigured _ _) = mconcat [ "kind" .= String "LocalRootReconfigured" ] + toObject _verb (TraceLocalRootDNSMap dnsMap) = + mconcat + [ "kind" .= String "TraceLocalRootDNSMap" + , "dnsMap" .= dnsMap + ] + +instance Aeson.ToJSONKey DomainAccessPoint where + toJSONKey = Aeson.toJSONKeyText render + where + render da = mconcat + [ Text.decodeUtf8 (dapDomain da) + , ":" + , Text.pack $ show @Int (fromIntegral (dapPortNumber da)) + ] instance ToJSON IP where toJSON ip = String (pack . show $ ip) @@ -1755,6 +1774,9 @@ instance Show vNumber => ToJSON (HandshakeProtocolError vNumber) where , "versionNumber" .= show vNumber , "reason" .= String (pack $ show t) ] + toJSON QueryNotSupported = + Aeson.object [ "kind" .= String "QueryNotSupported" + ] instance Show vNumber => ToJSON (HandshakeException vNumber) where toJSON (HandshakeProtocolLimit plf) = @@ -1772,6 +1794,7 @@ instance ToJSON NodeToNodeVersion where toJSON NodeToNodeV_9 = Number 9 toJSON NodeToNodeV_10 = Number 10 toJSON NodeToNodeV_11 = Number 11 + toJSON NodeToNodeV_12 = Number 12 instance FromJSON NodeToNodeVersion where parseJSON (Number 7) = return NodeToNodeV_7 @@ -1790,6 +1813,7 @@ instance ToJSON NodeToClientVersion where toJSON NodeToClientV_13 = Number 13 toJSON NodeToClientV_14 = Number 14 toJSON NodeToClientV_15 = Number 15 + toJSON NodeToClientV_16 = Number 16 instance FromJSON NodeToClientVersion where parseJSON (Number 9) = return NodeToClientV_9 @@ -1803,15 +1827,17 @@ instance FromJSON NodeToClientVersion where parseJSON x = fail ("FromJSON.NodeToClientVersion: error parsing NodeToClientVersion: " ++ show x) instance ToJSON NodeToNodeVersionData where - toJSON (NodeToNodeVersionData (NetworkMagic m) dm ps) = + toJSON (NodeToNodeVersionData (NetworkMagic m) dm ps q) = Aeson.object [ "networkMagic" .= toJSON m , "diffusionMode" .= show dm , "peerSharing" .= show ps + , "query" .= toJSON q ] instance ToJSON NodeToClientVersionData where - toJSON (NodeToClientVersionData (NetworkMagic m)) = + toJSON (NodeToClientVersionData (NetworkMagic m) q) = Aeson.object [ "networkMagic" .= toJSON m + , "query" .= toJSON q ] instance (Show versionNumber, ToJSON versionNumber, ToJSON agreedOptions) @@ -1822,6 +1848,14 @@ instance (Show versionNumber, ToJSON versionNumber, ToJSON agreedOptions) , "versionNumber" .= toJSON versionNumber , "agreedOptions" .= toJSON agreedOptions ] + toObject _verb (TrHandshakeQuery vMap) = + mconcat + [ "kind" .= String "HandshakeQuery" + , "versions" .= toJSON ((\(k,v) -> Aeson.object [ + "versionNumber" .= k + , "options" .= v + ]) <$> Map.toList vMap) + ] toObject _verb (TrHandshakeClientError err) = mconcat [ "kind" .= String "HandshakeClientError" diff --git a/cardano-node/src/Cardano/Tracing/OrphanInstances/Shelley.hs b/cardano-node/src/Cardano/Tracing/OrphanInstances/Shelley.hs index 7f7800ce103..a85f66f6145 100644 --- a/cardano-node/src/Cardano/Tracing/OrphanInstances/Shelley.hs +++ b/cardano-node/src/Cardano/Tracing/OrphanInstances/Shelley.hs @@ -265,6 +265,20 @@ instance ( ShelleyBasedEra era , "govActionId" .= govActionIdToText govActionId ] +instance ( ShelleyBasedEra era + , ToObject (PredicateFailure (Ledger.EraRule "CERT" era)) + ) => ToObject (Conway.ConwayDelegsPredFailure era) where + toObject _ (Conway.DelegateeNotRegisteredDELEG poolID) = + mconcat [ "kind" .= String "DelegateeNotRegisteredDELEG" + , "poolID" .= String (textShow poolID) + ] + toObject _ (Conway.WithdrawalsNotInRewardsDELEGS rs) = + mconcat [ "kind" .= String "WithdrawalsNotInRewardsDELEGS" + , "rewardAccounts" .= rs + ] + toObject v (Conway.CertFailure certFailure) = + toObject v certFailure + instance ( ShelleyBasedEra era , ToObject (PPUPPredFailure era) , ToObject (PredicateFailure (Ledger.EraRule "UTXO" era)) diff --git a/cardano-node/src/Cardano/Tracing/Peer.hs b/cardano-node/src/Cardano/Tracing/Peer.hs index c65bb968238..feff0469095 100644 --- a/cardano-node/src/Cardano/Tracing/Peer.hs +++ b/cardano-node/src/Cardano/Tracing/Peer.hs @@ -1,6 +1,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} module Cardano.Tracing.Peer @@ -79,10 +80,12 @@ ppMaxSlotNo Net.NoMaxSlotNo = "???" ppMaxSlotNo (Net.MaxSlotNo x) = show (unSlotNo x) ppStatus :: PeerFetchStatus header -> String -ppStatus PeerFetchStatusShutdown = "shutdown" -ppStatus PeerFetchStatusAberrant = "aberrant" -ppStatus PeerFetchStatusBusy = "fetching" -ppStatus PeerFetchStatusReady {} = "ready" +ppStatus = \case + PeerFetchStatusShutdown -> "shutdown" + PeerFetchStatusAberrant -> "aberrant" + PeerFetchStatusBusy -> "fetching" + PeerFetchStatusReady {} -> "ready" + PeerFetchStatusStarting -> "starting" getCurrentPeers :: NodeKernelData blk diff --git a/cardano-node/src/Cardano/Tracing/Tracers.hs b/cardano-node/src/Cardano/Tracing/Tracers.hs index 837a625dc83..8c4f8c48e21 100644 --- a/cardano-node/src/Cardano/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Tracing/Tracers.hs @@ -466,7 +466,7 @@ mkTracers _ _ _ _ _ enableP2P = , Consensus.mempoolTracer = nullTracer , Consensus.forgeTracer = nullTracer , Consensus.blockchainTimeTracer = nullTracer - , Consensus.consensusStartupErrorTracer = nullTracer + , Consensus.consensusErrorTracer = nullTracer } , nodeToClientTracers = NodeToClient.Tracers { NodeToClient.tChainSyncTracer = nullTracer @@ -697,10 +697,9 @@ mkConsensusTracers mbEKGDirect trSel verb tr nodeKern fStats = do pure Consensus.Tracers { Consensus.chainSyncClientTracer = tracerOnOff (traceChainSyncClient trSel) verb "ChainSyncClient" tr , Consensus.chainSyncServerHeaderTracer = - Tracer $ \ev -> do - traceWith (annotateSeverity . toLogObject' verb $ appendName "ChainSyncHeaderServer" - (tracerOnOff' (traceChainSyncHeaderServer trSel) tr)) ev - traceServedCount mbEKGDirect ev + tracerOnOff' (traceChainSyncHeaderServer trSel) + (annotateSeverity . toLogObject' verb $ appendName "ChainSyncHeaderServer" tr) + <> (\(TraceLabelPeer _ ev) -> ev) `contramap` Tracer (traceServedCount mbEKGDirect) , Consensus.chainSyncServerBlockTracer = tracerOnOff (traceChainSyncBlockServer trSel) verb "ChainSyncBlockServer" tr , Consensus.blockFetchDecisionTracer = tracerOnOff' (traceBlockFetchDecisions trSel) $ annotateSeverity $ teeTraceBlockFetchDecision verb elidedFetchDecision tr @@ -713,22 +712,22 @@ mkConsensusTracers mbEKGDirect trSel verb tr nodeKern fStats = do , Consensus.forgeStateInfoTracer = tracerOnOff' (traceForgeStateInfo trSel) $ forgeStateInfoTracer (Proxy @blk) trSel tr , Consensus.txInboundTracer = tracerOnOff' (traceTxInbound trSel) $ - Tracer $ \ev -> do - traceWith (annotateSeverity . toLogObject' verb $ appendName "TxInbound" tr) ev - case ev of - TraceLabelPeer _ (TraceTxSubmissionCollected collected) -> - traceI trmet meta "submissions.submitted.count" =<< - STM.modifyReadTVarIO tSubmissionsCollected (+ collected) - - TraceLabelPeer _ (TraceTxSubmissionProcessed processed) -> do - traceI trmet meta "submissions.accepted.count" =<< - STM.modifyReadTVarIO tSubmissionsAccepted (+ ptxcAccepted processed) - traceI trmet meta "submissions.rejected.count" =<< - STM.modifyReadTVarIO tSubmissionsRejected (+ ptxcRejected processed) - - TraceLabelPeer _ TraceTxInboundTerminated -> return () - TraceLabelPeer _ (TraceTxInboundCanRequestMoreTxs _) -> return () - TraceLabelPeer _ (TraceTxInboundCannotRequestMoreTxs _) -> return () + Tracer $ \ev -> do + traceWith (annotateSeverity . toLogObject' verb $ appendName "TxInbound" tr) ev + case ev of + TraceLabelPeer _ (TraceTxSubmissionCollected collected) -> + traceI trmet meta "submissions.submitted.count" =<< + STM.modifyReadTVarIO tSubmissionsCollected (+ collected) + + TraceLabelPeer _ (TraceTxSubmissionProcessed processed) -> do + traceI trmet meta "submissions.accepted.count" =<< + STM.modifyReadTVarIO tSubmissionsAccepted (+ ptxcAccepted processed) + traceI trmet meta "submissions.rejected.count" =<< + STM.modifyReadTVarIO tSubmissionsRejected (+ ptxcRejected processed) + + TraceLabelPeer _ TraceTxInboundTerminated -> return () + TraceLabelPeer _ (TraceTxInboundCanRequestMoreTxs _) -> return () + TraceLabelPeer _ (TraceTxInboundCannotRequestMoreTxs _) -> return () , Consensus.txOutboundTracer = tracerOnOff (traceTxOutbound trSel) verb "TxOutbound" tr , Consensus.localTxSubmissionServerTracer = tracerOnOff (traceLocalTxSubmissionServer trSel) verb "LocalTxSubmissionServer" tr @@ -742,7 +741,7 @@ mkConsensusTracers mbEKGDirect trSel verb tr nodeKern fStats = do , Consensus.blockchainTimeTracer = tracerOnOff' (traceBlockchainTime trSel) $ Tracer $ \ev -> traceWith (toLogObject tr) (readableTraceBlockchainTimeEvent ev) - , Consensus.consensusStartupErrorTracer = + , Consensus.consensusErrorTracer = Tracer $ \err -> traceWith (toLogObject tr) (ConsensusStartupException err) } where @@ -774,19 +773,19 @@ mkConsensusTracers mbEKGDirect trSel verb tr nodeKern fStats = do traceBlockFetchServerMetrics - :: forall blk. () + :: forall blk peer. () => Tracer IO (LoggerName, LogObject Text) -> LOMeta -> STM.TVar Int64 -> STM.TVar Int64 -> STM.TVar SlotNo - -> Tracer IO (TraceBlockFetchServerEvent blk) - -> Tracer IO (TraceBlockFetchServerEvent blk) + -> Tracer IO (TraceLabelPeer peer (TraceBlockFetchServerEvent blk)) + -> Tracer IO (TraceLabelPeer peer (TraceBlockFetchServerEvent blk)) traceBlockFetchServerMetrics trMeta meta tBlocksServed tLocalUp tMaxSlotNo tracer = Tracer bsTracer where - bsTracer :: TraceBlockFetchServerEvent blk -> IO () - bsTracer e@(TraceBlockFetchServerSendBlock p) = do + bsTracer :: TraceLabelPeer peer (TraceBlockFetchServerEvent blk) -> IO () + bsTracer e@(TraceLabelPeer _p (TraceBlockFetchServerSendBlock p)) = do traceWith tracer e (served, mbLocalUpstreamyness) <- atomically $ do diff --git a/cardano-submit-api/cardano-submit-api.cabal b/cardano-submit-api/cardano-submit-api.cabal index 73fd03bbba2..5ae9b4161d9 100644 --- a/cardano-submit-api/cardano-submit-api.cabal +++ b/cardano-submit-api/cardano-submit-api.cabal @@ -39,7 +39,7 @@ library , aeson , async , bytestring - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-binary , cardano-cli , cardano-crypto-class ^>= 2.1 @@ -51,7 +51,7 @@ library , network , optparse-applicative-fork , ouroboros-consensus-cardano - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-protocols , prometheus , servant diff --git a/cardano-testnet/cardano-testnet.cabal b/cardano-testnet/cardano-testnet.cabal index 0f6674e8701..f50262c9fe7 100644 --- a/cardano-testnet/cardano-testnet.cabal +++ b/cardano-testnet/cardano-testnet.cabal @@ -34,7 +34,7 @@ library build-depends: aeson , ansi-terminal , bytestring - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-cli , cardano-crypto-class , cardano-crypto-wrapper @@ -51,7 +51,7 @@ library , hedgehog-extras ^>= 0.4.5.1 , mtl , optparse-applicative-fork - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-api , process , random @@ -166,7 +166,7 @@ test-suite cardano-testnet-test build-depends: aeson , async , bytestring - , cardano-api ^>= 8.1.0.1 + , cardano-api ^>= 8.2 , cardano-api-gen ^>= 8.1.0.2 , cardano-cli , cardano-crypto-class diff --git a/cardano-tracer/cardano-tracer.cabal b/cardano-tracer/cardano-tracer.cabal index dd5c66fbbd6..97476567cdc 100644 --- a/cardano-tracer/cardano-tracer.cabal +++ b/cardano-tracer/cardano-tracer.cabal @@ -146,7 +146,7 @@ library , filepath , mime-mail , optparse-applicative - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-api , ouroboros-network-framework , signal @@ -358,7 +358,7 @@ test-suite cardano-tracer-test-ext , generic-data , Glob , optparse-applicative-fork - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-api , ouroboros-network-framework , process diff --git a/cardano-tracer/src/Cardano/Tracer/Acceptors/Client.hs b/cardano-tracer/src/Cardano/Tracer/Acceptors/Client.hs index 9badcf35824..d962b69bee8 100644 --- a/cardano-tracer/src/Cardano/Tracer/Acceptors/Client.hs +++ b/cardano-tracer/src/Cardano/Tracer/Acceptors/Client.hs @@ -21,12 +21,12 @@ import Ouroboros.Network.Mux (MiniProtocol (..), MiniProtocolLimits (. import Ouroboros.Network.Protocol.Handshake.Codec (cborTermVersionDataCodec, codecHandshake, noTimeLimitsHandshake) import Ouroboros.Network.Protocol.Handshake.Type (Handshake) -import Ouroboros.Network.Protocol.Handshake.Version (acceptableVersion, +import Ouroboros.Network.Protocol.Handshake.Version (acceptableVersion, queryVersion, simpleSingletonVersions) -import Ouroboros.Network.Snocket (LocalAddress, LocalSocket, Snocket, makeLocalBearer, - localAddressFromPath, localSnocket) -import Ouroboros.Network.Socket (ConnectionId (..), connectToNode, - nullNetworkConnectTracers) +import Ouroboros.Network.Snocket (LocalAddress, LocalSocket, Snocket, + localAddressFromPath, localSnocket, makeLocalBearer) +import Ouroboros.Network.Socket (ConnectionId (..), HandshakeCallbacks (..), + connectToNode, nullNetworkConnectTracers) import qualified System.Metrics.Configuration as EKGF import System.Metrics.Network.Acceptor (acceptEKGMetricsInit) @@ -95,7 +95,7 @@ doConnectToForwarder snocket address netMagic timeLimits app = timeLimits (cborTermVersionDataCodec forwardingCodecCBORTerm) nullNetworkConnectTracers - acceptableVersion + (HandshakeCallbacks acceptableVersion queryVersion) (simpleSingletonVersions ForwardingV_1 (ForwardingVersionData $ NetworkMagic netMagic) diff --git a/cardano-tracer/src/Cardano/Tracer/Acceptors/Server.hs b/cardano-tracer/src/Cardano/Tracer/Acceptors/Server.hs index 21bb57efce4..f18705335bd 100644 --- a/cardano-tracer/src/Cardano/Tracer/Acceptors/Server.hs +++ b/cardano-tracer/src/Cardano/Tracer/Acceptors/Server.hs @@ -24,12 +24,12 @@ import Ouroboros.Network.Protocol.Handshake.Codec (cborTermVersionData codecHandshake, noTimeLimitsHandshake) import Ouroboros.Network.Protocol.Handshake.Type (Handshake) import Ouroboros.Network.Protocol.Handshake.Version (acceptableVersion, - simpleSingletonVersions) + queryVersion, simpleSingletonVersions) import Ouroboros.Network.Snocket (LocalAddress, LocalSocket, Snocket, makeLocalBearer, localAddressFromPath, localSnocket) import Ouroboros.Network.Socket (AcceptedConnectionsLimit (..), ConnectionId (..), - SomeResponderApplication (..), cleanNetworkMutableState, newNetworkMutableState, - nullNetworkServerTracers, withServerNode) + HandshakeCallbacks (..), SomeResponderApplication (..), cleanNetworkMutableState, + newNetworkMutableState, nullNetworkServerTracers, withServerNode) import qualified System.Metrics.Configuration as EKGF import System.Metrics.Network.Acceptor (acceptEKGMetricsResp) @@ -103,7 +103,7 @@ doListenToForwarder snocket address netMagic timeLimits app = do (codecHandshake forwardingVersionCodec) timeLimits (cborTermVersionDataCodec forwardingCodecCBORTerm) - acceptableVersion + (HandshakeCallbacks acceptableVersion queryVersion) (simpleSingletonVersions ForwardingV_1 (ForwardingVersionData $ NetworkMagic netMagic) diff --git a/cardano-tracer/test/Cardano/Tracer/Test/Forwarder.hs b/cardano-tracer/test/Cardano/Tracer/Test/Forwarder.hs index 7718adf8117..2671a1b5675 100644 --- a/cardano-tracer/test/Cardano/Tracer/Test/Forwarder.hs +++ b/cardano-tracer/test/Cardano/Tracer/Test/Forwarder.hs @@ -40,10 +40,10 @@ import Ouroboros.Network.Protocol.Handshake.Codec (cborTermVersionData codecHandshake, noTimeLimitsHandshake) import Ouroboros.Network.Protocol.Handshake.Type (Handshake) import Ouroboros.Network.Protocol.Handshake.Version (acceptableVersion, - simpleSingletonVersions) + queryVersion, simpleSingletonVersions) import Ouroboros.Network.Snocket (MakeBearer, Snocket, makeLocalBearer, localAddressFromPath, localSnocket) -import Ouroboros.Network.Socket (AcceptedConnectionsLimit (..), +import Ouroboros.Network.Socket (AcceptedConnectionsLimit (..), HandshakeCallbacks (..), SomeResponderApplication (..), cleanNetworkMutableState, connectToNode, newNetworkMutableState, nullNetworkConnectTracers, nullNetworkServerTracers, withServerNode) @@ -165,7 +165,7 @@ doConnectToAcceptor TestSetup{..} snocket muxBearer address timeLimits (ekgConfi timeLimits (cborTermVersionDataCodec forwardingCodecCBORTerm) nullNetworkConnectTracers - acceptableVersion + (HandshakeCallbacks acceptableVersion queryVersion) (simpleSingletonVersions ForwardingV_1 (ForwardingVersionData $ unI tsNetworkMagic) @@ -225,7 +225,7 @@ doListenToAcceptor TestSetup{..} (codecHandshake forwardingVersionCodec) timeLimits (cborTermVersionDataCodec forwardingCodecCBORTerm) - acceptableVersion + (HandshakeCallbacks acceptableVersion queryVersion) (simpleSingletonVersions ForwardingV_1 (ForwardingVersionData $ unI tsNetworkMagic) -- Taken from mainnet shelley genesis file. diff --git a/flake.lock b/flake.lock index 96c40b820dc..058c81a2521 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1685007716, - "narHash": "sha256-qVJdpmHWEkTdxemBWm1i8z6QHA/HerIkM5V2juCOMc0=", + "lastModified": 1685550653, + "narHash": "sha256-PC0QBZJmOhkYNeAfCqCpUM7qGNJId6NEdsapsIzEkXM=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "298b36e0985a3cca5ce4e28a59de8cca7d76c91b", + "rev": "31da3df2b4dfb5a19ca4dbd23e6279c892307ca2", "type": "github" }, "original": { diff --git a/nix/haskell.nix b/nix/haskell.nix index 4bf968d9dae..bb46dd832eb 100644 --- a/nix/haskell.nix +++ b/nix/haskell.nix @@ -175,6 +175,14 @@ let export CARDANO_NODE_SRC=${filteredProjectBase} ''; # cardano-testnet depends on cardano-node, cardano-cli, cardano-submit-api and some config files + packages.cardano-node.components.tests.cardano-node-test.preCheck = + let + # This define files included in the directory that will be passed to `H.getProjectBase` for this test: + filteredProjectBase = incl ../. mainnetConfigFiles; + in + '' + export CARDANO_NODE_SRC=${filteredProjectBase} + ''; packages.cardano-testnet.preCheck = let # This define files included in the directory that will be passed to `H.getProjectBase` for this test: diff --git a/trace-dispatcher/src/Cardano/Logging/Forwarding.hs b/trace-dispatcher/src/Cardano/Logging/Forwarding.hs index 670f983c704..3772d1fd09d 100644 --- a/trace-dispatcher/src/Cardano/Logging/Forwarding.hs +++ b/trace-dispatcher/src/Cardano/Logging/Forwarding.hs @@ -30,10 +30,10 @@ import Ouroboros.Network.Protocol.Handshake.Codec (cborTermVersionData codecHandshake, noTimeLimitsHandshake) import Ouroboros.Network.Protocol.Handshake.Type (Handshake) import Ouroboros.Network.Protocol.Handshake.Version (acceptableVersion, - simpleSingletonVersions) + queryVersion, simpleSingletonVersions) import Ouroboros.Network.Snocket (Snocket, MakeBearer, localAddressFromPath, localSnocket, makeLocalBearer) -import Ouroboros.Network.Socket (AcceptedConnectionsLimit (..), +import Ouroboros.Network.Socket (AcceptedConnectionsLimit (..), HandshakeCallbacks (..), SomeResponderApplication (..), cleanNetworkMutableState, connectToNode, newNetworkMutableState, nullNetworkConnectTracers, nullNetworkServerTracers, withServerNode) @@ -187,7 +187,7 @@ doConnectToAcceptor magic snocket makeBearer configureSocket address timeLimits timeLimits (cborTermVersionDataCodec forwardingCodecCBORTerm) nullNetworkConnectTracers - acceptableVersion + (HandshakeCallbacks acceptableVersion queryVersion) (simpleSingletonVersions ForwardingV_1 (ForwardingVersionData magic) @@ -248,7 +248,7 @@ doListenToAcceptor magic snocket makeBearer configureSocket address timeLimits (codecHandshake forwardingVersionCodec) timeLimits (cborTermVersionDataCodec forwardingCodecCBORTerm) - acceptableVersion + (HandshakeCallbacks acceptableVersion queryVersion) (simpleSingletonVersions ForwardingV_1 (ForwardingVersionData magic) diff --git a/trace-dispatcher/src/Cardano/Logging/Version.hs b/trace-dispatcher/src/Cardano/Logging/Version.hs index e891ed160df..e10619d5dba 100644 --- a/trace-dispatcher/src/Cardano/Logging/Version.hs +++ b/trace-dispatcher/src/Cardano/Logging/Version.hs @@ -16,7 +16,7 @@ import qualified Codec.CBOR.Term as CBOR import Ouroboros.Network.CodecCBORTerm import Ouroboros.Network.Magic -import Ouroboros.Network.Protocol.Handshake.Version (Accept (..), Acceptable (..)) +import Ouroboros.Network.Protocol.Handshake.Version (Accept (..), Acceptable (..), Queryable (..)) data ForwardingVersion = ForwardingV_1 @@ -49,6 +49,9 @@ instance Acceptable ForwardingVersionData where ++ show local ++ " /= " ++ show remote +instance Queryable ForwardingVersionData where + queryVersion _ = False + forwardingCodecCBORTerm :: ForwardingVersion -> CodecCBORTerm Text ForwardingVersionData forwardingCodecCBORTerm _ = CodecCBORTerm { encodeTerm, decodeTerm } where diff --git a/trace-dispatcher/trace-dispatcher.cabal b/trace-dispatcher/trace-dispatcher.cabal index 61360710612..6c7611b0abc 100644 --- a/trace-dispatcher/trace-dispatcher.cabal +++ b/trace-dispatcher/trace-dispatcher.cabal @@ -56,7 +56,7 @@ library , hostname , network , optparse-applicative-fork - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , ouroboros-network-api , ouroboros-network-framework , serialise @@ -147,7 +147,7 @@ test-suite trace-dispatcher-test , generic-data , hostname , optparse-applicative - , ouroboros-network + , ouroboros-network ^>= 0.8.1.0 , text , stm , tasty diff --git a/trace-forward/trace-forward.cabal b/trace-forward/trace-forward.cabal index 8785308bf2b..a1b4c8212f9 100644 --- a/trace-forward/trace-forward.cabal +++ b/trace-forward/trace-forward.cabal @@ -64,7 +64,7 @@ library , extra , io-classes , ouroboros-network-api >= 0.3 - , ouroboros-network-framework >= 0.5 + , ouroboros-network-framework >= 0.6 , serialise , stm , text