fix for storing uint64 values as int64 in db #219
Merged
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.
Dora fails and gets stuck when trying to store uint64 values with the highest bit set into db.
This was previously not a problem, but with withdrawal requests there is now a way to put arbitrary numbers into requests, so dora needs to be prepared to handle those high values.
The background of this limitation is, that values are stored as signed 64 bit number in db, so it can only handle the lower half of the uint64 range.
To get around that limitation, the uint64 values are now converted to the int64 range for storing in db,
That means:
uint64(0) -> int64.MinValue
uint64.MaxValue -> int64.MaxValue
With this value translation, we can store big uint64 to the db and still filter based on min/max values, as the order of values within the range keeps stable.