From ec59a7116bbaabeab29adb240b68430015a379a7 Mon Sep 17 00:00:00 2001 From: okJiang <819421878@qq.com> Date: Tue, 24 Sep 2024 15:28:45 +0800 Subject: [PATCH] scheduler: rename scatter-range to scatter-range-scheduler (#8607) close tikv/pd#8379 Signed-off-by: okJiang <819421878@qq.com> Co-authored-by: ti-chi-bot[bot] <108142056+ti-chi-bot[bot]@users.noreply.github.com> --- client/http/api.go | 3 ++- pkg/schedule/schedulers/scatter_range.go | 2 +- pkg/schedule/schedulers/scheduler.go | 7 +++++++ pkg/schedule/types/type.go | 6 +++--- tests/server/api/scheduler_test.go | 4 ++-- tools/pd-ctl/pdctl/command/scheduler.go | 14 +++++++++++++- tools/pd-ctl/tests/scheduler/scheduler_test.go | 4 ++-- 7 files changed, 30 insertions(+), 10 deletions(-) diff --git a/client/http/api.go b/client/http/api.go index d1bce99f4f9..42d965ec17c 100644 --- a/client/http/api.go +++ b/client/http/api.go @@ -60,7 +60,7 @@ const ( RegionLabelRulesByIDs = "/pd/api/v1/config/region-label/rules/ids" // Scheduler Schedulers = "/pd/api/v1/schedulers" - scatterRangeScheduler = "/pd/api/v1/schedulers/scatter-range-" + scatterRangeScheduler = "/pd/api/v1/schedulers/scatter-range-scheduler-" // Admin ResetTS = "/pd/api/v1/admin/reset-ts" BaseAllocID = "/pd/api/v1/admin/base-alloc-id" @@ -183,6 +183,7 @@ func SchedulerByName(name string) string { } // ScatterRangeSchedulerWithName returns the scatter range scheduler API with name parameter. +// It is used in https://github.com/pingcap/tidb/blob/2a3352c45dd0f8dd5102adb92879bbfa964e7f5f/pkg/server/handler/tikvhandler/tikv_handler.go#L1252. func ScatterRangeSchedulerWithName(name string) string { return fmt.Sprintf("%s%s", scatterRangeScheduler, name) } diff --git a/pkg/schedule/schedulers/scatter_range.go b/pkg/schedule/schedulers/scatter_range.go index 253675859b7..2e062126fea 100644 --- a/pkg/schedule/schedulers/scatter_range.go +++ b/pkg/schedule/schedulers/scatter_range.go @@ -90,7 +90,7 @@ func (conf *scatterRangeSchedulerConfig) getEndKey() []byte { func (conf *scatterRangeSchedulerConfig) getSchedulerName() string { conf.RLock() defer conf.RUnlock() - return fmt.Sprintf("scatter-range-%s", conf.RangeName) + return fmt.Sprintf("%s-%s", types.ScatterRangeScheduler, conf.RangeName) } type scatterRangeScheduler struct { diff --git a/pkg/schedule/schedulers/scheduler.go b/pkg/schedule/schedulers/scheduler.go index ac0a52fc977..3f722f7f804 100644 --- a/pkg/schedule/schedulers/scheduler.go +++ b/pkg/schedule/schedulers/scheduler.go @@ -182,5 +182,12 @@ func FindSchedulerTypeByName(name string) types.CheckerSchedulerType { } } } + // This is for compatibility. Because the string of ScatterRangeScheduler is + // "scatter-range" before. If user adds a ScatterRangeScheduler(which is + // "scatter-range" yet) and then upgrades the cluster(its ScatterRangeScheduler + // is "scatter-range-scheduler"), we need these codes to keep the compatibility. + if len(typ) == 0 && strings.Contains(name, "scatter-range") { + return types.ScatterRangeScheduler + } return typ } diff --git a/pkg/schedule/types/type.go b/pkg/schedule/types/type.go index 09491c5c1c4..7bc27892010 100644 --- a/pkg/schedule/types/type.go +++ b/pkg/schedule/types/type.go @@ -57,8 +57,7 @@ const ( // RandomMergeScheduler is random merge scheduler name. RandomMergeScheduler CheckerSchedulerType = "random-merge-scheduler" // ScatterRangeScheduler is scatter range scheduler name. - // TODO: update to `scatter-range-scheduler` - ScatterRangeScheduler CheckerSchedulerType = "scatter-range" + ScatterRangeScheduler CheckerSchedulerType = "scatter-range-scheduler" // ShuffleHotRegionScheduler is shuffle hot region scheduler name. ShuffleHotRegionScheduler CheckerSchedulerType = "shuffle-hot-region-scheduler" // ShuffleLeaderScheduler is shuffle leader scheduler name. @@ -135,7 +134,8 @@ var ( "grant-hot-region-scheduler": GrantHotRegionScheduler, "balance-hot-region-scheduler": BalanceHotRegionScheduler, "random-merge-scheduler": RandomMergeScheduler, - // TODO: update to `scatter-range-scheduler` + "scatter-range-scheduler": ScatterRangeScheduler, + // TODO: remove `scatter-range` after remove `NewScatterRangeSchedulerCommand` from pd-ctl "scatter-range": ScatterRangeScheduler, "shuffle-hot-region-scheduler": ShuffleHotRegionScheduler, "shuffle-leader-scheduler": ShuffleLeaderScheduler, diff --git a/tests/server/api/scheduler_test.go b/tests/server/api/scheduler_test.go index b989298ee39..b906a72f09e 100644 --- a/tests/server/api/scheduler_test.go +++ b/tests/server/api/scheduler_test.go @@ -458,8 +458,8 @@ func (suite *scheduleTestSuite) checkAPI(cluster *tests.TestCluster) { }, }, { - name: "scatter-range", - createdName: "scatter-range-test", + name: "scatter-range-scheduler", + createdName: "scatter-range-scheduler-test", args: []arg{{"start_key", ""}, {"end_key", ""}, {"range_name", "test"}}, // Test the scheduler config handler. extraTestFunc: func(name string) { diff --git a/tools/pd-ctl/pdctl/command/scheduler.go b/tools/pd-ctl/pdctl/command/scheduler.go index 43c6429cd4f..9c38266fdb8 100644 --- a/tools/pd-ctl/pdctl/command/scheduler.go +++ b/tools/pd-ctl/pdctl/command/scheduler.go @@ -149,6 +149,7 @@ func NewAddSchedulerCommand() *cobra.Command { c.AddCommand(NewShuffleRegionSchedulerCommand()) c.AddCommand(NewShuffleHotRegionSchedulerCommand()) c.AddCommand(NewScatterRangeSchedulerCommand()) + c.AddCommand(NewScatterRangeSchedulerCommandV2()) c.AddCommand(NewBalanceLeaderSchedulerCommand()) c.AddCommand(NewBalanceRegionSchedulerCommand()) c.AddCommand(NewBalanceHotRegionSchedulerCommand()) @@ -422,7 +423,18 @@ func addSchedulerCommandFunc(cmd *cobra.Command, args []string) { // NewScatterRangeSchedulerCommand returns a command to add a scatter-range-scheduler. func NewScatterRangeSchedulerCommand() *cobra.Command { c := &cobra.Command{ - Use: "scatter-range [--format=raw|encode|hex] ", + Use: "scatter-range [--format=raw|encode|hex] ", + Run: addSchedulerForScatterRangeCommandFunc, + Deprecated: "scatter-range will be deprecated in the future, please use `scatter-range-scheduler` instead", + } + c.Flags().String("format", "hex", "the key format") + return c +} + +// NewScatterRangeSchedulerCommandV2 returns a command to add a scatter-range-scheduler. +func NewScatterRangeSchedulerCommandV2() *cobra.Command { + c := &cobra.Command{ + Use: "scatter-range-scheduler [--format=raw|encode|hex] ", Short: "add a scheduler to scatter range", Run: addSchedulerForScatterRangeCommandFunc, } diff --git a/tools/pd-ctl/tests/scheduler/scheduler_test.go b/tools/pd-ctl/tests/scheduler/scheduler_test.go index 63d0f091b8c..02564994a3a 100644 --- a/tools/pd-ctl/tests/scheduler/scheduler_test.go +++ b/tools/pd-ctl/tests/scheduler/scheduler_test.go @@ -347,9 +347,9 @@ func (suite *schedulerTestSuite) checkScheduler(cluster *pdTests.TestCluster) { "test", "test#", "?test", /* TODO: to handle case like "tes&t", we need to modify the server's JSON render to unescape the HTML characters */ } { - echo = mustExec(re, cmd, []string{"-u", pdAddr, "scheduler", "add", "scatter-range", "--format=raw", "a", "b", name}, nil) + echo = mustExec(re, cmd, []string{"-u", pdAddr, "scheduler", "add", "scatter-range-scheduler", "--format=raw", "a", "b", name}, nil) re.Contains(echo, "Success!") - schedulerName := fmt.Sprintf("scatter-range-%s", name) + schedulerName := fmt.Sprintf("scatter-range-scheduler-%s", name) // test show scheduler testutil.Eventually(re, func() bool { echo = mustExec(re, cmd, []string{"-u", pdAddr, "scheduler", "show"}, nil)