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.
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.