feat(access): update shard leader when delete message failed

. #1000306808

Signed-off-by: slasher <shenjie1@oppo.com>
This commit is contained in:
slasher 2025-09-18 16:36:26 +08:00
parent 6ac6e515a2
commit 26f9bb3669
2 changed files with 8 additions and 2 deletions

View File

@ -691,6 +691,13 @@ func (h *Handler) clearGarbageIntoShardnode(ctx context.Context, location *proto
if err = h.shardnodeClient.DeleteBlobRaw(ctx, host, args); err != nil {
span.Warnf("send to shardnode %s delete message(%+v) %s", host, slice, err.Error())
reportUnhealth(clusterID, "delete.msg", serviceShard, host, "failed")
_, err = h.punishAndUpdate(ctx, &punishArgs{
ShardOpHeader: args.Header,
clusterID: clusterID,
host: host,
mode: acapi.GetShardModeLeader,
err: err,
})
err = errors.Base(err, host)
}
return err

View File

@ -182,8 +182,7 @@ func TestStreamBlobDeleteRaw(t *testing.T) {
h := newStreamHandlerSuccess(t)
h.StreamConfig.DeleteIntoShardnodePercentage = 100
h.shardnodeClient.(*mocks.MockShardnodeAccess).EXPECT().DeleteBlobRaw(gAny, gAny, gAny).Return(
errcode.ErrShardRouteVersionNeedUpdate).Times(3)
h.shardnodeClient.(*mocks.MockShardnodeAccess).EXPECT().DeleteBlobRaw(gAny, gAny, gAny).Return(errcode.ErrUnexpected).Times(3)
require.Error(t, h.Delete(ctx, &proto.Location{Slices: []proto.Slice{{}, {}}}))
h.shardnodeClient.(*mocks.MockShardnodeAccess).EXPECT().DeleteBlobRaw(gAny, gAny, gAny).Return(nil).Times(2)