Enhance error handling and reporting for app data deserialization#4213
Merged
jmg-duarte merged 5 commits intomainfrom Mar 2, 2026
Merged
Enhance error handling and reporting for app data deserialization#4213jmg-duarte merged 5 commits intomainfrom
jmg-duarte merged 5 commits intomainfrom
Conversation
76debfd to
beeb124
Compare
Contributor
There was a problem hiding this comment.
Code Review
This PR improves deserialization error handling by replacing #[serde(untagged)] with more explicit logic, which is a sound approach. The changes are well-implemented and achieve the stated goal of providing better error messages. The suggestion to simplify the implementation for PartnerFees by leveraging the serde_with crate is valid and would reduce code complexity.
This file contains hidden or 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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Description
When users provide app data with wrong partner fees, we get less than good error reporting, for example:
This is, not only a pain for us to debug but also for the user:
This PR changes the deserialization mechanism in a "non-obvious" way to provide proper error messages, as untagged enums stand very much against them.
For example floating point bps are unsupported, they returned the previous error; after this PR they return:
Changes
How to test
Unit tests to ensure nothing broke + playground to test the error