mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-29 01:12:24 +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:
@ -65,6 +65,18 @@ test_expect_success "ipfs cat error output the same" '
|
|||||||
test_cmp sharded_err unsharded_err
|
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() {
|
test_add_large_dir_v1() {
|
||||||
exphash="$1"
|
exphash="$1"
|
||||||
test_expect_success "ipfs add (CIDv1) on very large directory succeeds" '
|
test_expect_success "ipfs add (CIDv1) on very large directory succeeds" '
|
||||||
|
@ -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)
|
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
|
var c child
|
||||||
if len(lnk.Name) == ds.maxpadlen {
|
if len(lnk.Name) == ds.maxpadlen {
|
||||||
|
nd, err := lnk.GetNode(ctx, ds.dserv)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
pbnd, ok := nd.(*dag.ProtoNode)
|
pbnd, ok := nd.(*dag.ProtoNode)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, dag.ErrNotProtobuf
|
return nil, dag.ErrNotProtobuf
|
||||||
|
Reference in New Issue
Block a user