From 953b610470044bd332522b346e4881b8957c2050 Mon Sep 17 00:00:00 2001 From: Steven Allen <steven@stebalien.com> Date: Sun, 3 Dec 2017 18:53:02 -0800 Subject: [PATCH] add node to dagserv under lock Otherwise, we could run a GC between adding and pinning. License: MIT Signed-off-by: Steven Allen <steven@stebalien.com> --- pin/pin.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pin/pin.go b/pin/pin.go index 4faaea6f7..0e55963b3 100644 --- a/pin/pin.go +++ b/pin/pin.go @@ -172,7 +172,10 @@ func NewPinner(dstore ds.Datastore, serv, internal mdag.DAGService) Pinner { func (p *pinner) Pin(ctx context.Context, node node.Node, recurse bool) error { p.lock.Lock() defer p.lock.Unlock() - c := node.Cid() + c, err := p.dserv.Add(node) + if err != nil { + return err + } if recurse { if p.recursePin.Has(c) { -- GitLab