Opened at 2011-10-18T18:04:30Z
Last modified at 2013-07-17T13:24:16Z
#1566 closed defect
if a stored share has a corrupt header, other shares held by that server for the file should still be accessible to clients — at Version 2
Reported by: | davidsarah | Owned by: | davidsarah |
---|---|---|---|
Priority: | major | Milestone: | 1.10.1 |
Component: | code-storage | Version: | 1.9.0b1 |
Keywords: | corruption preservation storage | Cc: | |
Launchpad Bug: |
Description (last modified by davidsarah)
When a storage server receives a remote_get_buckets or remote_slot_testv_and_readv_and_writev request, it will try to create share objects for each of the shares it stores under that SI that are wanted by the client. If any of those shares have a corrupt header (typically resulting in a UnknownMutableContainerVersionError, UnknownImmutableContainerVersionError, or struct.error from the share class constructor), the whole request will fail, even though the server might hold other shares that are not corrupted.
Unfortunately there is no way in the current storage protocol to report success for some shares and a failure for others. The options are:
- the status quo -- no shares in the shareset are accessible;
- shares with corrupt headers are ignored on read requests;
- if all shares are corrupted then report one of the errors, but if only some shares in a shareset have corrupted headers, ignore them and allow access to the rest.
I found this bug when working on the branch for #999, but I think it also applies to trunk.
Change History (2)
comment:1 Changed at 2011-10-18T18:14:46Z by davidsarah
- Owner set to davidsarah
- Status changed from new to assigned
comment:2 Changed at 2011-10-18T18:16:23Z by davidsarah
- Description modified (diff)
I will write a test.
[posted description as a comment by mistake]