Fix PutSingle with OID that was already removed #1579

Merged
fyrchik merged 2 commits from aarifullin/frostfs-node:fix/put_single into master 2024-12-26 11:27:56 +00:00
2 changed files with 4 additions and 0 deletions
Showing only changes of commit a0c261104e - Show all commits

View file

@ -14,6 +14,7 @@ import (
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/policy" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/policy"
svcutil "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/util" svcutil "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/util"
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object_manager/placement" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object_manager/placement"
clientSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client"
containerSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container" containerSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container"
objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object" objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/erasurecode" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/erasurecode"
@ -274,6 +275,8 @@ func (e *ECWriter) writePart(ctx context.Context, obj *objectSDK.Object, partIdx
err := e.putECPartToNode(ctx, obj, node) err := e.putECPartToNode(ctx, obj, node)
if err == nil { if err == nil {
return nil return nil
} else if clientSDK.IsErrObjectAlreadyRemoved(err) {
return err
} }
e.Config.Logger.Warn(ctx, logs.ECFailedToSaveECPart, zap.Stringer("part_address", object.AddressOf(obj)), e.Config.Logger.Warn(ctx, logs.ECFailedToSaveECPart, zap.Stringer("part_address", object.AddressOf(obj)),
zap.Stringer("parent_address", obj.ECHeader().Parent()), zap.Int("part_index", partIdx), zap.Stringer("parent_address", obj.ECHeader().Parent()), zap.Int("part_index", partIdx),

View file

@ -352,6 +352,7 @@ func (s *Service) redirectPutSingleRequest(ctx context.Context,
err = signature.VerifyServiceMessage(resp) err = signature.VerifyServiceMessage(resp)
if err != nil { if err != nil {
err = fmt.Errorf("response verification failed: %w", err) err = fmt.Errorf("response verification failed: %w", err)
return
} }
st := apistatus.FromStatusV2(resp.GetMetaHeader().GetStatus()) st := apistatus.FromStatusV2(resp.GetMetaHeader().GetStatus())
Review
		err = signature.VerifyServiceMessage(resp)
		if err != nil {
			err = fmt.Errorf("response verification failed: %w", err)
			return     <----------------------- add this
		}

		st := apistatus.FromStatusV2(resp.GetMetaHeader().GetStatus())
		err = apistatus.ErrFromStatus(st)
``` err = signature.VerifyServiceMessage(resp) if err != nil { err = fmt.Errorf("response verification failed: %w", err) return <----------------------- add this } st := apistatus.FromStatusV2(resp.GetMetaHeader().GetStatus()) err = apistatus.ErrFromStatus(st) ```
Review

Correct! Fixed

Correct! Fixed