Skip to content

Commit

Permalink
Better error message for query utxo
Browse files Browse the repository at this point in the history
  • Loading branch information
newhoggy committed Mar 31, 2023
1 parent 38fd3b2 commit 49ac8da
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 4 deletions.
21 changes: 21 additions & 0 deletions cardano-api/src/Cardano/Api/IPC/NtcVersionOf.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module Cardano.Api.IPC.NtcVersionOf
( NtcVersionOf (..)
, MinNodeToClientVersion

-- *** Error types
, UnsupportedNtcVersionError(..)
) where

import Data.Eq (Eq)
import Text.Show (Show)
import Ouroboros.Network.NodeToClient.Version (NodeToClientVersion (..))

-- | The query 'a' is a versioned query, which means it requires the Node to support a minimum
-- Node-to-Client version.
class NtcVersionOf a where
ntcVersionOf :: a -> NodeToClientVersion

type MinNodeToClientVersion = NodeToClientVersion

data UnsupportedNtcVersionError = UnsupportedNtcVersionError !MinNodeToClientVersion !NodeToClientVersion
deriving (Eq, Show)
7 changes: 3 additions & 4 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ data ShelleyQueryCmdError
| ShelleyQueryCmdPoolStateDecodeError DecoderError
| ShelleyQueryCmdStakeSnapshotDecodeError DecoderError
| ShelleyQueryCmdUnsupportedNtcVersion !UnsupportedNtcVersionError

deriving Show

renderShelleyQueryCmdError :: ShelleyQueryCmdError -> Text
Expand Down Expand Up @@ -1094,12 +1093,12 @@ runQueryStakePools (AnyConsensusModeParams cModeParams) network mOutFile = OO.ru

let cMode = consensusModeOnly cModeParams

eInMode <- pure (toEraInMode era cMode)
& OO.onNothing (OO.throw $ ShelleyQueryCmdEraConsensusModeMismatch (AnyConsensusMode cMode) anyE)
eInMode <- toEraInMode era cMode
& OO.hoistMaybe (ShelleyQueryCmdEraConsensusModeMismatch (AnyConsensusMode cMode) anyE)

sbe <- getSbeInQuery_ $ cardanoEraStyle era

(queryExpr_ . QueryInEra eInMode $ QueryInShelleyBasedEra sbe QueryStakePools)
(queryExpr_ $ QueryInEra eInMode $ QueryInShelleyBasedEra sbe QueryStakePools)
& OO.onLeft (OO.throw . ShelleyQueryCmdEraMismatch)
)
& OO.catch @AcquireFailure (OO.throw . ShelleyQueryCmdAcquireFailure . toAcquiringFailure)
Expand Down
5 changes: 5 additions & 0 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ data ShelleyTxCmdError
| ShelleyTxCmdTxCertificatesValidationError TxCertificatesValidationError
| ShelleyTxCmdTxUpdateProposalValidationError TxUpdateProposalValidationError
| ShelleyTxCmdScriptValidityValidationError TxScriptValidityValidationError
| ShelleyTxCmdUnsupportedNtcVersion !UnsupportedNtcVersionError

renderShelleyTxCmdError :: ShelleyTxCmdError -> Text
renderShelleyTxCmdError err =
Expand Down Expand Up @@ -251,6 +252,10 @@ renderShelleyTxCmdError err =
Text.pack $ displayError e
ShelleyTxCmdScriptValidityValidationError e ->
Text.pack $ displayError e
ShelleyTxCmdUnsupportedNtcVersion (UnsupportedNtcVersionError minNtcVersion ntcVersion) ->
"Unsupported feature for the node-to-client protocol version.\n" <>
"This transaction requires at least " <> textShow minNtcVersion <> " but the node negotiated " <> textShow ntcVersion <> ".\n" <>
"Later node versions support later protocol versions (but development protocol versions are not enabled in the node by default)."

renderFeature :: TxFeature -> Text
renderFeature TxFeatureShelleyAddresses = "Shelley addresses"
Expand Down

0 comments on commit 49ac8da

Please sign in to comment.