filestore: use the same codes in ListRes and CorruptReferenceError.
License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>
Kevin Atkinson committed
Feb 6, 2017 at 15:54 UTC
1f2e174e6a989e57b6fe5f58c5487048f95249e3
2 files changed
+8
-26
filestore/fsrefstore.go
+7
-16
@@ -27,17 +27,8 @@ type FileManager struct {
27
root string
28
}
29
30
-type CorruptReferenceCode int
31
-
32
-const (
33
- OtherErr CorruptReferenceCode = 0
34
- FileError CorruptReferenceCode = 1
35
- FileMissing CorruptReferenceCode = 2
36
- FileChanged CorruptReferenceCode = 3
37
-)
38
-
30
type CorruptReferenceError struct {
40
- Code CorruptReferenceCode
31
+ Code Status
32
Err error
33
}
34
@@ -138,23 +129,23 @@ func (f *FileManager) readDataObj(c *cid.Cid, d *pb.DataObj) ([]byte, error) {
129
130
fi, err := os.Open(abspath)
131
if os.IsNotExist(err) {
141
- return nil, &CorruptReferenceError{FileMissing, err}
132
+ return nil, &CorruptReferenceError{StatusFileNotFound, err}
133
} else if err != nil {
143
- return nil, &CorruptReferenceError{FileError, err}
134
+ return nil, &CorruptReferenceError{StatusFileError, err}
135
}
136
defer fi.Close()
137
138
_, err = fi.Seek(int64(d.GetOffset()), os.SEEK_SET)
139
if err != nil {
149
- return nil, &CorruptReferenceError{FileError, err}
140
+ return nil, &CorruptReferenceError{StatusFileError, err}
141
}
142
143
outbuf := make([]byte, d.GetSize_())
144
_, err = io.ReadFull(fi, outbuf)
145
if err == io.EOF || err == io.ErrUnexpectedEOF {
155
- return nil, &CorruptReferenceError{FileChanged, err}
146
+ return nil, &CorruptReferenceError{StatusFileChanged, err}
147
} else if err != nil {
157
- return nil, &CorruptReferenceError{FileError, err}
148
+ return nil, &CorruptReferenceError{StatusFileError, err}
149
}
150
151
outcid, err := c.Prefix().Sum(outbuf)
@@ -163,7 +154,7 @@ func (f *FileManager) readDataObj(c *cid.Cid, d *pb.DataObj) ([]byte, error) {
154
}
155
156
if !c.Equals(outcid) {
166
- return nil, &CorruptReferenceError{FileChanged,
157
+ return nil, &CorruptReferenceError{StatusFileChanged,
158
fmt.Errorf("data in file did not match. %s offset %d", d.GetFilePath(), d.GetOffset())}
159
}
160
filestore/util.go
+1
-10
@@ -144,16 +144,7 @@ func mkListRes(c *cid.Cid, d *pb.DataObj, err error) *ListRes {
144
if err == ds.ErrNotFound || err == blockstore.ErrNotFound {
145
status = StatusKeyNotFound
146
} else if err, ok := err.(*CorruptReferenceError); ok {
147
- switch err.Code {
148
- case FileError:
149
- status = StatusFileError
150
- case FileMissing:
151
- status = StatusFileNotFound
152
- case FileChanged:
153
- status = StatusFileChanged
154
- default:
155
- status = StatusOtherError
156
- }
147
+ status = err.Code
148
} else {
149
status = StatusOtherError
150
}