From b20dd372bbc62be1eac1b27352da7c7343b8345d Mon Sep 17 00:00:00 2001 From: bufferflies <1045931706@qq.com> Date: Tue, 29 Mar 2022 15:53:11 +0800 Subject: [PATCH] update Signed-off-by: bufferflies <1045931706@qq.com> --- server/cluster/cluster.go | 17 +++++------------ server/core/region.go | 8 ++++---- server/grpc_service.go | 1 - 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/server/cluster/cluster.go b/server/cluster/cluster.go index 56e20ee2b86..0906ff9e302 100644 --- a/server/cluster/cluster.go +++ b/server/cluster/cluster.go @@ -66,7 +66,6 @@ const ( // since the once the store is add or remove, we shouldn't return an error even if the store limit is failed to persist. persistLimitRetryTimes = 5 persistLimitWaitTime = 100 * time.Millisecond - retry = 3 ) // Server is the interface for cluster. @@ -615,18 +614,12 @@ func (c *RaftCluster) processBucketHeartbeat(buckets *metapb.Buckets) error { return errors.Errorf("region %v not found", buckets.GetRegionId()) } - for i := 0; i < retry; i++ { - old := region.GetBuckets() - // region should not update if the version of the buckets is less than the old one. - if old != nil && old.Version >= buckets.Version { - bucketEventCounter.WithLabelValues("version_not_match").Inc() - return nil - } - if ok := region.UpdateBuckets(buckets); ok { - bucketEventCounter.WithLabelValues("update_cache").Inc() - return nil - } + // region should not update if the version of the buckets is less than the old one. + if old := region.GetBuckets(); old != nil && old.Version >= buckets.Version { + bucketEventCounter.WithLabelValues("version_not_match").Inc() + return nil } + region.UpdateBuckets(buckets) return nil } diff --git a/server/core/region.go b/server/core/region.go index 7fc259fd329..14fb421b87b 100644 --- a/server/core/region.go +++ b/server/core/region.go @@ -413,10 +413,10 @@ func (r *RegionInfo) GetStat() *pdpb.RegionStat { } // UpdateBuckets sets the buckets of the region. -func (r *RegionInfo) UpdateBuckets(buckets *metapb.Buckets) bool { - // bucket is only nil in test cases. +func (r *RegionInfo) UpdateBuckets(buckets *metapb.Buckets) { + // the bucket can't be nil except in the test cases. if buckets == nil { - return true + return } // only need to update bucket keys,versions. newBuckets := &metapb.Buckets{ @@ -424,7 +424,7 @@ func (r *RegionInfo) UpdateBuckets(buckets *metapb.Buckets) bool { Version: buckets.GetVersion(), Keys: buckets.GetKeys(), } - return atomic.CompareAndSwapPointer(&r.buckets, r.buckets, unsafe.Pointer(newBuckets)) + atomic.StorePointer(&r.buckets, unsafe.Pointer(newBuckets)) } // GetBuckets returns the buckets of the region. diff --git a/server/grpc_service.go b/server/grpc_service.go index 698576f0b4b..0e7bd2a7f7e 100644 --- a/server/grpc_service.go +++ b/server/grpc_service.go @@ -796,7 +796,6 @@ func (s *GrpcServer) ReportBuckets(stream pdpb.PD_ReportBucketsServer) error { } err = rc.HandleBucketHeartbeat(request.Buckets) if err != nil { - log.Warn("update bucket failed", zap.Error(err)) bucketReportCounter.WithLabelValues("report", "err").Inc() continue }