forked from TrueCloudLab/frostfs-s3-gw
[#319] Head and delete null versions
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
a46726a545
commit
58df410111
3 changed files with 59 additions and 11 deletions
|
@ -158,6 +158,9 @@ func (n *layer) objectPut(ctx context.Context, bkt *data.BucketInfo, p *PutObjec
|
|||
return nil, err
|
||||
}
|
||||
idsToDeleteArr := updateCRDT2PSetHeaders(p.Header, versions, versioningEnabled)
|
||||
if !versioningEnabled {
|
||||
p.Header[versionsUnversionedAttr] = "true"
|
||||
}
|
||||
|
||||
r := p.Reader
|
||||
if r != nil {
|
||||
|
@ -364,10 +367,23 @@ func (n *layer) headVersions(ctx context.Context, bkt *data.BucketInfo, objectNa
|
|||
return versions, nil
|
||||
}
|
||||
|
||||
func (n *layer) headVersion(ctx context.Context, bkt *data.BucketInfo, versionID string) (*data.ObjectInfo, error) {
|
||||
func (n *layer) headVersion(ctx context.Context, bkt *data.BucketInfo, p *HeadObjectParams) (*data.ObjectInfo, error) {
|
||||
if p.VersionID == unversionedObjectVersionID {
|
||||
versions, err := n.headVersions(ctx, bkt, p.Object)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
objInfo := versions.getLast(FromUnversioned())
|
||||
if objInfo == nil {
|
||||
return nil, apiErrors.GetAPIError(apiErrors.ErrNoSuchVersion)
|
||||
}
|
||||
return objInfo, nil
|
||||
}
|
||||
|
||||
oid := object.NewID()
|
||||
if err := oid.Parse(versionID); err != nil {
|
||||
return nil, err
|
||||
if err := oid.Parse(p.VersionID); err != nil {
|
||||
return nil, apiErrors.GetAPIError(apiErrors.ErrInvalidVersion)
|
||||
}
|
||||
|
||||
if headInfo := n.objCache.Get(newAddress(bkt.CID, oid)); headInfo != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue