forked from TrueCloudLab/frostfs-s3-gw
[#669] Optimize PutLockInfo
Signed-off-by: Alex Vanin <a.vanin@yadro.com>
This commit is contained in:
parent
e06f6f1c2a
commit
5ffe28a42f
2 changed files with 14 additions and 6 deletions
|
@ -255,7 +255,7 @@ func (n *layer) PutObject(ctx context.Context, p *PutObjectParams) (*data.Object
|
|||
}
|
||||
|
||||
if p.Lock != nil && (p.Lock.Retention != nil || p.Lock.LegalHold != nil) {
|
||||
prm := &PutLockInfoParams{
|
||||
putLockInfoPrms := &PutLockInfoParams{
|
||||
ObjVersion: &ObjectVersion{
|
||||
BktInfo: p.BktInfo,
|
||||
ObjectName: p.Object,
|
||||
|
@ -263,9 +263,10 @@ func (n *layer) PutObject(ctx context.Context, p *PutObjectParams) (*data.Object
|
|||
},
|
||||
NewLock: p.Lock,
|
||||
CopiesNumber: p.CopiesNumber,
|
||||
NodeVersion: newVersion, // provide new version to make one less tree service call in PutLockInfo
|
||||
}
|
||||
|
||||
if err = n.PutLockInfo(ctx, prm); err != nil {
|
||||
if err = n.PutLockInfo(ctx, putLockInfoPrms); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,17 +23,24 @@ type PutLockInfoParams struct {
|
|||
ObjVersion *ObjectVersion
|
||||
NewLock *data.ObjectLock
|
||||
CopiesNumber uint32
|
||||
NodeVersion *data.NodeVersion // optional
|
||||
}
|
||||
|
||||
func (n *layer) PutLockInfo(ctx context.Context, p *PutLockInfoParams) error {
|
||||
func (n *layer) PutLockInfo(ctx context.Context, p *PutLockInfoParams) (err error) {
|
||||
var (
|
||||
cnrID = p.ObjVersion.BktInfo.CID
|
||||
newLock = p.NewLock
|
||||
)
|
||||
versionNode, err := n.getNodeVersion(ctx, p.ObjVersion)
|
||||
|
||||
versionNode := p.NodeVersion
|
||||
// sometimes node version can be provided from executing context
|
||||
// if value is not provided, make a tree service call
|
||||
if versionNode == nil {
|
||||
versionNode, err = n.getNodeVersion(ctx, p.ObjVersion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
lockInfo, err := n.treeService.GetLock(ctx, cnrID, versionNode.ID)
|
||||
if err != nil && !errorsStd.Is(err, ErrNodeNotFound) {
|
||||
|
|
Loading…
Reference in a new issue