-
Notifications
You must be signed in to change notification settings - Fork 82
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
Clean up ibc-apps
errors
#1318
Clean up ibc-apps
errors
#1318
Conversation
ics20-transfer
errors
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## error-handling #1318 +/- ##
===================================================
+ Coverage 0 66.99% +66.99%
===================================================
Files 0 227 +227
Lines 0 23451 +23451
===================================================
+ Hits 0 15712 +15712
- Misses 0 7739 +7739 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are now getting a better sense of what exact errors can exist in the system. Nice clean-up!
I requested some changes on ICS-20 TokenTransferError
, and most of these also apply to ICS-721 NftTransferError
. Although I didn’t add comments there, you can apply the same updates.
@Farhad-Shabani A broader question. With an error variant like this one: /// invalid URI: `{uri}`, validation error: `{validation_error}`
InvalidUri {
uri: String,
validation_error: http::uri::InvalidUri,
}, it's not clear whether the wrapped /// invalid URI: `{0}`
InvalidUri(String), Do you have thoughts on this? |
I’m actually leaning towards something between: /// invalid URI with error: `{0}`
InvalidUri(http::uri::InvalidUri), Which is more like the way we handle e.g. By the way, I think it would be a good idea to briefly document our error definition convention before finalizing these PRs. Any kind of variations can be clarified there, if that makes sense to you. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All set from my end.
Let’s merge once applied changes here in basecoin-rs.
* Clean up `ibc-apps` errors (#1318) * Clean up ics20-transfer error * Clean up NftTransfer error * Incorporate PR feedback * Remove redundant TODO comment * Simplify NftTransferError variant * Add TODO reminder * Clean up `ibc-core` and `ibc-clients` error types (#1317) * Clean up pass of ClientError type * Clean up pass of ics24 errors * Clean up pass of ics23 errors * Clean up pass of ics07 errors * Clean up ChannelError type * Clean up PacketError type * Better organize error variants * cargo nightly fmt * Update error variant in integration tests * Fix ics23 tests * Fix typo in doc comment * Update cw-check Cargo.lock * Clean up ics08 error * Cargo nightly fmt * Change single-field error variants to tuple structs * Propogate error variant changes * Propogate error variant changes * Clean up PacketError type * Clean up IdentifierError type * Clean up ics26 RouterError * Clean up ics03 ConnectionError * Fix error variant naming * Fix error variant naming * Remove redundant Other error variant * Clarify tendermint client error naming * Rename tendermint client Error to TendermintClientError * Rename wasm light client Error to WasmClientError * Rename ics25-handler Error to HandlerError * Remove unused HandlerError * Remove TendermintClientError::InvalidHeader error for more specific variant * Rename LightClientVerifierError variant to FailedToVerifyHeader * Rename ConsensusStateTimestampGteTrustingPeriod to InsufficientTrustingPeriod * Remove redundant ChannelError::FailedToParseSequence variant * Rename ChannelError::FailedChannelVerification to FailedProofVerification * Replace incorrect usages of FailedPacketVerification * Define From<CommitmentError> for ClientError impl * Add IdentifierError::FailedToParse variant * Replace InvalidPrefix error usage * Fix doc comment typo * Improve ChannelError variant names * Add PacketError::InvalidPathPrefix variant * Remove unnecessary PacketError variant * Add error variants used by basecoin * nit: remove unnecessary map_err in verify_(non_)membership * imp: define EmptyCommitmentRoot * nit: remove MissingHostHeight * fix: remove unnecessary map_err(PacketError::Channel) * Remove a TODO --------- Co-authored-by: Farhad Shabani <[email protected]> * Clean up `QueryError` and `RelayerError` types (#1321) * Clean up ibc-query QueryError type * Clean up ibc-testkit RelayerError * Clean up ibc-testkit RelayerError * Change wording of a doc comment * Remove RelayerError * Consolidate decoding-related errors into new `DecodingError` type (#1325) * Define DecodingError in ibc-primitives * Utilize DecodingError in ics721 * Start using DecodingError in ClientError * Define StatusError type * Wire up StatusError * Wiring up DecodingError * Add DecodingError to RouterError * Remove unused From impl * Change format of an import * Change format of an import * Change format of an import * Move DecodingError into ics24 * Cargo nightly fmt * Use DecodingError in more places * cargo fmt * cargo fmt * Update cw-check Cargo.lock * Add necessary wasm-client feature attribute * Move InvalidUri error variant back to NftTransferError * Regenerate cw hcheck cargo.lock * Add serde feature attribute * Remove ClientError::InvalidClientIdentifier error variant in favor of DecodingError::InvalidIdentifier * Add derive_more::From on NftTransferError * Stashing changes * Revert "Add derive_more::From on NftTransferError" This reverts commit 234ebee. * Remove RouterError::UnknownMessageTypeUrl * Add derive_more::From on TokenTransferError * Add derive_more to NftTransferError * Remove tendermint-proto dependency from ibc-primitives * Remove StatusError * Remove unnecessary ClientError::Decoding wrappings * Clean up TendermintClientError * Regenerate cw-check cargo.lock * taplo fmt * Apply PR feedback * Use ibc_proto::Error type instead of tendermint_proto::Error * Change FailedToParseType fields to make them more clear * Revert InvalidTrace and InvalidCoin TokenTransferError variants * Remove NftTransferError variants in favor of DecodingError::InvalidJson * cargo fmt * Regenerate cw-check cargo.lock * Separate out error variants that need to be moved to host-relevant errors * Consolidate TendermintClientError decoding errors * Consolidate Connection and Packet decoding errors * Remove WasmClientError * Consolidate Identifier variant naming * Remove HostError annotations in doc comments * Consolidate CommitmentError variants * Consolidate ConnectionError variants * Revert some CommitmentError variants * Change TryFrom<Any> for MsgEnvelope Error type to DecodingError * Remove ConnectionError::Identifier variant in favor of DecodingError::Identifier * Remove ChannelError::Identifier variant in favor of DecodingError::Identifier * Remove PacketError::Identifier variant in favor of DecodingError::Identifier * Revert TokenTransferError FailedToDeserializeAck and FailedToDeserializePacketData * Revert NftTransferError FailedToDeserializeAck and FailedToDeserializePacketData * Revert ics20 and ics721 on_recv_packet_execute impls * Remove additional Identifier error variants * Add TendermintClientError::InsufficientMisbehaviourHeaderHeight variant * Implement From<IdentifierError> for ClientError and ConnectionError * Incorporate PR feedback * Change TryFrom<RawConsensusState> for ConsensusState error to DecodingError * Remove RouterError::Decoding variant * Revert AcknowledgementStatus tests * Cargo fmt * Fix test_ack_de * Fix typo in doc comment * Fix test_ack_de * Fix test_ack_de * fix: revert nft721 on module errors * fix: remove Identifier variant from few more enums * fix: remove unused tendermint-proto dep * chore: update Cargo.lock --------- Co-authored-by: Farhad Shabani <[email protected]> * imp(ibc-apps): migrate to `DecodingError` in `TryFrom` conversions (#1335) * imp: migrate to DecodingError in TryFrom conversions, ibc-apps * imp: apply on TryFrom<RawPacketData> * fix: missing import * fix: apply review comments * imp: move away from From<Infallible> * Define `HostError` type (#1331) * Define DecodingError in ibc-primitives * Utilize DecodingError in ics721 * Start using DecodingError in ClientError * Define StatusError type * Wire up StatusError * Wiring up DecodingError * Add DecodingError to RouterError * Remove unused From impl * Change format of an import * Change format of an import * Change format of an import * Move DecodingError into ics24 * Cargo nightly fmt * Use DecodingError in more places * cargo fmt * cargo fmt * Update cw-check Cargo.lock * Add necessary wasm-client feature attribute * Move InvalidUri error variant back to NftTransferError * Regenerate cw hcheck cargo.lock * Add serde feature attribute * Remove ClientError::InvalidClientIdentifier error variant in favor of DecodingError::InvalidIdentifier * Add derive_more::From on NftTransferError * Stashing changes * Revert "Add derive_more::From on NftTransferError" This reverts commit ea9c83d. * Remove RouterError::UnknownMessageTypeUrl * Add derive_more::From on TokenTransferError * Add derive_more to NftTransferError * Remove tendermint-proto dependency from ibc-primitives * Remove StatusError * Remove unnecessary ClientError::Decoding wrappings * Clean up TendermintClientError * Regenerate cw-check cargo.lock * taplo fmt * Apply PR feedback * Use ibc_proto::Error type instead of tendermint_proto::Error * Change FailedToParseType fields to make them more clear * Revert InvalidTrace and InvalidCoin TokenTransferError variants * Remove NftTransferError variants in favor of DecodingError::InvalidJson * cargo fmt * Regenerate cw-check cargo.lock * Separate out error variants that need to be moved to host-relevant errors * Consolidate TendermintClientError decoding errors * Consolidate Connection and Packet decoding errors * Remove WasmClientError * Consolidate Identifier variant naming * Remove HostError annotations in doc comments * Consolidate CommitmentError variants * Consolidate ConnectionError variants * Revert some CommitmentError variants * Change TryFrom<Any> for MsgEnvelope Error type to DecodingError * Define HostError type * Rename ContextError to HandlerError * Change `pick_version` impl * Update ValidationContext trait methods to return HostError type * Rename HandlerError variants throughout the code base * Remove match arm that is no longer relevant * Change ClientValidationContext trait methods to return HostErrors * Change TokenTransferValidationContext and NftTransferValidationContext trait error types * Updating validation contexts to return HostError types * Map errors to HostError variants * Update ValidateSelfClientContext trait * Update Upgrade validation and execution contexts to return HostErrors * Fix merge conflicts * Fix merge conflicts * Revert execute_upgrade_client_proposal error type to UpgradeClientError * cargo fmt * Remove unused alloc::string::ToString * Import ibc_core::primitives::prelude into handler/mod.rs * cargo fmt * Attempt to fix failing testkit test * Remove RouterError::UnknownPort variant * Remove some uses of ClientError::Other variants * Fix recv_packet_validate_happy_path test * Fix conn_open_ack_no_connection test * cargo fmt * fix conn_open_ack_no_connection test without adding new HostError variant * fix test_create_client_try_from test * Remove unnecessary import * Fix test_create_client_try_from * cargo fmt * fix: remove now unneeded with_packet_receipt * fix: revert unintended ack status changes in ICS-20 * fix: revert unintended ack status changes in ICS-721 * fix: remove unintended tendermint-proto * fix: update Cargo.lock for cw-check * Fix lingering issues from merge conflicts * Fix lingering issues from merge conflicts * Remove From<Infallible> for ClientError impl * cargo fmt * Rename HostError InvalidData and MissingData variants * Define helper functions for HostError * Use newly-define HostError helpers * Remove HostError::AppModule variant * Prune some HostError variants * Consolidate some HostError variants * Remove HostError::NonexistentType variant * Remove HostError::UnexpectedState variant * Consolidate HostError::UnknownResource variant * cargo fmt * Remove unnecessary to_string calls * Revert `pick_version` method's documentation * Remove some more HostError variants * Remove From<DecodingError> for StatusValue impl * Fix AcknowledgementStatus tests * fix: revert errors in ICS721 callbacks * Change references to HandlerError in docs to refer to HostError where appropriate --------- Signed-off-by: Sean Chen <[email protected]> Co-authored-by: Farhad Shabani <[email protected]> * Consolidate `PacketError` and `ChannelError` (#1343) * Merge PacketError variants into ChannelError * cargo nightly fmt * Consolidate ChanelError verification variants * Convert ics04 try_from impls to use DecodingError * Add changelog entry * Incorporate some PR feedback * Remove ChannelError::MissingProof and MissingProofHeight error variants * Add `HostError` contexts to module-level error types (#1345) * Add ConnectionError::Host variant and clean up some other variants * Migrate some ics03 handlers to return HostErrors * Revert "Migrate some ics03 handlers to return HostErrors" This reverts commit f48a1a6. * Add HostError variant to ChannelError * Remove HandlerError::Host variant * Map client handler HostErrors to ClientError::Host * Revert "Map client handler HostErrors to ClientError::Host" This reverts commit 247be8a. * Change ics02-client handlers to return ClientError * Change ics03-connection handlers to return ConnectionError * Change ics04-channel handlers to return ChannelError * Make necessary changes in ics25 dispatch * imp: misc improvements and fixes * imp: use derive_more::From for ChannelError * fix: rename InvalidClientState under ConnectionError * nit: remove redundant import --------- Co-authored-by: Farhad Shabani <[email protected]> * Clean up generic String variants in error types (#1347) * Clean up most instances of ClientError::Other * Rename CommitmentError variants * Clean up some DecodingError calls * Incorporate some PR feedback * Incorporate more PR feedback * A bunch of DecodingError associated type changes * Eliminate a bunch of redundant map_err calls * cargo fmt * Fix ics23 spec tests * Fix a typo * Clean up some error messages * Consolidate MismatchedTypeUrl and MismatchedEventKind variants * Miscellaneous clean up * cargo fmt * Remove unused CommitmentError variants * Clean up errors to match ADR description * More clean up * Add changelog entry * fix: remove now unused HeightError * Clean up TimestampError --------- Co-authored-by: Farhad Shabani <[email protected]> * nitpicks * fix: remove ibc-core-connection-types dep under ICS-04 * fix: propogate errors in refund_packet_nft_execute * fix: revert few errors in ICS-20 module callbacks * imp: use if let for type_url matches * nit: minor improvements * fix: use RouterError in case of ModuleID not found * chore: add changelog * chore: add changelog for #1319 --------- Signed-off-by: Sean Chen <[email protected]> Co-authored-by: Farhad Shabani <[email protected]>
Part of: #1316
Description
PR author checklist:
unclog
.docs/
).Reviewer checklist:
Files changed
in the GitHub PR explorer.