[#307] Filter system metadata

Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
Denis Kirillov 2022-01-20 17:36:21 +03:00 committed by Angira Kekteeva
parent d532eb710f
commit c202893563
4 changed files with 11 additions and 2 deletions

View file

@ -77,6 +77,9 @@ func writeHeaders(h http.Header, info *data.ObjectInfo, tagSetLength int) {
h.Set(api.AmzTaggingCount, strconv.Itoa(tagSetLength)) h.Set(api.AmzTaggingCount, strconv.Itoa(tagSetLength))
for key, val := range info.Headers { for key, val := range info.Headers {
if layer.IsSystemHeader(key) {
continue
}
h[api.MetadataPrefix+key] = []string{val} h[api.MetadataPrefix+key] = []string{val}
} }
} }

View file

@ -444,7 +444,6 @@ func (n *layer) GetBucketTagging(ctx context.Context, bucketName string) (map[st
} }
objInfo, err := n.headSystemObject(ctx, bktInfo, formBucketTagObjectName(bucketName)) objInfo, err := n.headSystemObject(ctx, bktInfo, formBucketTagObjectName(bucketName))
if err != nil && !errors.IsS3Error(err, errors.ErrNoSuchKey) { if err != nil && !errors.IsS3Error(err, errors.ErrNoSuchKey) {
return nil, err return nil, err
} }

View file

@ -546,6 +546,10 @@ func isSystem(obj *data.ObjectInfo) bool {
len(obj.Headers[attrVersionsIgnore]) > 0 len(obj.Headers[attrVersionsIgnore]) > 0
} }
func IsSystemHeader(key string) bool {
return strings.HasPrefix(key, "S3-")
}
func trimAfterObjectName(startAfter string, objects []*data.ObjectInfo) []*data.ObjectInfo { func trimAfterObjectName(startAfter string, objects []*data.ObjectInfo) []*data.ObjectInfo {
if len(objects) != 0 && objects[len(objects)-1].Name <= startAfter { if len(objects) != 0 && objects[len(objects)-1].Name <= startAfter {
return nil return nil

View file

@ -88,7 +88,10 @@ func (n *layer) putSystemObjectIntoNeoFS(ctx context.Context, p *PutSystemObject
for k, v := range p.Metadata { for k, v := range p.Metadata {
attr := object.NewAttribute() attr := object.NewAttribute()
attr.SetKey(p.Prefix + k) if !IsSystemHeader(k) {
k = p.Prefix + k
}
attr.SetKey(k)
if p.Prefix == tagPrefix && v == "" { if p.Prefix == tagPrefix && v == "" {
v = tagEmptyMark v = tagEmptyMark
} }