feat: add per-message checksum validation for gRPC ReadObject operations #3336
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.
Update gRPC ReadObject to use default hasher, and validate checksums of received messages.
Move validation logic from read to onResponse. This ensures the read side can never advance the read position by accident if checksum validation fails. Also move generation validation to onResponse so that all response validation is handled in a common location and manner. If validation fails, the error will be enqueued and observed by the read thread. When the errors is observed by the read thread, an additional stacktrace will be attached -- either by suppressed async exception, or wrapped exception depending on the type of error -- such that an application will be able to determine where the error was observed.
Update the test that previously validated that an IOException was raised if validation failed, to instead validate that a retry happens.