[SDK] Go KeepClient offers a "read block" API that recovers from transmission errors by attempting alternate servers.
As an optimization, the Go keep client uses
HashCheckingReader which computes the hash incrementally and only reports an error when the entire reader has been consumed. If the 1st server has a corrupt block, but a 2nd server has a valid block (or something else goes wrong while reading from the 1st server), it will fail to find the valid block on the second server, because the block reader has already been returned to the caller.
The API should be adjusted to provide a safer default behavior as well the existing streaming mode.
#2 Updated by Tom Clegg about 6 years ago
- Tracker changed from Bug to Feature
- Subject changed from [SDK] Go KeepClient will not try a different keep server on block hash mismatch to [SDK] Go KeepClient offers a "read block" API that recovers from transmission errors by attempting alternate servers.
- Description updated (diff)