forked from TrueCloudLab/frostfs-node
[#1120] objectSvc: Fix EC put placement
Use parent object ID to compute placement. Fix too many copies saving. Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
5c730de96e
commit
ada1b9f737
1 changed files with 5 additions and 2 deletions
|
@ -147,7 +147,7 @@ func (e *ecWriter) relayToContainerNode(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ecWriter) writeECPart(ctx context.Context, obj *objectSDK.Object) error {
|
func (e *ecWriter) writeECPart(ctx context.Context, obj *objectSDK.Object) error {
|
||||||
t, err := placement.NewTraverser(e.placementOpts...)
|
t, err := placement.NewTraverser(append(e.placementOpts, placement.ForObject(obj.ECHeader().Parent()))...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -162,6 +162,7 @@ func (e *ecWriter) writeECPart(ctx context.Context, obj *objectSDK.Object) error
|
||||||
eg.Go(func() error {
|
eg.Go(func() error {
|
||||||
return e.writePart(egCtx, obj, int(obj.ECHeader().Index()), nodes)
|
return e.writePart(egCtx, obj, int(obj.ECHeader().Index()), nodes)
|
||||||
})
|
})
|
||||||
|
t.SubmitSuccess()
|
||||||
}
|
}
|
||||||
if err := eg.Wait(); err != nil {
|
if err := eg.Wait(); err != nil {
|
||||||
return errIncompletePut{
|
return errIncompletePut{
|
||||||
|
@ -181,7 +182,8 @@ func (e *ecWriter) writeRawObject(ctx context.Context, obj *objectSDK.Object) er
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
t, err := placement.NewTraverser(e.placementOpts...)
|
objID, _ := obj.ID()
|
||||||
|
t, err := placement.NewTraverser(append(e.placementOpts, placement.ForObject(objID))...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -198,6 +200,7 @@ func (e *ecWriter) writeRawObject(ctx context.Context, obj *objectSDK.Object) er
|
||||||
eg.Go(func() error {
|
eg.Go(func() error {
|
||||||
return e.writePart(egCtx, parts[idx], idx, nodes)
|
return e.writePart(egCtx, parts[idx], idx, nodes)
|
||||||
})
|
})
|
||||||
|
t.SubmitSuccess()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := eg.Wait(); err != nil {
|
if err := eg.Wait(); err != nil {
|
||||||
|
|
Loading…
Reference in a new issue