]> Sergey Matveev's repositories - btrtrc.git/commitdiff
piece resource storage: Delete incomplete chunks concurrently after writing complete...
authorMatt Joiner <anacrolix@gmail.com>
Sat, 21 Nov 2020 02:42:42 +0000 (13:42 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Sat, 21 Nov 2020 02:44:23 +0000 (13:44 +1100)
storage/piece_resource.go

index 02c1e7e8ad7e26b99bd017d65985e1cf58881a42..04566515fc80b719fb0ee5f8c02ceef21b3f4722 100644 (file)
@@ -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
 }