services/horizon: Wrap invalid cursor in claimable balances in problem.P #3088
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.
PR Checklist
PR Structure
otherwise).
services/friendbot
, orall
ordoc
if the changes are broad or impact manypackages.
Thoroughness
.md
files, etc... affected by this change). Take a look in the
docs
folder for a given service,like this one.
Release planning
needed with deprecations, added features, breaking changes, and DB schema changes.
semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.
What
Wrap invalid cursor in claimable balances in
problem.P
Why
We do cursor validation, however, if there is an error we return a
plain error instead of a
problem.P
-- this causes horizon to handlethe error as a
500
instead of a400
.This fix moves cursor parsing to its own method and then use it in the
query handler to return a
problem.P
error which causes horizon toreturn the correct response.
I opted to create a new error instead of returning the inner error
since it exposes low-level details which are not relevant for the API
user, for example:
Invalid cursor - first value should be higher than 0: strconv.ParseInt: parsing \"\": invalid syntax
Invalid cursor - second value should be a valid claimable balance id: xdr:decode: switch '67' is not valid enum value for union
Fixes #3085.
Known limitations