package content import ( "sync" "github.com/containerd/containerd/errdefs" "github.com/pkg/errors" ) // Handles locking references // TODO: use boltdb for lock status var ( // locks lets us lock in process locks = map[string]struct{}{} locksMu sync.Mutex ) func tryLock(ref string) error { locksMu.Lock() defer locksMu.Unlock() if _, ok := locks[ref]; ok { return errors.Wrapf(errdefs.ErrUnavailable, "ref %s locked", ref) } locks[ref] = struct{}{} return nil } func unlock(ref string) { locksMu.Lock() defer locksMu.Unlock() if _, ok := locks[ref]; ok { delete(locks, ref) } }