From: Matt Joiner Date: Sat, 21 Nov 2020 02:42:42 +0000 (+1100) Subject: piece resource storage: Delete incomplete chunks concurrently after writing complete... X-Git-Tag: v1.19.0~12 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=388e6899a15b6cef0338408a65548362e7a1fee1;p=btrtrc.git piece resource storage: Delete incomplete chunks concurrently after writing complete piece --- diff --git a/storage/piece_resource.go b/storage/piece_resource.go index 02c1e7e8..04566515 100644 --- a/storage/piece_resource.go +++ b/storage/piece_resource.go @@ -6,6 +6,7 @@ import ( "path" "sort" "strconv" + "sync" "github.com/anacrolix/missinggo/v2/resource" @@ -103,9 +104,15 @@ func (s piecePerResourcePiece) MarkComplete() error { }() err := s.completed().Put(r) if err == nil { + var wg sync.WaitGroup for _, c := range incompleteChunks { - c.instance.Delete() + wg.Add(1) + go func(c chunk) { + defer wg.Done() + c.instance.Delete() + }(c) } + wg.Wait() } return err }