From 388e6899a15b6cef0338408a65548362e7a1fee1 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Sat, 21 Nov 2020 13:42:42 +1100 Subject: [PATCH] piece resource storage: Delete incomplete chunks concurrently after writing complete piece --- storage/piece_resource.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 } -- 2.48.1