Fix inability to pin two things at once
License: MIT Signed-off-by: Michael Avila <me@michaelavila.com>
Michael Avila committed
Sep 22, 2018 at 17:36 UTC
254ac1b11876fec3febec27ffcbf0d028ba59949
1 file changed
+6
-2
pin/pin.go
+6
-2
@@ -228,16 +228,20 @@ func (p *pinner) Pin(ctx context.Context, node ipld.Node, recurse bool) error {
228
if p.directPin.Has(c) {
229
p.directPin.Remove(c)
230
}
231
-
231
+ p.lock.Unlock()
232
// fetch entire graph
233
err := mdag.FetchGraph(ctx, c, p.dserv)
234
+ p.lock.Lock()
235
if err != nil {
236
return err
237
}
238
239
p.recursePin.Add(c)
240
} else {
240
- if _, err := p.dserv.Get(ctx, c); err != nil {
241
+ p.lock.Unlock()
242
+ _, err := p.dserv.Get(ctx, c)
243
+ p.lock.Lock()
244
+ if err != nil {
245
return err
246
}
247