-
Notifications
You must be signed in to change notification settings - Fork 15
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
Fix error wrapping order #835
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cyberphysic4l
approved these changes
Mar 14, 2024
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.
Look good. Just a few small suggestions.
pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go
Outdated
Show resolved
Hide resolved
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix error wrapping order.
Fixes #798.
See iotaledger/iota.go#709 for the rationale of the changes.
Quick Guide
ierrors.Wrap
orierrors.Wrapf
. This prepends a message. For instance:which gives us an error like
iotago.ErrBlockIssuerNotExpired
), you typically want to append a message with more details usingierrors.WithMessage
orierrors.WithMessagef
. For instance:Generally, in my opinion, the goal of the error message is that the further you read into the message, the more details you will see. In the above example you see an increasing level of detail (
transaction level -> output level -> feature level
). This makes it easy to understand that the error was a failed transaction, that an account output in the transaction was the culprit and that within that account, the block issuer feature was not expired.To summarize:
ierrors.Wrap
for that.ierrors.WithMessage
for that.Join
As mentioned in the iota.go PR
ierrors.Join
is not what we typically want but we should make a decision if we use the style in iota.go, change howierrors.Join
works or add a new API like maybeierrors.WithError
. That's why I did not restyle the errors in iota-core because it might be unnecessary work and leaving the currentierrors.Join
in place makes it easier to search and replace later than the equivalent usingWithMessagef
and%w
.