Merge pull request #1241 from stevvooe/allow-resumable-upload

metadata: defer ingest lock to backend
This commit is contained in:
Stephen Day 2017-07-24 15:30:17 -07:00 committed by GitHub
commit a9ab45fb77
2 changed files with 16 additions and 11 deletions

View File

@ -271,7 +271,7 @@ func (s *store) Writer(ctx context.Context, ref string, total int64, expected di
path, refp, data := s.ingestPaths(ref)
if err := tryLock(ref); err != nil {
return nil, errors.Wrapf(err, "locking %v failed", ref)
return nil, errors.Wrapf(err, "locking ref %v failed", ref)
}
var (

View File

@ -303,19 +303,24 @@ func (cs *contentStore) Writer(ctx context.Context, ref string, size int64, expe
return err
}
if len(bkt.Get([]byte(ref))) > 0 {
return errors.Wrapf(errdefs.ErrUnavailable, "ref %v is currently in use", ref)
}
var (
bref string
brefb = bkt.Get([]byte(ref))
)
if brefb == nil {
sid, err := bkt.NextSequence()
if err != nil {
return err
}
bref := createKey(sid, ns, ref)
bref = createKey(sid, ns, ref)
if err := bkt.Put([]byte(ref), []byte(bref)); err != nil {
return err
}
} else {
bref = string(brefb)
}
// Do not use the passed in expected value here since it was
// already checked against the user metadata. If the content