@@ -32,6 +32,8 @@ import (
3232 "go.uber.org/multierr"
3333 "go.uber.org/zap"
3434 "google.golang.org/grpc"
35+ "google.golang.org/grpc/codes"
36+ "google.golang.org/grpc/status"
3537
3638 "github.com/pingcap/errors"
3739 "github.com/pingcap/failpoint"
@@ -2111,13 +2113,14 @@ func (s *GrpcServer) ScatterRegion(ctx context.Context, request *pdpb.ScatterReg
21112113 }
21122114
21132115 if len (request .GetRegionsId ()) > 0 {
2114- percentage , err := scatterRegions (rc , request .GetRegionsId (), request .GetGroup (), int (request .GetRetryLimit ()), request .GetSkipStoreLimit ())
2116+ percentage , failedRegionsID , err := scatterRegions (rc , request .GetRegionsId (), request .GetGroup (), int (request .GetRetryLimit ()), request .GetSkipStoreLimit ())
21152117 if err != nil {
21162118 return nil , err
21172119 }
21182120 return & pdpb.ScatterRegionResponse {
21192121 Header : wrapHeader (),
21202122 FinishedPercentage : uint64 (percentage ),
2123+ FailedRegionsId : failedRegionsID ,
21212124 }, nil
21222125 }
21232126 // TODO: Deprecate it use `request.GetRegionsID`.
@@ -2486,6 +2489,7 @@ func convertScatterResponse(resp *schedulingpb.ScatterRegionsResponse) *pdpb.Sca
24862489 return & pdpb.ScatterRegionResponse {
24872490 Header : convertHeader (resp .GetHeader ()),
24882491 FinishedPercentage : resp .GetFinishedPercentage (),
2492+ FailedRegionsId : resp .GetFailedRegionsId (),
24892493 }
24902494}
24912495
@@ -2598,7 +2602,7 @@ func (s *GrpcServer) SplitAndScatterRegions(ctx context.Context, request *pdpb.S
25982602 return & pdpb.SplitAndScatterRegionsResponse {Header : notBootstrappedHeader ()}, nil
25992603 }
26002604 splitFinishedPercentage , newRegionIDs := rc .GetRegionSplitter ().SplitRegions (ctx , request .GetSplitKeys (), int (request .GetRetryLimit ()))
2601- scatterFinishedPercentage , err := scatterRegions (rc , newRegionIDs , request .GetGroup (), int (request .GetRetryLimit ()), false )
2605+ scatterFinishedPercentage , _ , err := scatterRegions (rc , newRegionIDs , request .GetGroup (), int (request .GetRetryLimit ()), false )
26022606 if err != nil {
26032607 return nil , err
26042608 }
@@ -2610,13 +2614,15 @@ func (s *GrpcServer) SplitAndScatterRegions(ctx context.Context, request *pdpb.S
26102614 }, nil
26112615}
26122616
2613- // scatterRegions add operators to scatter regions and return the processed percentage and error
2614- func scatterRegions (cluster * cluster.RaftCluster , regionsID []uint64 , group string , retryLimit int , skipStoreLimit bool ) (int , error ) {
2617+ // scatterRegions add operators to scatter regions
2618+ // returns the percentage of successfully scattered regions and the IDs of failed regions
2619+ func scatterRegions (cluster * cluster.RaftCluster , regionsID []uint64 , group string , retryLimit int , skipStoreLimit bool ) (int , []uint64 , error ) {
26152620 opsCount , failures , err := cluster .GetRegionScatterer ().ScatterRegionsByID (regionsID , group , retryLimit , skipStoreLimit )
26162621 if err != nil {
2617- return 0 , err
2622+ return 0 , nil , err
26182623 }
26192624 percentage := 100
2625+ var failedRegionIDs []uint64
26202626 if len (failures ) > 0 {
26212627 percentage = 100 - 100 * len (failures )/ (opsCount + len (failures ))
26222628 log .Debug ("scatter regions" , zap .Errors ("failures" , func () []error {
@@ -2626,8 +2632,11 @@ func scatterRegions(cluster *cluster.RaftCluster, regionsID []uint64, group stri
26262632 }
26272633 return r
26282634 }()))
2635+ for regionID := range failures {
2636+ failedRegionIDs = append (failedRegionIDs , regionID )
2637+ }
26292638 }
2630- return percentage , nil
2639+ return percentage , failedRegionIDs , nil
26312640}
26322641
26332642// GetDCLocationInfo implements gRPC PDServer.
@@ -2944,3 +2953,13 @@ func (s *GrpcServer) rateLimitCheck() (done ratelimit.DoneFunc, err error) {
29442953 }
29452954 return
29462955}
2956+
2957+ // SetGlobalGCBarrier implements gRPC PDServer.
2958+ func (* GrpcServer ) SetGlobalGCBarrier (context.Context , * pdpb.SetGlobalGCBarrierRequest ) (* pdpb.SetGlobalGCBarrierResponse , error ) {
2959+ return nil , status .Errorf (codes .Unimplemented , "SetGlobalGCBarrier is not implemented yet, waiting for https://github.com/tikv/pd/pull/9361" )
2960+ }
2961+
2962+ // DeleteGlobalGCBarrier implements gRPC PDServer.
2963+ func (* GrpcServer ) DeleteGlobalGCBarrier (context.Context , * pdpb.DeleteGlobalGCBarrierRequest ) (* pdpb.DeleteGlobalGCBarrierResponse , error ) {
2964+ return nil , status .Errorf (codes .Unimplemented , "DeleteGlobalGCBarrier is not implemented yet, waiting for https://github.com/tikv/pd/pull/9361" )
2965+ }
0 commit comments