Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
886a6fe1
提交
886a6fe1
authored
2月 03, 2017
作者:
Kevin Atkinson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
filestore: be more specific when there is a problem reading the backing file.
License: MIT Signed-off-by:
Kevin Atkinson
<
k@kevina.org
>
上级
13f617d1
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
43 行增加
和
15 行删除
+43
-15
fsrefstore.go
filestore/fsrefstore.go
+22
-7
util.go
filestore/util.go
+21
-8
没有找到文件。
filestore/fsrefstore.go
浏览文件 @
886a6fe1
...
...
@@ -27,8 +27,18 @@ type FileManager struct {
root
string
}
type
CorruptReferenceCode
int
const
(
OtherErr
CorruptReferenceCode
=
0
FileError
CorruptReferenceCode
=
1
FileMissing
CorruptReferenceCode
=
2
FileChanged
CorruptReferenceCode
=
3
)
type
CorruptReferenceError
struct
{
Err
error
Code
CorruptReferenceCode
Err
error
}
func
(
c
CorruptReferenceError
)
Error
()
string
{
...
...
@@ -127,20 +137,24 @@ func (f *FileManager) readDataObj(c *cid.Cid, d *pb.DataObj) ([]byte, error) {
abspath
:=
filepath
.
Join
(
f
.
root
,
p
)
fi
,
err
:=
os
.
Open
(
abspath
)
if
err
!=
nil
{
return
nil
,
&
CorruptReferenceError
{
err
}
if
os
.
IsNotExist
(
err
)
{
return
nil
,
&
CorruptReferenceError
{
FileMissing
,
err
}
}
else
if
err
!=
nil
{
return
nil
,
&
CorruptReferenceError
{
FileError
,
err
}
}
defer
fi
.
Close
()
_
,
err
=
fi
.
Seek
(
int64
(
d
.
GetOffset
()),
os
.
SEEK_SET
)
if
err
!=
nil
{
return
nil
,
&
CorruptReferenceError
{
err
}
return
nil
,
&
CorruptReferenceError
{
FileError
,
err
}
}
outbuf
:=
make
([]
byte
,
d
.
GetSize_
())
_
,
err
=
io
.
ReadFull
(
fi
,
outbuf
)
if
err
!=
nil
{
return
nil
,
&
CorruptReferenceError
{
err
}
if
err
==
io
.
EOF
||
err
==
io
.
ErrUnexpectedEOF
{
return
nil
,
&
CorruptReferenceError
{
FileChanged
,
err
}
}
else
if
err
!=
nil
{
return
nil
,
&
CorruptReferenceError
{
FileError
,
err
}
}
outcid
,
err
:=
c
.
Prefix
()
.
Sum
(
outbuf
)
...
...
@@ -149,7 +163,8 @@ func (f *FileManager) readDataObj(c *cid.Cid, d *pb.DataObj) ([]byte, error) {
}
if
!
c
.
Equals
(
outcid
)
{
return
nil
,
&
CorruptReferenceError
{
fmt
.
Errorf
(
"data in file did not match. %s offset %d"
,
d
.
GetFilePath
(),
d
.
GetOffset
())}
return
nil
,
&
CorruptReferenceError
{
FileChanged
,
fmt
.
Errorf
(
"data in file did not match. %s offset %d"
,
d
.
GetFilePath
(),
d
.
GetOffset
())}
}
return
outbuf
,
nil
...
...
filestore/util.go
浏览文件 @
886a6fe1
...
...
@@ -16,12 +16,12 @@ import (
type
Status
int32
const
(
StatusOk
Status
=
0
StatusFileError
Status
=
10
// Backing File Error
//
StatusFileNotFound Status = 11 // Backing File Not Found
//
StatusFileChanged Status = 12 // Contents of the file changed
StatusOtherError
Status
=
20
// Internal Error, likely corrupt entry
StatusKeyNotFound
Status
=
30
StatusOk
Status
=
0
StatusFileError
Status
=
10
// Backing File Error
StatusFileNotFound
Status
=
11
// Backing File Not Found
StatusFileChanged
Status
=
12
// Contents of the file changed
StatusOtherError
Status
=
20
// Internal Error, likely corrupt entry
StatusKeyNotFound
Status
=
30
)
func
(
s
Status
)
String
()
string
{
...
...
@@ -30,6 +30,10 @@ func (s Status) String() string {
return
"ok"
case
StatusFileError
:
return
"error"
case
StatusFileNotFound
:
return
"no-file"
case
StatusFileChanged
:
return
"changed"
case
StatusOtherError
:
return
"ERROR"
case
StatusKeyNotFound
:
...
...
@@ -139,8 +143,17 @@ func mkListRes(c *cid.Cid, d *pb.DataObj, err error) *ListRes {
if
err
!=
nil
{
if
err
==
ds
.
ErrNotFound
||
err
==
blockstore
.
ErrNotFound
{
status
=
StatusKeyNotFound
}
else
if
_
,
ok
:=
err
.
(
*
CorruptReferenceError
);
ok
{
status
=
StatusFileError
}
else
if
err
,
ok
:=
err
.
(
*
CorruptReferenceError
);
ok
{
switch
err
.
Code
{
case
FileError
:
status
=
StatusFileError
case
FileMissing
:
status
=
StatusFileNotFound
case
FileChanged
:
status
=
StatusFileChanged
default
:
status
=
StatusOtherError
}
}
else
{
status
=
StatusOtherError
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论