forked from TrueCloudLab/frostfs-s3-gw
[#413] Use tree service to put object
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
ab5c44ac14
commit
36f3c43af5
4 changed files with 201 additions and 46 deletions
|
@ -75,14 +75,6 @@ func (n *layer) DeleteSystemObject(ctx context.Context, bktInfo *data.BucketInfo
|
|||
}
|
||||
|
||||
func (n *layer) putSystemObjectIntoNeoFS(ctx context.Context, p *PutSystemObjectParams) (*data.ObjectInfo, error) {
|
||||
versions, err := n.headSystemVersions(ctx, p.BktInfo, p.ObjName)
|
||||
if err != nil && !errors.IsS3Error(err, errors.ErrNoSuchKey) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
idsToDeleteArr := updateCRDT2PSetHeaders(p.Metadata, versions, false) // false means "last write wins"
|
||||
// note that updateCRDT2PSetHeaders modifies p.Metadata and must be called further processing
|
||||
|
||||
prm := PrmObjectCreate{
|
||||
Container: p.BktInfo.CID,
|
||||
Creator: p.BktInfo.Owner,
|
||||
|
@ -121,6 +113,11 @@ func (n *layer) putSystemObjectIntoNeoFS(ctx context.Context, p *PutSystemObject
|
|||
return nil, err
|
||||
}
|
||||
|
||||
newVersion := &BaseNodeVersion{OID: id}
|
||||
if err = n.treeService.AddSystemVersion(ctx, &p.BktInfo.CID, p.ObjName, newVersion); err != nil {
|
||||
return nil, fmt.Errorf("couldn't add new verion to tree service: %w", err)
|
||||
}
|
||||
|
||||
currentEpoch, _, err := n.neoFS.TimeToEpoch(ctx, time.Now().Add(time.Minute))
|
||||
if err != nil {
|
||||
n.log.Warn("couldn't get creation epoch",
|
||||
|
@ -129,15 +126,6 @@ func (n *layer) putSystemObjectIntoNeoFS(ctx context.Context, p *PutSystemObject
|
|||
zap.Error(err))
|
||||
}
|
||||
|
||||
for _, id := range idsToDeleteArr {
|
||||
if err = n.objectDelete(ctx, p.BktInfo, id); err != nil {
|
||||
n.log.Warn("couldn't delete system object",
|
||||
zap.Stringer("version id", id),
|
||||
zap.String("name", misc.SanitizeString(p.ObjName)),
|
||||
zap.Error(err))
|
||||
}
|
||||
}
|
||||
|
||||
headers := make(map[string]string, len(p.Metadata))
|
||||
for _, attr := range prm.Attributes {
|
||||
headers[attr[0]] = attr[1]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue