From 2d90e0f96e698a403bdede4def1220904780767e Mon Sep 17 00:00:00 2001 From: JasonHu520 Date: Wed, 30 Oct 2024 11:18:35 +0800 Subject: [PATCH] perf(scheduler): update volume cache failed error replace with error code @formatter:off Signed-off-by: JasonHu520 --- blobstore/common/errors/errors.go | 3 ++- blobstore/common/errors/scheduler.go | 6 ++++-- blobstore/scheduler/blob_deleter_test.go | 2 +- blobstore/scheduler/cluster_topology.go | 6 ++---- blobstore/scheduler/cluster_topology_test.go | 8 ++++---- blobstore/scheduler/shard_repairer_test.go | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/blobstore/common/errors/errors.go b/blobstore/common/errors/errors.go index 1f9017073..fcb01ba56 100644 --- a/blobstore/common/errors/errors.go +++ b/blobstore/common/errors/errors.go @@ -91,7 +91,8 @@ var errCodeMap = map[int]string{ CodeCMNodeSetNotFound: "nodeset not found", // scheduler - CodeNotingTodo: "nothing to do", + CodeNotingTodo: "nothing to do", + CodeUpdateVolCacheFreq: "update volume cache frequently", // proxy CodeNoAvaliableVolume: "this codemode has no avaliable volume", diff --git a/blobstore/common/errors/scheduler.go b/blobstore/common/errors/scheduler.go index a994ec700..face05dfd 100644 --- a/blobstore/common/errors/scheduler.go +++ b/blobstore/common/errors/scheduler.go @@ -19,7 +19,8 @@ import ( ) const ( - CodeNotingTodo = 700 + CodeNotingTodo = 700 + CodeUpdateVolCacheFreq = 701 ) var ( @@ -29,5 +30,6 @@ var ( ErrIllegalDiskID = errors.New("illegal disk id") // error code - ErrNothingTodo = Error(CodeNotingTodo) + ErrNothingTodo = Error(CodeNotingTodo) + ErrUpdateVolCacheFreq = Error(CodeUpdateVolCacheFreq) ) diff --git a/blobstore/scheduler/blob_deleter_test.go b/blobstore/scheduler/blob_deleter_test.go index 559fe9fcd..beb3f26e6 100644 --- a/blobstore/scheduler/blob_deleter_test.go +++ b/blobstore/scheduler/blob_deleter_test.go @@ -722,7 +722,7 @@ func TestDeleteBlob(t *testing.T) { mgr.blobnodeCli = blobnodeCli clusterTopology := NewMockClusterTopology(ctr) - clusterTopology.EXPECT().UpdateVolume(any).Return(volume, ErrFrequentlyUpdate) + clusterTopology.EXPECT().UpdateVolume(any).Return(volume, errcode.ErrUpdateVolCacheFreq) mgr.clusterTopology = clusterTopology doneVolume, err := mgr.deleteBlob(ctx, volume, &proto.DeleteMsg{Bid: proto.BlobID(1)}) diff --git a/blobstore/scheduler/cluster_topology.go b/blobstore/scheduler/cluster_topology.go index aed8f11f1..4cbfe1242 100644 --- a/blobstore/scheduler/cluster_topology.go +++ b/blobstore/scheduler/cluster_topology.go @@ -24,6 +24,7 @@ import ( "golang.org/x/sync/singleflight" + cmerrors "github.com/cubefs/cubefs/blobstore/common/errors" "github.com/cubefs/cubefs/blobstore/common/proto" "github.com/cubefs/cubefs/blobstore/common/rpc" "github.com/cubefs/cubefs/blobstore/common/trace" @@ -41,9 +42,6 @@ const ( defaultCount = 1000 ) -// ErrFrequentlyUpdate frequently update -var ErrFrequentlyUpdate = errors.New("frequently update") - var errVolumeMissmatch = errors.New("volume missmatch during running task") // IClusterTopology define the interface og cluster topology @@ -458,7 +456,7 @@ func (c *VolumeCache) GetVolume(vid proto.Vid) (*client.VolumeInfoSimple, error) // UpdateVolume this volume info cache. func (c *VolumeCache) UpdateVolume(vid proto.Vid) (*client.VolumeInfoSimple, error) { if !c.cache.Settable(vid) { - return nil, ErrFrequentlyUpdate + return nil, cmerrors.ErrUpdateVolCacheFreq } val, err, _ := c.group.Do(fmt.Sprintf("volume-update-%d", vid), func() (interface{}, error) { diff --git a/blobstore/scheduler/cluster_topology_test.go b/blobstore/scheduler/cluster_topology_test.go index 56249f735..1235b130d 100644 --- a/blobstore/scheduler/cluster_topology_test.go +++ b/blobstore/scheduler/cluster_topology_test.go @@ -19,12 +19,12 @@ import ( "testing" "time" - "github.com/golang/mock/gomock" - "github.com/stretchr/testify/require" - + errcode "github.com/cubefs/cubefs/blobstore/common/errors" "github.com/cubefs/cubefs/blobstore/common/proto" "github.com/cubefs/cubefs/blobstore/scheduler/base" "github.com/cubefs/cubefs/blobstore/scheduler/client" + "github.com/golang/mock/gomock" + "github.com/stretchr/testify/require" ) var ( @@ -175,7 +175,7 @@ func TestVolumeCache(t *testing.T) { // update ErrFrequentlyUpdate _, err = volCache.UpdateVolume(1) - require.ErrorIs(t, err, ErrFrequentlyUpdate) + require.ErrorIs(t, err, errcode.ErrUpdateVolCacheFreq) // list and get failed cmClient.EXPECT().ListVolume(any, any, any).AnyTimes().Return(nil, proto.Vid(0), errMock) diff --git a/blobstore/scheduler/shard_repairer_test.go b/blobstore/scheduler/shard_repairer_test.go index d30ea6d87..554aecbe9 100644 --- a/blobstore/scheduler/shard_repairer_test.go +++ b/blobstore/scheduler/shard_repairer_test.go @@ -297,7 +297,7 @@ func TestTryRepair(t *testing.T) { mgr.blobnodeCli = blobnode clusterTopology := NewMockClusterTopology(ctr) - clusterTopology.EXPECT().UpdateVolume(any).Return(volume, ErrFrequentlyUpdate) + clusterTopology.EXPECT().UpdateVolume(any).Return(volume, errcode.ErrUpdateVolCacheFreq) mgr.clusterTopology = clusterTopology doneVolume, err := mgr.tryRepair(ctx, volume, &proto.ShardRepairMsg{Bid: proto.BlobID(1), Vid: proto.Vid(1), BadIdx: []uint8{0}})