Skip to content

Commit

Permalink
fix: slightly reduce memory usage when walking large directory trees
Browse files Browse the repository at this point in the history
This commit was moved from ipfs/go-merkledag@663be66
  • Loading branch information
Stebalien committed Aug 1, 2019
1 parent 185c77a commit 496f766
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions ipld/merkledag/merkledag.go
Original file line number Diff line number Diff line change
Expand Up @@ -462,8 +462,8 @@ func parallelWalkDepth(ctx context.Context, getLinks GetLinks, root cid.Cid, vis
depth int
}

feed := make(chan *cidDepth)
out := make(chan *linksDepth)
feed := make(chan cidDepth)
out := make(chan linksDepth)
done := make(chan struct{})

var visitlk sync.Mutex
Expand Down Expand Up @@ -505,7 +505,7 @@ func parallelWalkDepth(ctx context.Context, getLinks GetLinks, root cid.Cid, vis
return
}

outLinks := &linksDepth{
outLinks := linksDepth{
links: links,
depth: depth + 1,
}
Expand All @@ -526,10 +526,10 @@ func parallelWalkDepth(ctx context.Context, getLinks GetLinks, root cid.Cid, vis
defer close(feed)

send := feed
var todoQueue []*cidDepth
var todoQueue []cidDepth
var inProgress int

next := &cidDepth{
next := cidDepth{
cid: root,
depth: 0,
}
Expand All @@ -542,22 +542,22 @@ func parallelWalkDepth(ctx context.Context, getLinks GetLinks, root cid.Cid, vis
next = todoQueue[0]
todoQueue = todoQueue[1:]
} else {
next = nil
next = cidDepth{}
send = nil
}
case <-done:
inProgress--
if inProgress == 0 && next == nil {
if inProgress == 0 && !next.cid.Defined() {
return nil
}
case linksDepth := <-out:
for _, lnk := range linksDepth.links {
cd := &cidDepth{
cd := cidDepth{
cid: lnk.Cid,
depth: linksDepth.depth,
}

if next == nil {
if !next.cid.Defined() {
next = cd
send = feed
} else {
Expand Down

0 comments on commit 496f766

Please sign in to comment.