Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
51bf1b6c
提交
51bf1b6c
authored
3月 04, 2018
作者:
Jakub Sztandera
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Significanly improve GC UX with verifcid
License: MIT Signed-off-by:
Jakub Sztandera
<
kubuxu@protonmail.ch
>
上级
a9417a14
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
35 行增加
和
1 行删除
+35
-1
pin.go
core/commands/pin.go
+10
-0
gc.go
pin/gc/gc.go
+25
-1
没有找到文件。
core/commands/pin.go
浏览文件 @
51bf1b6c
...
...
@@ -17,6 +17,7 @@ import (
path
"github.com/ipfs/go-ipfs/path"
resolver
"github.com/ipfs/go-ipfs/path/resolver"
pin
"github.com/ipfs/go-ipfs/pin"
"github.com/ipfs/go-ipfs/thirdparty/verifcid"
uio
"github.com/ipfs/go-ipfs/unixfs/io"
u
"gx/ipfs/QmNiJuT8Ja3hMVpBHXv3Q6dwmperaQ6JjLtpMQgMCD7xvx/go-ipfs-util"
...
...
@@ -608,6 +609,15 @@ func pinVerify(ctx context.Context, n *core.IpfsNode, opts pinVerifyOpts) <-chan
return
status
}
if
err
:=
verifcid
.
ValidateCid
(
root
);
err
!=
nil
{
status
:=
PinStatus
{
Ok
:
false
}
if
opts
.
explain
{
status
.
BadNodes
=
[]
BadNode
{
BadNode
{
Cid
:
key
,
Err
:
err
.
Error
()}}
}
visited
[
key
]
=
status
return
status
}
links
,
err
:=
getLinks
(
ctx
,
root
)
if
err
!=
nil
{
status
:=
PinStatus
{
Ok
:
false
}
...
...
pin/gc/gc.go
浏览文件 @
51bf1b6c
...
...
@@ -5,11 +5,13 @@ import (
"context"
"errors"
"fmt"
"strings"
bserv
"github.com/ipfs/go-ipfs/blockservice"
offline
"github.com/ipfs/go-ipfs/exchange/offline"
dag
"github.com/ipfs/go-ipfs/merkledag"
pin
"github.com/ipfs/go-ipfs/pin"
"github.com/ipfs/go-ipfs/thirdparty/verifcid"
dstore
"gx/ipfs/QmPpegoMqhAEqjncrzArm7KVWAkCm78rqL2DPuNjhPrshg/go-datastore"
logging
"gx/ipfs/QmRb5jh8z2E8hMGN2tkvs1yHynUanqnZ3UeKwgN1i9P1F8/go-log"
...
...
@@ -129,12 +131,34 @@ func GC(ctx context.Context, bs bstore.GCBlockstore, dstor dstore.Datastore, pn
// adds them to the given cid.Set, using the provided dag.GetLinks function
// to walk the tree.
func
Descendants
(
ctx
context
.
Context
,
getLinks
dag
.
GetLinks
,
set
*
cid
.
Set
,
roots
[]
*
cid
.
Cid
)
error
{
verifyGetLinks
:=
func
(
ctx
context
.
Context
,
c
*
cid
.
Cid
)
([]
*
ipld
.
Link
,
error
)
{
err
:=
verifcid
.
ValidateCid
(
c
)
if
err
!=
nil
{
return
nil
,
err
}
return
getLinks
(
ctx
,
c
)
}
verboseCidError
:=
func
(
err
error
)
error
{
if
strings
.
Contains
(
err
.
Error
(),
verifcid
.
ErrBelowMinimumHashLength
.
Error
())
||
strings
.
Contains
(
err
.
Error
(),
verifcid
.
ErrPossiblyInsecureHashFunction
.
Error
())
{
err
=
fmt
.
Errorf
(
"
\"
%s
\"\n
Please run 'ipfs pin verify'"
+
" to list insecure hashes. If you want to read them,"
+
" please downgrade your go-ipfs to 0.4.13
\n
"
,
err
)
log
.
Error
(
err
)
}
return
err
}
for
_
,
c
:=
range
roots
{
set
.
Add
(
c
)
// EnumerateChildren recursively walks the dag and adds the keys to the given set
err
:=
dag
.
EnumerateChildren
(
ctx
,
getLinks
,
c
,
set
.
Visit
)
err
:=
dag
.
EnumerateChildren
(
ctx
,
verifyGetLinks
,
c
,
set
.
Visit
)
if
err
!=
nil
{
err
=
verboseCidError
(
err
)
return
err
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论