From 26f9bb3669f66ed0d7d16db8ed1ade3d12ff02f2 Mon Sep 17 00:00:00 2001 From: slasher Date: Thu, 18 Sep 2025 16:36:26 +0800 Subject: [PATCH] feat(access): update shard leader when delete message failed . #1000306808 Signed-off-by: slasher --- blobstore/access/stream/stream_blob.go | 7 +++++++ blobstore/access/stream/stream_blob_test.go | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/blobstore/access/stream/stream_blob.go b/blobstore/access/stream/stream_blob.go index f6b90a571..b1b20383b 100644 --- a/blobstore/access/stream/stream_blob.go +++ b/blobstore/access/stream/stream_blob.go @@ -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 diff --git a/blobstore/access/stream/stream_blob_test.go b/blobstore/access/stream/stream_blob_test.go index df85f90e5..e3d3139f2 100644 --- a/blobstore/access/stream/stream_blob_test.go +++ b/blobstore/access/stream/stream_blob_test.go @@ -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)