Skip to content

Commit

Permalink
Merge pull request ipfs#45 from ipfs/fix/walk-memory-usage
Browse files Browse the repository at this point in the history
fix: slightly reduce memory usage when walking large directory trees
  • Loading branch information
Stebalien authored Aug 1, 2019
2 parents 2442fea + 663be66 commit 654ee69
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions 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 654ee69

Please sign in to comment.