Merge pull request #1241 from stevvooe/allow-resumable-upload
metadata: defer ingest lock to backend
This commit is contained in:
commit
a9ab45fb77
@ -271,7 +271,7 @@ func (s *store) Writer(ctx context.Context, ref string, total int64, expected di
|
|||||||
path, refp, data := s.ingestPaths(ref)
|
path, refp, data := s.ingestPaths(ref)
|
||||||
|
|
||||||
if err := tryLock(ref); err != nil {
|
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 (
|
var (
|
||||||
|
@ -303,18 +303,23 @@ func (cs *contentStore) Writer(ctx context.Context, ref string, size int64, expe
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(bkt.Get([]byte(ref))) > 0 {
|
var (
|
||||||
return errors.Wrapf(errdefs.ErrUnavailable, "ref %v is currently in use", ref)
|
bref string
|
||||||
}
|
brefb = bkt.Get([]byte(ref))
|
||||||
|
)
|
||||||
|
|
||||||
sid, err := bkt.NextSequence()
|
if brefb == nil {
|
||||||
if err != nil {
|
sid, err := bkt.NextSequence()
|
||||||
return err
|
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 {
|
if err := bkt.Put([]byte(ref), []byte(bref)); err != nil {
|
||||||
return err
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bref = string(brefb)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do not use the passed in expected value here since it was
|
// Do not use the passed in expected value here since it was
|
||||||
|
Loading…
Reference in New Issue
Block a user