1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16
17 package mongo
18
19 import (
20 "context"
21
22 "go4.org/syncutil"
23 "gopkg.in/mgo.v2"
24 "gopkg.in/mgo.v2/bson"
25 "perkeep.org/pkg/blob"
26 )
27
28 var removeGate = syncutil.NewGate(100)
29
30 func (m *mongoStorage) RemoveBlobs(ctx context.Context, blobs []blob.Ref) error {
31 var wg syncutil.Group
32
33 for _, blob := range blobs {
34 blob := blob
35 removeGate.Start()
36 wg.Go(func() error {
37 defer removeGate.Done()
38 err := m.c.Remove(bson.M{"key": blob.String()})
39 if err == mgo.ErrNotFound {
40 return nil
41 }
42 return err
43 })
44 }
45 return wg.Err()
46
47 }