From e06436d0904d3feb95e0e87730c6dd073425d79c Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Tue, 27 Mar 2018 15:01:32 -0700 Subject: [PATCH 1/2] don't resolve children unnecessarily when listing a sharded directory We only need to get the child if it's a shard. License: MIT Signed-off-by: Steven Allen --- unixfs/hamt/hamt.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/unixfs/hamt/hamt.go b/unixfs/hamt/hamt.go index 70c0b371c36..72a0080668e 100644 --- a/unixfs/hamt/hamt.go +++ b/unixfs/hamt/hamt.go @@ -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 From ee6c95c22e79507a71a6062965deddf4601e2c6b Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Tue, 27 Mar 2018 15:38:57 -0700 Subject: [PATCH 2/2] test listing a sharded directory with a missing block. License: MIT Signed-off-by: Steven Allen --- test/sharness/t0260-sharding.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/sharness/t0260-sharding.sh b/test/sharness/t0260-sharding.sh index 2556272e2c7..d7c275914aa 100755 --- a/test/sharness/t0260-sharding.sh +++ b/test/sharness/t0260-sharding.sh @@ -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 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" '