1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-27 16:07:42 +08:00

Merge pull request #4884 from ipfs/fix/lazy-hamt

don't resolve children unnecessarily when listing a sharded directory
This commit is contained in:
Whyrusleeping
2018-03-29 16:37:39 -07:00
committed by GitHub
2 changed files with 17 additions and 5 deletions

View File

@ -65,6 +65,18 @@ test_expect_success "ipfs cat error output the same" '
test_cmp sharded_err unsharded_err
'
test_expect_success "'ipfs ls --resolve-type=false' admits missing block" '
ipfs ls "$SHARDED" | head -1 > first_file &&
read -r HASH _ NAME <first_file &&
ipfs pin rm "$SHARDED" "$UNSHARDED" && # To allow us to remove the block
ipfs block rm "$HASH" &&
test_expect_code 1 ipfs cat "$SHARDED/$NAME" &&
test_expect_code 1 ipfs ls "$SHARDED" &&
ipfs ls --resolve-type=false "$SHARDED" | sort > missing_out &&
test_cmp sharded_out missing_out
'
test_add_large_dir_v1() {
exphash="$1"
test_expect_success "ipfs add (CIDv1) on very large directory succeeds" '

View File

@ -289,13 +289,13 @@ func (ds *Shard) loadChild(ctx context.Context, i int) (child, error) {
return nil, fmt.Errorf("invalid link name '%s'", lnk.Name)
}
nd, err := lnk.GetNode(ctx, ds.dserv)
if err != nil {
return nil, err
}
var c child
if len(lnk.Name) == ds.maxpadlen {
nd, err := lnk.GetNode(ctx, ds.dserv)
if err != nil {
return nil, err
}
pbnd, ok := nd.(*dag.ProtoNode)
if !ok {
return nil, dag.ErrNotProtobuf