From 3754a466117829283bd7ec3bcf3c852f330b077d Mon Sep 17 00:00:00 2001 From: ti-srebot <66930949+ti-srebot@users.noreply.github.com> Date: Mon, 21 Dec 2020 17:48:14 +0800 Subject: [PATCH] feat: add get-config command (#1323) (#1348) Signed-off-by: ti-srebot Co-authored-by: GMHDBJD <35025882+GMHDBJD@users.noreply.github.com> Co-authored-by: gmhdbjd --- chaos/cases/task.go | 6 + cmd/dm-ctl/main.go | 20 + dm/config/task.go | 73 +- dm/config/task_test.go | 71 +- dm/ctl/ctl.go | 2 +- .../{get_task_config.go => get_config.go} | 49 +- dm/master/bootstrap.go | 12 - dm/master/config.go | 35 +- dm/master/scheduler/scheduler.go | 149 ---- dm/master/server.go | 161 +++- dm/master/server_test.go | 63 +- dm/master/workerrpc/interface.go | 3 + dm/master/workerrpc/rawgrpc.go | 2 + dm/pb/dmmaster.pb.go | 770 +++++++++++++----- dm/pb/dmmaster.pb.gw.go | 43 +- dm/pb/dmworker.pb.go | 576 ++++++++++--- dm/pbmock/dmmaster.go | 91 ++- dm/pbmock/dmworker.go | 35 + dm/proto/dmmaster.proto | 29 +- dm/proto/dmworker.proto | 9 + dm/worker/config.go | 2 +- dm/worker/relay.go | 3 +- dm/worker/server.go | 10 + pkg/ha/task.go | 88 -- pkg/ha/task_test.go | 114 --- tests/dmctl_basic/check_list/get_config.sh | 125 +++ .../dmctl_basic/check_list/get_task_config.sh | 44 - tests/dmctl_basic/conf/dm-master.toml | 1 + tests/dmctl_basic/conf/get_master1.toml | 21 + tests/dmctl_basic/conf/get_source1.yaml | 32 + tests/dmctl_basic/conf/get_source2.yaml | 32 + tests/dmctl_basic/conf/get_task.yaml | 135 +++ tests/dmctl_basic/conf/get_worker1.toml | 13 + tests/dmctl_basic/conf/get_worker2.toml | 13 + tests/dmctl_basic/conf/source1.yaml | 2 +- tests/dmctl_basic/conf/source2.yaml | 2 +- tests/dmctl_basic/run.sh | 7 +- tests/ha_master/run.sh | 8 + tests/http_apis/run.sh | 4 - tests/import_v10x/conf/task.yaml | 24 +- tests/import_v10x/run.sh | 3 +- 41 files changed, 1971 insertions(+), 911 deletions(-) rename dm/ctl/master/{get_task_config.go => get_config.go} (59%) delete mode 100644 pkg/ha/task.go delete mode 100644 pkg/ha/task_test.go create mode 100644 tests/dmctl_basic/check_list/get_config.sh delete mode 100644 tests/dmctl_basic/check_list/get_task_config.sh create mode 100644 tests/dmctl_basic/conf/get_master1.toml create mode 100644 tests/dmctl_basic/conf/get_source1.yaml create mode 100644 tests/dmctl_basic/conf/get_source2.yaml create mode 100644 tests/dmctl_basic/conf/get_task.yaml create mode 100644 tests/dmctl_basic/conf/get_worker1.toml create mode 100644 tests/dmctl_basic/conf/get_worker2.toml diff --git a/chaos/cases/task.go b/chaos/cases/task.go index 519815b68e..959956d673 100644 --- a/chaos/cases/task.go +++ b/chaos/cases/task.go @@ -23,6 +23,7 @@ import ( "github.com/chaos-mesh/go-sqlsmith" "github.com/pingcap/errors" + "github.com/pingcap/parser/mysql" "go.uber.org/zap" "golang.org/x/sync/errgroup" @@ -30,6 +31,7 @@ import ( "github.com/pingcap/dm/dm/pb" "github.com/pingcap/dm/pkg/conn" "github.com/pingcap/dm/pkg/log" + "github.com/pingcap/dm/pkg/utils" ) const ( @@ -356,6 +358,10 @@ func (t *task) genIncrData(ctx context.Context) (err error) { i2 := i eg.Go(func() error { if err2 := conn2.execSQLs(ctx, query); err2 != nil { + if utils.IsMySQLError(err2, mysql.ErrDupFieldName) { + t.logger.Warn("ignore duplicate field name for ddl", log.ShortError(err)) + return nil + } return err2 } t.results[i2].DDL++ diff --git a/cmd/dm-ctl/main.go b/cmd/dm-ctl/main.go index c52adb5818..b0603ba3d8 100644 --- a/cmd/dm-ctl/main.go +++ b/cmd/dm-ctl/main.go @@ -77,6 +77,8 @@ func main() { os.Exit(0) } + args = aliasArgs(args) + // now, we use checker in dmctl while it using some pkg which log some thing when running // to make dmctl output more clear, simply redirect log to file rather output to stdout err := log.InitLogger(&log.Config{ @@ -229,6 +231,7 @@ func loop() { } args := strings.Fields(line) + args = aliasArgs(args) err = ctl.Start(args) if err != nil { fmt.Println("fail to run:", args) @@ -240,3 +243,20 @@ func loop() { } } } + +func aliasArgs(args []string) []string { + args = aliasGetTaskCfgCmd(args) + return args +} + +func aliasGetTaskCfgCmd(args []string) []string { + for i, arg := range args { + if arg == "get-task-config" { + args = append(args[:i+1], args[i:]...) + args[i] = "get-config" + args[i+1] = "task" + return args + } + } + return args +} diff --git a/dm/config/task.go b/dm/config/task.go index c5bd7ca64d..9e4f3b97dc 100644 --- a/dm/config/task.go +++ b/dm/config/task.go @@ -160,19 +160,6 @@ func (m *MySQLInstance) VerifyAndAdjust() error { return nil } -// RemoveDuplicateCfg remove duplicate mydumper, loader, and syncer config -func (m *MySQLInstance) RemoveDuplicateCfg() { - if len(m.MydumperConfigName) > 0 && m.Mydumper != nil { - m.Mydumper = nil - } - if len(m.LoaderConfigName) > 0 && m.Loader != nil { - m.Loader = nil - } - if len(m.SyncerConfigName) > 0 && m.Syncer != nil { - m.Syncer = nil - } -} - // MydumperConfig represents mydumper process unit's specific config type MydumperConfig struct { MydumperPath string `yaml:"mydumper-path" toml:"mydumper-path" json:"mydumper-path"` // mydumper binary path @@ -628,9 +615,27 @@ func (c *TaskConfig) SubTaskConfigs(sources map[string]DBConfig) ([]*SubTaskConf return cfgs, nil } +// getGenerateName generates name by rule or gets name from nameMap +// if it's a new name, increase nameIdx +// otherwise return current nameIdx +func getGenerateName(rule interface{}, nameIdx int, namePrefix string, nameMap map[string]string) (string, int) { + // use json as key since no DeepEqual for rules now. + ruleByte, err := json.Marshal(rule) + if err != nil { + log.L().Error(fmt.Sprintf("marshal %s rule to json", namePrefix), log.ShortError(err)) + return fmt.Sprintf("%s-%02d", namePrefix, nameIdx), nameIdx + 1 + } else if val, ok := nameMap[string(ruleByte)]; ok { + return val, nameIdx + } else { + ruleName := fmt.Sprintf("%s-%02d", namePrefix, nameIdx+1) + nameMap[string(ruleByte)] = ruleName + return ruleName, nameIdx + 1 + } +} + // FromSubTaskConfigs constructs task configs from a list of valid subtask configs. -// this method is only used to construct config when importing from v1.0.x now. -func (c *TaskConfig) FromSubTaskConfigs(stCfgs ...*SubTaskConfig) { +func FromSubTaskConfigs(stCfgs ...*SubTaskConfig) *TaskConfig { + c := &TaskConfig{} // global configs. stCfg0 := stCfgs[0] c.Name = stCfg0.Name @@ -656,39 +661,48 @@ func (c *TaskConfig) FromSubTaskConfigs(stCfgs ...*SubTaskConfig) { c.Loaders = make(map[string]*LoaderConfig) c.Syncers = make(map[string]*SyncerConfig) + BAListMap := make(map[string]string, len(stCfgs)) + routeMap := make(map[string]string, len(stCfgs)) + filterMap := make(map[string]string, len(stCfgs)) + dumpMap := make(map[string]string, len(stCfgs)) + loadMap := make(map[string]string, len(stCfgs)) + syncMap := make(map[string]string, len(stCfgs)) + cmMap := make(map[string]string, len(stCfgs)) + var baListIdx, routeIdx, filterIdx, dumpIdx, loadIdx, syncIdx, cmIdx int + var baListName, routeName, filterName, dumpName, loadName, syncName, cmName string + // NOTE: // - we choose to ref global configs for instances now. - // - no DeepEqual for rules now, so not combine REAL same rule into only one. - for i, stCfg := range stCfgs { - BAListName := fmt.Sprintf("balist-%02d", i+1) - c.BAList[BAListName] = stCfg.BAList + for _, stCfg := range stCfgs { + baListName, baListIdx = getGenerateName(stCfg.BAList, baListIdx, "balist", BAListMap) + c.BAList[baListName] = stCfg.BAList routeNames := make([]string, 0, len(stCfg.RouteRules)) - for j, rule := range stCfg.RouteRules { - routeName := fmt.Sprintf("route-%02d-%02d", i+1, j+1) + for _, rule := range stCfg.RouteRules { + routeName, routeIdx = getGenerateName(rule, routeIdx, "route", routeMap) routeNames = append(routeNames, routeName) c.Routes[routeName] = rule } filterNames := make([]string, 0, len(stCfg.FilterRules)) - for j, rule := range stCfg.FilterRules { - filterName := fmt.Sprintf("filter-%02d-%02d", i+1, j+1) + for _, rule := range stCfg.FilterRules { + filterName, filterIdx = getGenerateName(rule, filterIdx, "filter", filterMap) filterNames = append(filterNames, filterName) c.Filters[filterName] = rule } - dumpName := fmt.Sprintf("dump-%02d", i+1) + dumpName, dumpIdx = getGenerateName(stCfg.MydumperConfig, dumpIdx, "dump", dumpMap) c.Mydumpers[dumpName] = &stCfg.MydumperConfig - loadName := fmt.Sprintf("load-%02d", i+1) + loadName, loadIdx = getGenerateName(stCfg.LoaderConfig, loadIdx, "load", loadMap) c.Loaders[loadName] = &stCfg.LoaderConfig - syncName := fmt.Sprintf("sync-%02d", i+1) + syncName, syncIdx = getGenerateName(stCfg.SyncerConfig, syncIdx, "sync", syncMap) c.Syncers[syncName] = &stCfg.SyncerConfig cmNames := make([]string, 0, len(stCfg.ColumnMappingRules)) - for j, rule := range stCfg.ColumnMappingRules { - cmName := fmt.Sprintf("cm-%02d-%02d", i+1, j+1) + for _, rule := range stCfg.ColumnMappingRules { + cmName, cmIdx = getGenerateName(rule, cmIdx, "cm", cmMap) cmNames = append(cmNames, cmName) c.ColumnMappings[cmName] = rule } @@ -699,12 +713,13 @@ func (c *TaskConfig) FromSubTaskConfigs(stCfgs ...*SubTaskConfig) { FilterRules: filterNames, ColumnMappingRules: cmNames, RouteRules: routeNames, - BAListName: BAListName, + BAListName: baListName, MydumperConfigName: dumpName, LoaderConfigName: loadName, SyncerConfigName: syncName, }) } + return c } // checkDuplicateString checks whether the given string array has duplicate string item diff --git a/dm/config/task_test.go b/dm/config/task_test.go index 05bf63ba56..98414bf3de 100644 --- a/dm/config/task_test.go +++ b/dm/config/task_test.go @@ -17,6 +17,7 @@ import ( "io/ioutil" "path" "sort" + "strings" . "github.com/pingcap/check" "github.com/pingcap/dm/pkg/terror" @@ -311,6 +312,16 @@ func (t *testConfig) TestTaskBlockAllowList(c *C) { c.Assert(cfg.BAList["source-1"], Equals, filterRules2) } +func WordCount(s string) map[string]int { + words := strings.Fields(s) + wordCount := make(map[string]int) + for i := range words { + wordCount[words[i]]++ + } + + return wordCount +} + func (t *testConfig) TestGenAndFromSubTaskConfigs(c *C) { var ( shardMode = ShardOptimistic @@ -352,6 +363,17 @@ func (t *testConfig) TestGenAndFromSubTaskConfigs(c *C) { TargetSchema: "db", TargetTable: "tbl", } + routeRule3 = router.TableRule{ + SchemaPattern: "database*", + TablePattern: "table*", + } + routeRule4 = router.TableRule{ + SchemaPattern: "schema*", + TablePattern: "tbs*", + TargetSchema: "schema", + TargetTable: "tbs", + } + filterRule1 = bf.BinlogEventRule{ SchemaPattern: "db*", TablePattern: "tbl1*", @@ -429,7 +451,7 @@ func (t *testConfig) TestGenAndFromSubTaskConfigs(c *C) { Security: &security, RawDBCfg: &rawDBCfg, }, - RouteRules: []*router.TableRule{&routeRule1, &routeRule2}, + RouteRules: []*router.TableRule{&routeRule2, &routeRule1, &routeRule3}, FilterRules: []*bf.BinlogEventRule{&filterRule1, &filterRule2}, BAList: &baList1, MydumperConfig: MydumperConfig{ @@ -472,9 +494,9 @@ func (t *testConfig) TestGenAndFromSubTaskConfigs(c *C) { } stCfg2.From = source2DBCfg stCfg2.BAList = &baList2 + stCfg2.RouteRules = []*router.TableRule{&routeRule4, &routeRule1, &routeRule2} - var cfg TaskConfig - cfg.FromSubTaskConfigs(stCfg1, stCfg2) + cfg := FromSubTaskConfigs(stCfg1, stCfg2) cfg2 := TaskConfig{ Name: name, @@ -493,9 +515,9 @@ func (t *testConfig) TestGenAndFromSubTaskConfigs(c *C) { { SourceID: source1, Meta: stCfg1.Meta, - FilterRules: []string{"filter-01-01", "filter-01-02"}, + FilterRules: []string{"filter-01", "filter-02"}, ColumnMappingRules: []string{}, - RouteRules: []string{"route-01-01", "route-01-02"}, + RouteRules: []string{"route-01", "route-02", "route-03"}, BWListName: "", BAListName: "balist-01", MydumperConfigName: "dump-01", @@ -511,57 +533,52 @@ func (t *testConfig) TestGenAndFromSubTaskConfigs(c *C) { { SourceID: source2, Meta: stCfg2.Meta, - FilterRules: []string{"filter-02-01", "filter-02-02"}, + FilterRules: []string{"filter-01", "filter-02"}, ColumnMappingRules: []string{}, - RouteRules: []string{"route-02-01", "route-02-02"}, + RouteRules: []string{"route-01", "route-02", "route-04"}, BWListName: "", BAListName: "balist-02", - MydumperConfigName: "dump-02", + MydumperConfigName: "dump-01", Mydumper: nil, MydumperThread: 0, - LoaderConfigName: "load-02", + LoaderConfigName: "load-01", Loader: nil, LoaderThread: 0, - SyncerConfigName: "sync-02", + SyncerConfigName: "sync-01", Syncer: nil, SyncerThread: 0, }, }, OnlineDDLScheme: onlineDDLScheme, Routes: map[string]*router.TableRule{ - "route-01-01": stCfg1.RouteRules[0], - "route-01-02": stCfg1.RouteRules[1], - "route-02-01": stCfg2.RouteRules[0], - "route-02-02": stCfg2.RouteRules[1], + "route-01": &routeRule1, + "route-02": &routeRule2, + "route-03": &routeRule3, + "route-04": &routeRule4, }, Filters: map[string]*bf.BinlogEventRule{ - "filter-01-01": stCfg1.FilterRules[0], - "filter-01-02": stCfg1.FilterRules[1], - "filter-02-01": stCfg2.FilterRules[0], - "filter-02-02": stCfg2.FilterRules[1], + "filter-01": &filterRule1, + "filter-02": &filterRule2, }, ColumnMappings: nil, BWList: nil, BAList: map[string]*filter.Rules{ - "balist-01": stCfg1.BAList, - "balist-02": stCfg2.BAList, + "balist-01": &baList1, + "balist-02": &baList2, }, Mydumpers: map[string]*MydumperConfig{ "dump-01": &stCfg1.MydumperConfig, - "dump-02": &stCfg2.MydumperConfig, }, Loaders: map[string]*LoaderConfig{ "load-01": &stCfg1.LoaderConfig, - "load-02": &stCfg2.LoaderConfig, }, Syncers: map[string]*SyncerConfig{ "sync-01": &stCfg1.SyncerConfig, - "sync-02": &stCfg2.SyncerConfig, }, CleanDumpFile: stCfg1.CleanDumpFile, } - c.Assert(cfg.String(), Equals, cfg2.String()) // some nil/(null value) compare may not equal, so use YAML format to compare. + c.Assert(WordCount(cfg.String()), DeepEquals, WordCount(cfg2.String())) // since rules are unordered, so use WordCount to compare c.Assert(cfg.adjust(), IsNil) stCfgs, err := cfg.SubTaskConfigs(map[string]DBConfig{source1: source1DBCfg, source2: source2DBCfg}) @@ -632,19 +649,19 @@ func (t *testConfig) TestMySQLInstance(c *C) { m.MydumperConfigName = "test" err = m.VerifyAndAdjust() c.Assert(terror.ErrConfigMydumperCfgConflict.Equal(err), IsTrue) - m.RemoveDuplicateCfg() + m.MydumperConfigName = "" m.Loader = &LoaderConfig{} m.LoaderConfigName = "test" err = m.VerifyAndAdjust() c.Assert(terror.ErrConfigLoaderCfgConflict.Equal(err), IsTrue) - m.RemoveDuplicateCfg() + m.Loader = nil m.Syncer = &SyncerConfig{} m.SyncerConfigName = "test" err = m.VerifyAndAdjust() c.Assert(terror.ErrConfigSyncerCfgConflict.Equal(err), IsTrue) - m.RemoveDuplicateCfg() + m.SyncerConfigName = "" c.Assert(m.VerifyAndAdjust(), IsNil) diff --git a/dm/ctl/ctl.go b/dm/ctl/ctl.go index 6752fe2fd4..4ca3827393 100644 --- a/dm/ctl/ctl.go +++ b/dm/ctl/ctl.go @@ -72,7 +72,7 @@ func NewRootCmd() *cobra.Command { master.NewOperateLeaderCmd(), master.NewListMemberCmd(), master.NewOperateSchemaCmd(), - master.NewGetTaskCfgCmd(), + master.NewGetCfgCmd(), master.NewHandleErrorCmd(), ) return cmd diff --git a/dm/ctl/master/get_task_config.go b/dm/ctl/master/get_config.go similarity index 59% rename from dm/ctl/master/get_task_config.go rename to dm/ctl/master/get_config.go index a9bd856f3c..c351962395 100644 --- a/dm/ctl/master/get_task_config.go +++ b/dm/ctl/master/get_config.go @@ -26,26 +26,50 @@ import ( "github.com/pingcap/dm/dm/pb" ) -// NewGetTaskCfgCmd creates a getTaskCfg command -func NewGetTaskCfgCmd() *cobra.Command { +// NewGetCfgCmd creates a getCfg command +func NewGetCfgCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "get-task-config [--file filename]", - Short: "Gets the task configuration.", - RunE: getTaskCfgFunc, + Use: "get-config [--file filename]", + Short: "Gets the configuration.", + RunE: getCfgFunc, } cmd.Flags().StringP("file", "f", "", "write config to file") return cmd } -// getTaskCfgFunc does get task's config -func getTaskCfgFunc(cmd *cobra.Command, _ []string) (err error) { - if len(cmd.Flags().Args()) != 1 { +func convertCfgType(t string) pb.CfgType { + switch t { + case "task": + return pb.CfgType_TaskType + case "master": + return pb.CfgType_MasterType + case "worker": + return pb.CfgType_WorkerType + case "source": + return pb.CfgType_SourceType + default: + return pb.CfgType_InvalidType + } +} + +// getCfgFunc gets config +func getCfgFunc(cmd *cobra.Command, _ []string) (err error) { + if len(cmd.Flags().Args()) != 2 { cmd.SetOut(os.Stdout) common.PrintCmdUsage(cmd) err = errors.New("please check output to see error") return } - taskName := common.GetTaskNameFromArgOrFile(cmd.Flags().Arg(0)) + + cfgType := cmd.Flags().Arg(0) + tp := convertCfgType(cfgType) + if tp == pb.CfgType_InvalidType { + common.PrintLines("invalid config type '%s'", cfgType) + err = errors.New("please check output to see error") + return + } + + cfgName := cmd.Flags().Arg(1) filename, err := cmd.Flags().GetString("file") if err != nil { common.PrintLines("can not get filename") @@ -56,11 +80,12 @@ func getTaskCfgFunc(cmd *cobra.Command, _ []string) (err error) { ctx, cancel := context.WithTimeout(context.Background(), common.GlobalConfig().RPCTimeout) defer cancel() - resp, err := cli.GetTaskCfg(ctx, &pb.GetTaskCfgRequest{ - Name: taskName, + resp, err := cli.GetCfg(ctx, &pb.GetCfgRequest{ + Type: tp, + Name: cfgName, }) if err != nil { - common.PrintLines("can not get config of task %s", taskName) + common.PrintLines("can not get %s config of %s", cfgType, cfgName) return } diff --git a/dm/master/bootstrap.go b/dm/master/bootstrap.go index 0a17d7527d..5b5d32186a 100644 --- a/dm/master/bootstrap.go +++ b/dm/master/bootstrap.go @@ -19,7 +19,6 @@ import ( "io/ioutil" "os" "path/filepath" - "sort" "strings" "sync" "time" @@ -346,14 +345,12 @@ func (s *Server) createSubtaskV1Import(tctx *tcontext.Context, var err error outerLoop: for taskName, taskCfgs := range cfgs { - cfgLists := make([]*config.SubTaskConfig, 0, len(taskCfgs)) for sourceID, cfg := range taskCfgs { var cfg2 *config.SubTaskConfig cfg2, err = cfg.DecryptPassword() if err != nil { break outerLoop } - cfgLists = append(cfgLists, cfg2) stage := stages[taskName][sourceID] switch stage { case pb.Stage_Running, pb.Stage_Paused: @@ -378,15 +375,6 @@ outerLoop: } } } - sort.Slice(cfgLists, func(i, j int) bool { - return cfgLists[i].SourceID < cfgLists[j].SourceID - }) - var mergedCfg config.TaskConfig - mergedCfg.FromSubTaskConfigs(cfgLists...) - err2 := s.scheduler.AddTaskCfg(mergedCfg) - if err2 != nil { - tctx.Logger.Error("fail to add task config into the cluster") // only log it - } } return err } diff --git a/dm/master/config.go b/dm/master/config.go index 81fa86269b..27ce41bfde 100644 --- a/dm/master/config.go +++ b/dm/master/config.go @@ -14,6 +14,7 @@ package master import ( + "bytes" "encoding/base64" "encoding/json" "flag" @@ -55,9 +56,8 @@ var ( // NewConfig creates a config for dm-master func NewConfig() *Config { cfg := &Config{} - cfg.Debug = false - cfg.FlagSet = flag.NewFlagSet("dm-master", flag.ContinueOnError) - fs := cfg.FlagSet + cfg.flagSet = flag.NewFlagSet("dm-master", flag.ContinueOnError) + fs := cfg.flagSet fs.BoolVar(&cfg.printVersion, "V", false, "prints version and exit") fs.BoolVar(&cfg.printSampleConfig, "print-sample-config", false, "print sample config file of dm-worker") @@ -88,7 +88,7 @@ func NewConfig() *Config { // Config is the configuration for dm-master type Config struct { - *flag.FlagSet `json:"-"` + flagSet *flag.FlagSet LogLevel string `toml:"log-level" json:"log-level"` LogFile string `toml:"log-file" json:"log-file"` @@ -96,14 +96,14 @@ type Config struct { LogRotate string `toml:"log-rotate" json:"log-rotate"` RPCTimeoutStr string `toml:"rpc-timeout" json:"rpc-timeout"` - RPCTimeout time.Duration `json:"-"` + RPCTimeout time.Duration `toml:"-" json:"-"` RPCRateLimit float64 `toml:"rpc-rate-limit" json:"rpc-rate-limit"` RPCRateBurst int `toml:"rpc-rate-burst" json:"rpc-rate-burst"` MasterAddr string `toml:"master-addr" json:"master-addr"` AdvertiseAddr string `toml:"advertise-addr" json:"advertise-addr"` - ConfigFile string `json:"config-file"` + ConfigFile string `toml:"config-file" json:"config-file"` // etcd relative config items // NOTE: we use `MasterAddr` to generate `ClientUrls` and `AdvertiseClientUrls` @@ -114,8 +114,7 @@ type Config struct { AdvertisePeerUrls string `toml:"advertise-peer-urls" json:"advertise-peer-urls"` InitialCluster string `toml:"initial-cluster" json:"initial-cluster"` InitialClusterState string `toml:"initial-cluster-state" json:"initial-cluster-state"` - Join string `toml:"join" json:"join"` // cluster's client address (endpoints), not peer address - Debug bool `toml:"debug" json:"debug"` // only use for test + Join string `toml:"join" json:"join"` // cluster's client address (endpoints), not peer address // directory path used to store source config files when upgrading from v1.0.x. // if this path set, DM-master leader will try to upgrade from v1.0.x to the current version. @@ -137,10 +136,22 @@ func (c *Config) String() string { return string(cfg) } +// Toml returns TOML format representation of config +func (c *Config) Toml() (string, error) { + var b bytes.Buffer + + err := toml.NewEncoder(&b).Encode(c) + if err != nil { + log.L().Error("fail to marshal config to toml", log.ShortError(err)) + } + + return b.String(), nil +} + // Parse parses flag definitions from the argument list. func (c *Config) Parse(arguments []string) error { // Parse first to get config file. - err := c.FlagSet.Parse(arguments) + err := c.flagSet.Parse(arguments) if err != nil { return terror.ErrMasterConfigParseFlagSet.Delegate(err) } @@ -173,13 +184,13 @@ func (c *Config) Parse(arguments []string) error { } // Parse again to replace with command line options. - err = c.FlagSet.Parse(arguments) + err = c.flagSet.Parse(arguments) if err != nil { return terror.ErrMasterConfigParseFlagSet.Delegate(err) } - if len(c.FlagSet.Args()) != 0 { - return terror.ErrMasterConfigInvalidFlag.Generate(c.FlagSet.Arg(0)) + if len(c.flagSet.Args()) != 0 { + return terror.ErrMasterConfigInvalidFlag.Generate(c.flagSet.Arg(0)) } return c.adjust() diff --git a/dm/master/scheduler/scheduler.go b/dm/master/scheduler/scheduler.go index 84f6adddfa..445fc250f3 100644 --- a/dm/master/scheduler/scheduler.go +++ b/dm/master/scheduler/scheduler.go @@ -76,14 +76,6 @@ type Scheduler struct { // - remove source by user request (calling `RemoveSourceCfg`). sourceCfgs map[string]config.SourceConfig - // all task configs string, task name -> task config string. - // add: - // - add/start task by user request (calling `StartTask`). - // - recover from etcd (calling `recoverTaskCfgs`). - // delete: - // - remove/stop task by user request (calling `StopTask`). - taskCfgs map[string]string - // all subtask configs, task name -> source ID -> subtask config. // add: // - add/start subtask by user request (calling `AddSubTasks`). @@ -147,7 +139,6 @@ func NewScheduler(pLogger *log.Logger, securityCfg config.Security) *Scheduler { return &Scheduler{ logger: pLogger.WithFields(zap.String("component", "scheduler")), sourceCfgs: make(map[string]config.SourceConfig), - taskCfgs: make(map[string]string), subTaskCfgs: make(map[string]map[string]config.SubTaskConfig), workers: make(map[string]*Worker), bounds: make(map[string]*Worker), @@ -178,10 +169,6 @@ func (s *Scheduler) Start(pCtx context.Context, etcdCli *clientv3.Client) error if err != nil { return err } - err = s.recoverTaskCfgs(etcdCli) - if err != nil { - return err - } err = s.recoverSubTasks(etcdCli) if err != nil { return err @@ -336,126 +323,6 @@ func (s *Scheduler) RemoveSourceCfg(source string) error { return nil } -// GetTaskCfg gets config of task -func (s *Scheduler) GetTaskCfg(task string) string { - s.mu.RLock() - defer s.mu.RUnlock() - cfg, ok := s.taskCfgs[task] - if !ok { - return "" - } - return cfg -} - -// AddTaskCfg adds the config of task -func (s *Scheduler) AddTaskCfg(cfg config.TaskConfig) error { - s.mu.Lock() - defer s.mu.Unlock() - - if !s.started { - return terror.ErrSchedulerNotStarted.Generate() - } - - if len(cfg.Name) == 0 { - return nil - } - - // 1. check whether exists. - // return nil because we may use `start-task -s source` for subtask - if _, ok := s.taskCfgs[cfg.Name]; ok { - return nil - } - - // 2. put the config into etcd. - clone := cfg - for _, mysqlInstance := range clone.MySQLInstances { - mysqlInstance.RemoveDuplicateCfg() - } - - taskCfg := clone.String() - _, err := ha.PutTaskCfg(s.etcdCli, clone.Name, taskCfg) - if err != nil { - return err - } - - // 3. record the config - s.taskCfgs[clone.Name] = taskCfg - - return nil -} - -// UpdateTaskCfg update the config of task -func (s *Scheduler) UpdateTaskCfg(cfg config.TaskConfig) error { - s.mu.Lock() - defer s.mu.Unlock() - - if !s.started { - return terror.ErrSchedulerNotStarted.Generate() - } - - if len(cfg.Name) == 0 { - return nil - } - - // 1. check whether exists. - if _, ok := s.taskCfgs[cfg.Name]; !ok { - return terror.ErrSchedulerTaskNotExist.Generate(cfg.Name) - } - - // 2. put the config into etcd. - clone := cfg - for _, mysqlInstance := range clone.MySQLInstances { - mysqlInstance.RemoveDuplicateCfg() - } - - taskCfg := clone.String() - _, err := ha.PutTaskCfg(s.etcdCli, clone.Name, taskCfg) - if err != nil { - return err - } - - // 3. record the config - s.taskCfgs[clone.Name] = taskCfg - - return nil -} - -// RemoveTaskCfg removes the config of task -func (s *Scheduler) RemoveTaskCfg(task string) error { - s.mu.Lock() - defer s.mu.Unlock() - - if !s.started { - return terror.ErrSchedulerNotStarted.Generate() - } - - // do not remove task if has subtask - // return nil because we may use `stop-task -s source` for subtask - if _, ok := s.subTaskCfgs[task]; ok { - return nil - } - - if task == "" { - return nil - } - - // 1. check the task exists. - if _, ok := s.taskCfgs[task]; !ok { - return terror.ErrSchedulerTaskNotExist.Generate(task) - } - - // 2. delete the config in etcd - _, err := ha.DeleteTaskCfg(s.etcdCli, task) - if err != nil { - return err - } - - // 3. clear the config - delete(s.taskCfgs, task) - - return nil -} - // GetSourceCfgIDs gets all added source ID func (s *Scheduler) GetSourceCfgIDs() []string { s.mu.RLock() @@ -987,22 +854,6 @@ func (s *Scheduler) recoverSources(cli *clientv3.Client) error { return nil } -// recoverTaskCfgs recovers history task config string from etcd. -func (s *Scheduler) recoverTaskCfgs(cli *clientv3.Client) error { - // get all task configs. - cfgM, _, err := ha.GetTaskCfg(cli, "") - if err != nil { - return err - } - - // recover in-memory data. - for task, cfg := range cfgM { - s.taskCfgs[task] = cfg - } - - return nil -} - // recoverSubTasks recovers history subtask configs and expectant subtask stages from etcd. func (s *Scheduler) recoverSubTasks(cli *clientv3.Client) error { // get all subtask configs. diff --git a/dm/master/server.go b/dm/master/server.go index 08651a8856..460bee1f45 100644 --- a/dm/master/server.go +++ b/dm/master/server.go @@ -461,12 +461,6 @@ func (s *Server) StartTask(ctx context.Context, req *pb.StartTaskRequest) (*pb.S return resp, nil } - err = s.scheduler.AddTaskCfg(*cfg) - if err != nil { - resp.Msg = err.Error() - return resp, nil - } - resp.Result = true if cfg.RemoveMeta { resp.Msg = "`remove-meta` in task config is deprecated, please use `start-task ... --remove-meta` instead" @@ -517,11 +511,6 @@ func (s *Server) OperateTask(ctx context.Context, req *pb.OperateTaskRequest) (* var err error if expect == pb.Stage_Stopped { err = s.scheduler.RemoveSubTasks(req.Name, sources...) - if err != nil { - resp.Msg = err.Error() - return resp, nil - } - err = s.scheduler.RemoveTaskCfg(req.Name) } else { err = s.scheduler.UpdateExpectSubTaskStage(expect, req.Name, sources...) } @@ -754,20 +743,18 @@ func (s *Server) UnlockDDLLock(ctx context.Context, req *pb.UnlockDDLLockRequest resp.Msg = "can't find task name from lock-ID" return resp, nil } - cfgStr := s.scheduler.GetTaskCfg(task) - if cfgStr == "" { + subtasks := s.scheduler.GetSubTaskCfgsByTask(task) + if len(subtasks) == 0 { resp.Msg = "task (" + task + ") which extracted from lock-ID is not found in DM" return resp, nil } - cfg := config.NewTaskConfig() - if err := cfg.Decode(cfgStr); err != nil { - resp.Msg = err.Error() - return resp, nil - } - if cfg.ShardMode != config.ShardPessimistic { - resp.Msg = "`unlock-ddl-lock` is only supported in pessimistic shard mode currently" - return resp, nil + for _, subtask := range subtasks { + if subtask.ShardMode != config.ShardPessimistic { + resp.Msg = "`unlock-ddl-lock` is only supported in pessimistic shard mode currently" + return resp, nil + } + break } // TODO: add `unlock-ddl-lock` support for Optimist later. @@ -1781,27 +1768,139 @@ func (s *Server) OperateSchema(ctx context.Context, req *pb.OperateSchemaRequest }, nil } -// GetTaskCfg implements MasterServer.GetSubTaskCfg -func (s *Server) GetTaskCfg(ctx context.Context, req *pb.GetTaskCfgRequest) (*pb.GetTaskCfgResponse, error) { +func (s *Server) createMasterClientByName(ctx context.Context, name string) (pb.MasterClient, error) { + listResp, err := s.etcdClient.MemberList(ctx) + if err != nil { + return nil, err + } + clientURLs := []string{} + for _, m := range listResp.Members { + if name == m.Name { + for _, url := range m.GetClientURLs() { + clientURLs = append(clientURLs, utils.UnwrapScheme(url)) + } + break + } + } + if len(clientURLs) == 0 { + return nil, errors.New("master not found") + } + tls, err := toolutils.NewTLS(s.cfg.SSLCA, s.cfg.SSLCert, s.cfg.SSLKey, s.cfg.AdvertiseAddr, s.cfg.CertAllowedCN) + if err != nil { + return nil, err + } + + var conn *grpc.ClientConn + for _, clientURL := range clientURLs { + //nolint:staticcheck + conn, err = grpc.Dial(clientURL, tls.ToGRPCDialOption(), grpc.WithBackoffMaxDelay(3*time.Second)) + if err == nil { + masterClient := pb.NewMasterClient(conn) + return masterClient, nil + } + log.L().Error("can not dial to master", zap.String("name", name), zap.String("client url", clientURL), log.ShortError(err)) + } + // return last err + return nil, err +} + +// GetMasterCfg implements MasterServer.GetMasterCfg +func (s *Server) GetMasterCfg(ctx context.Context, req *pb.GetMasterCfgRequest) (*pb.GetMasterCfgResponse, error) { + log.L().Info("", zap.Any("payload", req), zap.String("request", "GetMasterCfg")) + + var err error + resp := &pb.GetMasterCfgResponse{} + resp.Cfg, err = s.cfg.Toml() + return resp, err +} + +// GetCfg implements MasterServer.GetCfg +func (s *Server) GetCfg(ctx context.Context, req *pb.GetCfgRequest) (*pb.GetCfgResponse, error) { var ( - resp2 *pb.GetTaskCfgResponse + resp2 = &pb.GetCfgResponse{} err2 error + cfg string ) shouldRet := s.sharedLogic(ctx, req, &resp2, &err2) if shouldRet { return resp2, err2 } - cfg := s.scheduler.GetTaskCfg(req.Name) + switch req.Type { + case pb.CfgType_TaskType: + subCfgMap := s.scheduler.GetSubTaskCfgsByTask(req.Name) + if len(subCfgMap) == 0 { + resp2.Msg = "task not found" + return resp2, nil + } + subCfgList := make([]*config.SubTaskConfig, 0, len(subCfgMap)) + for _, subCfg := range subCfgMap { + subCfgList = append(subCfgList, subCfg) + } + sort.Slice(subCfgList, func(i, j int) bool { + return subCfgList[i].SourceID < subCfgList[j].SourceID + }) - if len(cfg) == 0 { - return &pb.GetTaskCfgResponse{ - Result: false, - Msg: "task not found", - }, nil + taskCfg := config.FromSubTaskConfigs(subCfgList...) + taskCfg.TargetDB.Password = "******" + cfg = taskCfg.String() + case pb.CfgType_MasterType: + if req.Name == s.cfg.Name { + cfg, err2 = s.cfg.Toml() + if err2 != nil { + resp2.Msg = err2.Error() + } else { + resp2.Result = true + resp2.Cfg = cfg + } + return resp2, nil + } + + masterClient, err := s.createMasterClientByName(ctx, req.Name) + if err != nil { + resp2.Msg = err.Error() + return resp2, nil + } + masterResp, err := masterClient.GetMasterCfg(ctx, &pb.GetMasterCfgRequest{}) + if err != nil { + resp2.Msg = err.Error() + return resp2, nil + } + cfg = masterResp.Cfg + case pb.CfgType_WorkerType: + worker := s.scheduler.GetWorkerByName(req.Name) + if worker == nil { + resp2.Msg = "worker not found" + return resp2, nil + } + workerReq := workerrpc.Request{ + Type: workerrpc.CmdGetWorkerCfg, + GetWorkerCfg: &pb.GetWorkerCfgRequest{}, + } + workerResp, err := worker.SendRequest(ctx, &workerReq, s.cfg.RPCTimeout) + if err != nil { + resp2.Msg = err.Error() + return resp2, nil + } + cfg = workerResp.GetWorkerCfg.Cfg + case pb.CfgType_SourceType: + sourceCfg := s.scheduler.GetSourceCfgByID(req.Name) + if sourceCfg == nil { + resp2.Msg = "source not found" + return resp2, nil + } + sourceCfg.From.Password = "******" + cfg, err2 = sourceCfg.Yaml() + if err2 != nil { + resp2.Msg = err2.Error() + return resp2, nil + } + default: + resp2.Msg = fmt.Sprintf("invalid config op '%s'", req.Type) + return resp2, nil } - return &pb.GetTaskCfgResponse{ + return &pb.GetCfgResponse{ Result: true, Cfg: cfg, }, nil diff --git a/dm/master/server_test.go b/dm/master/server_test.go index 213d75e1a9..dbbf285697 100644 --- a/dm/master/server_test.go +++ b/dm/master/server_test.go @@ -1551,7 +1551,7 @@ func (t *testMaster) TestOfflineMember(c *check.C) { clearSchedulerEnv(c, cancel, &wg) } -func (t *testMaster) TestGetTaskCfg(c *check.C) { +func (t *testMaster) TestGetCfg(c *check.C) { ctrl := gomock.NewController(c) defer ctrl.Finish() @@ -1567,6 +1567,7 @@ func (t *testMaster) TestGetTaskCfg(c *check.C) { } server.scheduler, _ = testMockScheduler(ctx, &wg, c, sources, workers, "", makeWorkerClientsForHandle(ctrl, taskName, sources, workers, req)) + server.etcdClient = etcdTestCli // start task mock := t.initVersionDB(c) @@ -1580,31 +1581,79 @@ func (t *testMaster) TestGetTaskCfg(c *check.C) { c.Assert(resp.Result, check.IsTrue) // get task config - req1 := &pb.GetTaskCfgRequest{ + req1 := &pb.GetCfgRequest{ Name: taskName, + Type: pb.CfgType_TaskType, } - resp1, err := server.GetTaskCfg(context.Background(), req1) + resp1, err := server.GetCfg(context.Background(), req1) c.Assert(err, check.IsNil) c.Assert(resp1.Result, check.IsTrue) c.Assert(strings.Contains(resp1.Cfg, "name: test"), check.IsTrue) // wrong task name - req2 := &pb.GetTaskCfgRequest{ + req2 := &pb.GetCfgRequest{ Name: "haha", + Type: pb.CfgType_TaskType, } - resp2, err := server.GetTaskCfg(context.Background(), req2) + resp2, err := server.GetCfg(context.Background(), req2) c.Assert(err, check.IsNil) c.Assert(resp2.Result, check.IsFalse) + c.Assert(resp2.Msg, check.Equals, "task not found") - // test recover from etcd + // test restart master server.scheduler.Close() c.Assert(server.scheduler.Start(ctx, etcdTestCli), check.IsNil) - resp3, err := server.GetTaskCfg(context.Background(), req1) + resp3, err := server.GetCfg(context.Background(), req1) c.Assert(err, check.IsNil) c.Assert(resp3.Result, check.IsTrue) c.Assert(resp3.Cfg, check.Equals, resp1.Cfg) + req3 := &pb.GetCfgRequest{ + Name: "dm-master", + Type: pb.CfgType_MasterType, + } + resp4, err := server.GetCfg(context.Background(), req3) + c.Assert(err, check.IsNil) + c.Assert(resp4.Result, check.IsTrue) + c.Assert(strings.Contains(resp4.Cfg, "name = \"dm-master\""), check.IsTrue) + + req4 := &pb.GetCfgRequest{ + Name: "haha", + Type: pb.CfgType_MasterType, + } + resp5, err := server.GetCfg(context.Background(), req4) + c.Assert(err, check.IsNil) + c.Assert(resp5.Result, check.IsFalse) + c.Assert(resp5.Msg, check.Equals, "master not found") + + req5 := &pb.GetCfgRequest{ + Name: "haha", + Type: pb.CfgType_WorkerType, + } + resp6, err := server.GetCfg(context.Background(), req5) + c.Assert(err, check.IsNil) + c.Assert(resp6.Result, check.IsFalse) + c.Assert(resp6.Msg, check.Equals, "worker not found") + + req6 := &pb.GetCfgRequest{ + Name: "mysql-replica-01", + Type: pb.CfgType_SourceType, + } + resp7, err := server.GetCfg(context.Background(), req6) + c.Assert(err, check.IsNil) + c.Assert(resp7.Result, check.IsTrue) + c.Assert(strings.Contains(resp7.Cfg, "source-id: mysql-replica-01"), check.IsTrue, check.Commentf(resp7.Cfg)) + + req7 := &pb.GetCfgRequest{ + Name: "haha", + Type: pb.CfgType_SourceType, + } + resp8, err := server.GetCfg(context.Background(), req7) + c.Assert(err, check.IsNil) + c.Assert(resp8.Result, check.IsFalse) + c.Assert(resp8.Msg, check.Equals, "source not found") + clearSchedulerEnv(c, cancel, &wg) } diff --git a/dm/master/workerrpc/interface.go b/dm/master/workerrpc/interface.go index 73d2c614ec..cbda750e2f 100644 --- a/dm/master/workerrpc/interface.go +++ b/dm/master/workerrpc/interface.go @@ -46,6 +46,7 @@ const ( CmdOperateV1Meta CmdHandleError + CmdGetWorkerCfg ) // Request wraps all dm-worker rpc requests. @@ -60,6 +61,7 @@ type Request struct { OperateV1Meta *pb.OperateV1MetaRequest HandleError *pb.HandleWorkerErrorRequest + GetWorkerCfg *pb.GetWorkerCfgRequest } // Response wraps all dm-worker rpc responses. @@ -74,6 +76,7 @@ type Response struct { OperateV1Meta *pb.OperateV1MetaResponse HandleError *pb.CommonWorkerResponse + GetWorkerCfg *pb.GetWorkerCfgResponse } // Client is a client that sends RPC. diff --git a/dm/master/workerrpc/rawgrpc.go b/dm/master/workerrpc/rawgrpc.go index 0b3cf814ef..4b90dcced5 100644 --- a/dm/master/workerrpc/rawgrpc.go +++ b/dm/master/workerrpc/rawgrpc.go @@ -113,6 +113,8 @@ func callRPC(ctx context.Context, client pb.WorkerClient, req *Request) (*Respon resp.OperateV1Meta, err = client.OperateV1Meta(ctx, req.OperateV1Meta) case CmdHandleError: resp.HandleError, err = client.HandleError(ctx, req.HandleError) + case CmdGetWorkerCfg: + resp.GetWorkerCfg, err = client.GetWorkerCfg(ctx, req.GetWorkerCfg) default: return nil, terror.ErrMasterGRPCInvalidReqType.Generate(req.Type) } diff --git a/dm/pb/dmmaster.pb.go b/dm/pb/dmmaster.pb.go index 65f3e859bd..91233745d7 100644 --- a/dm/pb/dmmaster.pb.go +++ b/dm/pb/dmmaster.pb.go @@ -90,6 +90,40 @@ func (LeaderOp) EnumDescriptor() ([]byte, []int) { return fileDescriptor_f9bef11f2a341f03, []int{1} } +type CfgType int32 + +const ( + CfgType_InvalidType CfgType = 0 + CfgType_TaskType CfgType = 1 + CfgType_MasterType CfgType = 2 + CfgType_WorkerType CfgType = 3 + CfgType_SourceType CfgType = 4 +) + +var CfgType_name = map[int32]string{ + 0: "InvalidType", + 1: "TaskType", + 2: "MasterType", + 3: "WorkerType", + 4: "SourceType", +} + +var CfgType_value = map[string]int32{ + "InvalidType": 0, + "TaskType": 1, + "MasterType": 2, + "WorkerType": 3, + "SourceType": 4, +} + +func (x CfgType) String() string { + return proto.EnumName(CfgType_name, int32(x)) +} + +func (CfgType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_f9bef11f2a341f03, []int{2} +} + type StartTaskRequest struct { Task string `protobuf:"bytes,1,opt,name=task,proto3" json:"task,omitempty"` Sources []string `protobuf:"bytes,2,rep,name=sources,proto3" json:"sources,omitempty"` @@ -2467,23 +2501,23 @@ func (m *GetSubTaskCfgResponse) GetCfgs() []string { return nil } -type GetTaskCfgRequest struct { - // the task name - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +type GetCfgRequest struct { + Type CfgType `protobuf:"varint,1,opt,name=type,proto3,enum=pb.CfgType" json:"type,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (m *GetTaskCfgRequest) Reset() { *m = GetTaskCfgRequest{} } -func (m *GetTaskCfgRequest) String() string { return proto.CompactTextString(m) } -func (*GetTaskCfgRequest) ProtoMessage() {} -func (*GetTaskCfgRequest) Descriptor() ([]byte, []int) { +func (m *GetCfgRequest) Reset() { *m = GetCfgRequest{} } +func (m *GetCfgRequest) String() string { return proto.CompactTextString(m) } +func (*GetCfgRequest) ProtoMessage() {} +func (*GetCfgRequest) Descriptor() ([]byte, []int) { return fileDescriptor_f9bef11f2a341f03, []int{39} } -func (m *GetTaskCfgRequest) XXX_Unmarshal(b []byte) error { +func (m *GetCfgRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *GetTaskCfgRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetCfgRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_GetTaskCfgRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_GetCfgRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2493,43 +2527,50 @@ func (m *GetTaskCfgRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, e return b[:n], nil } } -func (m *GetTaskCfgRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTaskCfgRequest.Merge(m, src) +func (m *GetCfgRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetCfgRequest.Merge(m, src) } -func (m *GetTaskCfgRequest) XXX_Size() int { +func (m *GetCfgRequest) XXX_Size() int { return m.Size() } -func (m *GetTaskCfgRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetTaskCfgRequest.DiscardUnknown(m) +func (m *GetCfgRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetCfgRequest.DiscardUnknown(m) } -var xxx_messageInfo_GetTaskCfgRequest proto.InternalMessageInfo +var xxx_messageInfo_GetCfgRequest proto.InternalMessageInfo + +func (m *GetCfgRequest) GetType() CfgType { + if m != nil { + return m.Type + } + return CfgType_InvalidType +} -func (m *GetTaskCfgRequest) GetName() string { +func (m *GetCfgRequest) GetName() string { if m != nil { return m.Name } return "" } -type GetTaskCfgResponse struct { +type GetCfgResponse struct { Result bool `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"` Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` Cfg string `protobuf:"bytes,3,opt,name=cfg,proto3" json:"cfg,omitempty"` } -func (m *GetTaskCfgResponse) Reset() { *m = GetTaskCfgResponse{} } -func (m *GetTaskCfgResponse) String() string { return proto.CompactTextString(m) } -func (*GetTaskCfgResponse) ProtoMessage() {} -func (*GetTaskCfgResponse) Descriptor() ([]byte, []int) { +func (m *GetCfgResponse) Reset() { *m = GetCfgResponse{} } +func (m *GetCfgResponse) String() string { return proto.CompactTextString(m) } +func (*GetCfgResponse) ProtoMessage() {} +func (*GetCfgResponse) Descriptor() ([]byte, []int) { return fileDescriptor_f9bef11f2a341f03, []int{40} } -func (m *GetTaskCfgResponse) XXX_Unmarshal(b []byte) error { +func (m *GetCfgResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *GetTaskCfgResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetCfgResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_GetTaskCfgResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_GetCfgResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -2539,33 +2580,113 @@ func (m *GetTaskCfgResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *GetTaskCfgResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTaskCfgResponse.Merge(m, src) +func (m *GetCfgResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetCfgResponse.Merge(m, src) } -func (m *GetTaskCfgResponse) XXX_Size() int { +func (m *GetCfgResponse) XXX_Size() int { return m.Size() } -func (m *GetTaskCfgResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetTaskCfgResponse.DiscardUnknown(m) +func (m *GetCfgResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetCfgResponse.DiscardUnknown(m) } -var xxx_messageInfo_GetTaskCfgResponse proto.InternalMessageInfo +var xxx_messageInfo_GetCfgResponse proto.InternalMessageInfo -func (m *GetTaskCfgResponse) GetResult() bool { +func (m *GetCfgResponse) GetResult() bool { if m != nil { return m.Result } return false } -func (m *GetTaskCfgResponse) GetMsg() string { +func (m *GetCfgResponse) GetMsg() string { if m != nil { return m.Msg } return "" } -func (m *GetTaskCfgResponse) GetCfg() string { +func (m *GetCfgResponse) GetCfg() string { + if m != nil { + return m.Cfg + } + return "" +} + +type GetMasterCfgRequest struct { +} + +func (m *GetMasterCfgRequest) Reset() { *m = GetMasterCfgRequest{} } +func (m *GetMasterCfgRequest) String() string { return proto.CompactTextString(m) } +func (*GetMasterCfgRequest) ProtoMessage() {} +func (*GetMasterCfgRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f9bef11f2a341f03, []int{41} +} +func (m *GetMasterCfgRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetMasterCfgRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetMasterCfgRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetMasterCfgRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMasterCfgRequest.Merge(m, src) +} +func (m *GetMasterCfgRequest) XXX_Size() int { + return m.Size() +} +func (m *GetMasterCfgRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetMasterCfgRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetMasterCfgRequest proto.InternalMessageInfo + +type GetMasterCfgResponse struct { + Cfg string `protobuf:"bytes,1,opt,name=cfg,proto3" json:"cfg,omitempty"` +} + +func (m *GetMasterCfgResponse) Reset() { *m = GetMasterCfgResponse{} } +func (m *GetMasterCfgResponse) String() string { return proto.CompactTextString(m) } +func (*GetMasterCfgResponse) ProtoMessage() {} +func (*GetMasterCfgResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f9bef11f2a341f03, []int{42} +} +func (m *GetMasterCfgResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetMasterCfgResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetMasterCfgResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetMasterCfgResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetMasterCfgResponse.Merge(m, src) +} +func (m *GetMasterCfgResponse) XXX_Size() int { + return m.Size() +} +func (m *GetMasterCfgResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetMasterCfgResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetMasterCfgResponse proto.InternalMessageInfo + +func (m *GetMasterCfgResponse) GetCfg() string { if m != nil { return m.Cfg } @@ -2584,7 +2705,7 @@ func (m *HandleErrorRequest) Reset() { *m = HandleErrorRequest{} } func (m *HandleErrorRequest) String() string { return proto.CompactTextString(m) } func (*HandleErrorRequest) ProtoMessage() {} func (*HandleErrorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f9bef11f2a341f03, []int{41} + return fileDescriptor_f9bef11f2a341f03, []int{43} } func (m *HandleErrorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2658,7 +2779,7 @@ func (m *HandleErrorResponse) Reset() { *m = HandleErrorResponse{} } func (m *HandleErrorResponse) String() string { return proto.CompactTextString(m) } func (*HandleErrorResponse) ProtoMessage() {} func (*HandleErrorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f9bef11f2a341f03, []int{42} + return fileDescriptor_f9bef11f2a341f03, []int{44} } func (m *HandleErrorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2711,6 +2832,7 @@ func (m *HandleErrorResponse) GetSources() []*CommonWorkerResponse { func init() { proto.RegisterEnum("pb.SourceOp", SourceOp_name, SourceOp_value) proto.RegisterEnum("pb.LeaderOp", LeaderOp_name, LeaderOp_value) + proto.RegisterEnum("pb.CfgType", CfgType_name, CfgType_value) proto.RegisterType((*StartTaskRequest)(nil), "pb.StartTaskRequest") proto.RegisterType((*StartTaskResponse)(nil), "pb.StartTaskResponse") proto.RegisterType((*OperateTaskRequest)(nil), "pb.OperateTaskRequest") @@ -2750,8 +2872,10 @@ func init() { proto.RegisterType((*OperateSchemaResponse)(nil), "pb.OperateSchemaResponse") proto.RegisterType((*GetSubTaskCfgRequest)(nil), "pb.GetSubTaskCfgRequest") proto.RegisterType((*GetSubTaskCfgResponse)(nil), "pb.GetSubTaskCfgResponse") - proto.RegisterType((*GetTaskCfgRequest)(nil), "pb.GetTaskCfgRequest") - proto.RegisterType((*GetTaskCfgResponse)(nil), "pb.GetTaskCfgResponse") + proto.RegisterType((*GetCfgRequest)(nil), "pb.GetCfgRequest") + proto.RegisterType((*GetCfgResponse)(nil), "pb.GetCfgResponse") + proto.RegisterType((*GetMasterCfgRequest)(nil), "pb.GetMasterCfgRequest") + proto.RegisterType((*GetMasterCfgResponse)(nil), "pb.GetMasterCfgResponse") proto.RegisterType((*HandleErrorRequest)(nil), "pb.HandleErrorRequest") proto.RegisterType((*HandleErrorResponse)(nil), "pb.HandleErrorResponse") } @@ -2759,119 +2883,125 @@ func init() { func init() { proto.RegisterFile("dmmaster.proto", fileDescriptor_f9bef11f2a341f03) } var fileDescriptor_f9bef11f2a341f03 = []byte{ - // 1781 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4b, 0x6f, 0xdb, 0xd8, - 0x15, 0x16, 0x25, 0xd9, 0x96, 0x8f, 0x6c, 0x47, 0xbe, 0x96, 0x65, 0x99, 0x76, 0x14, 0xe7, 0x36, - 0x49, 0x0d, 0xa3, 0xb0, 0x10, 0xb7, 0xab, 0x00, 0x29, 0x90, 0x58, 0x79, 0x18, 0x75, 0xea, 0x94, - 0xae, 0x51, 0x04, 0x05, 0x8a, 0x50, 0xd4, 0x95, 0x4c, 0x98, 0x22, 0x19, 0x92, 0xb2, 0x6b, 0x04, - 0xd9, 0xf4, 0x07, 0xf4, 0x81, 0x2e, 0xb2, 0x9c, 0xc5, 0x6c, 0xe7, 0x87, 0xcc, 0x32, 0xc0, 0x6c, - 0x66, 0x39, 0x48, 0xe6, 0x4f, 0xcc, 0x6e, 0x70, 0xcf, 0xbd, 0xa4, 0xf8, 0x92, 0x27, 0x0a, 0x30, - 0xde, 0xf1, 0xdc, 0x73, 0x79, 0xbe, 0xf3, 0xe2, 0x79, 0x10, 0x96, 0x7a, 0xc3, 0xa1, 0xee, 0x07, - 0xcc, 0xdb, 0x75, 0x3d, 0x27, 0x70, 0x48, 0xd1, 0xed, 0xaa, 0x4b, 0xbd, 0xe1, 0x85, 0xe3, 0x9d, - 0x85, 0x67, 0xea, 0xe6, 0xc0, 0x71, 0x06, 0x16, 0x6b, 0xeb, 0xae, 0xd9, 0xd6, 0x6d, 0xdb, 0x09, - 0xf4, 0xc0, 0x74, 0x6c, 0x5f, 0x70, 0xe9, 0x6b, 0xa8, 0x1d, 0x07, 0xba, 0x17, 0xfc, 0x55, 0xf7, - 0xcf, 0x34, 0xf6, 0x66, 0xc4, 0xfc, 0x80, 0x10, 0x28, 0x07, 0xba, 0x7f, 0xd6, 0x54, 0xb6, 0x94, - 0xed, 0x79, 0x0d, 0x9f, 0x49, 0x13, 0xe6, 0x7c, 0x67, 0xe4, 0x19, 0xcc, 0x6f, 0x16, 0xb7, 0x4a, - 0xdb, 0xf3, 0x5a, 0x48, 0x92, 0x16, 0x80, 0xc7, 0x86, 0xce, 0x39, 0x7b, 0xc1, 0x02, 0xbd, 0x59, - 0xda, 0x52, 0xb6, 0x2b, 0x5a, 0xec, 0x84, 0xbe, 0x81, 0xe5, 0x18, 0x82, 0xef, 0x3a, 0xb6, 0xcf, - 0x48, 0x03, 0x66, 0x3d, 0xe6, 0x8f, 0xac, 0x00, 0x41, 0x2a, 0x9a, 0xa4, 0x48, 0x0d, 0x4a, 0x43, - 0x7f, 0xd0, 0x2c, 0x22, 0x32, 0x7f, 0x24, 0x7b, 0x63, 0xe0, 0xd2, 0x56, 0x69, 0xbb, 0xba, 0xd7, - 0xdc, 0x75, 0xbb, 0xbb, 0xfb, 0xce, 0x70, 0xe8, 0xd8, 0x7f, 0x43, 0x3b, 0x43, 0xa1, 0x91, 0x4a, - 0xf4, 0x1f, 0x40, 0x8e, 0x5c, 0xe6, 0xe9, 0x01, 0x8b, 0x9b, 0xa5, 0x42, 0xd1, 0x71, 0x11, 0x6f, - 0x69, 0x0f, 0xb8, 0x10, 0xce, 0x3c, 0x72, 0xb5, 0xa2, 0xe3, 0x72, 0x93, 0x6d, 0x7d, 0xc8, 0x24, - 0x30, 0x3e, 0xc7, 0x4d, 0x2e, 0x25, 0x4c, 0xa6, 0xff, 0x51, 0x60, 0x25, 0x01, 0x20, 0xad, 0xba, - 0x0a, 0x61, 0x6c, 0x71, 0x31, 0xcf, 0xe2, 0x52, 0xae, 0xc5, 0xe5, 0xcf, 0xb5, 0xf8, 0x11, 0x2c, - 0x9f, 0xb8, 0xbd, 0x94, 0xc1, 0x53, 0xc5, 0x91, 0x7a, 0x40, 0xe2, 0x22, 0xae, 0x25, 0x50, 0x4f, - 0xa1, 0xf1, 0x97, 0x11, 0xf3, 0x2e, 0x8f, 0x03, 0x3d, 0x18, 0xf9, 0x87, 0xa6, 0x1f, 0xc4, 0x74, - 0xc7, 0x80, 0x28, 0xf9, 0x01, 0x49, 0xe9, 0x7e, 0x0e, 0x6b, 0x19, 0x39, 0x53, 0x1b, 0x70, 0x3f, - 0x6d, 0xc0, 0x1a, 0x37, 0x20, 0x26, 0x37, 0xab, 0xff, 0x3e, 0xac, 0x1c, 0x9f, 0x3a, 0x17, 0x9d, - 0xce, 0xe1, 0xa1, 0x63, 0x9c, 0xf9, 0x5f, 0xe6, 0xf8, 0xaf, 0x14, 0x98, 0x93, 0x12, 0xc8, 0x12, - 0x14, 0x0f, 0x3a, 0xf2, 0xbd, 0xe2, 0x41, 0x27, 0x92, 0x54, 0x8c, 0x49, 0x22, 0x50, 0x1e, 0x3a, - 0x3d, 0x26, 0x53, 0x06, 0x9f, 0x49, 0x1d, 0x66, 0x9c, 0x0b, 0x9b, 0x79, 0xcd, 0x32, 0x1e, 0x0a, - 0x82, 0xdf, 0xec, 0x74, 0x0e, 0xfd, 0xe6, 0x0c, 0x02, 0xe2, 0x33, 0xf7, 0x87, 0x7f, 0x69, 0x1b, - 0xac, 0xd7, 0x9c, 0xc5, 0x53, 0x49, 0x11, 0x15, 0x2a, 0x23, 0x5b, 0x72, 0xe6, 0x90, 0x13, 0xd1, - 0xd4, 0x80, 0x7a, 0xd2, 0xcc, 0xa9, 0x7d, 0x7b, 0x1b, 0x66, 0x2c, 0xfe, 0xaa, 0xf4, 0x6c, 0x95, - 0x7b, 0x56, 0x8a, 0xd3, 0x04, 0x87, 0x5a, 0x50, 0x3f, 0xb1, 0xf9, 0x63, 0x78, 0x2e, 0x9d, 0x99, - 0x76, 0x09, 0x85, 0x05, 0x8f, 0xb9, 0x96, 0x6e, 0xb0, 0x23, 0xb4, 0x58, 0xa0, 0x24, 0xce, 0xc8, - 0x16, 0x54, 0xfb, 0x8e, 0x67, 0x30, 0x0d, 0xcb, 0x90, 0x2c, 0x4a, 0xf1, 0x23, 0xfa, 0x08, 0x56, - 0x53, 0x68, 0xd3, 0xda, 0x44, 0x35, 0x58, 0x97, 0x45, 0x20, 0x4c, 0x6f, 0x4b, 0xbf, 0x0c, 0xb5, - 0xde, 0x88, 0x95, 0x02, 0xb4, 0x16, 0xb9, 0xb2, 0x16, 0x4c, 0xce, 0x85, 0xf7, 0x0a, 0xa8, 0x79, - 0x42, 0xa5, 0x72, 0x57, 0x4a, 0xfd, 0x75, 0x2b, 0xcc, 0x7b, 0x05, 0xd6, 0x5e, 0x8e, 0xbc, 0x41, - 0x9e, 0xb1, 0x31, 0x7b, 0x94, 0x64, 0x73, 0x50, 0xa1, 0x62, 0xda, 0xba, 0x11, 0x98, 0xe7, 0x4c, - 0x6a, 0x15, 0xd1, 0x98, 0xdb, 0xe6, 0x50, 0x44, 0xa7, 0xa4, 0xe1, 0x33, 0xbf, 0xdf, 0x37, 0x2d, - 0x86, 0x9f, 0xbe, 0x48, 0xe5, 0x88, 0xc6, 0xcc, 0x1d, 0x75, 0x3b, 0xa6, 0xd7, 0x9c, 0x41, 0x8e, - 0xa4, 0xe8, 0x3f, 0xa1, 0x99, 0x55, 0xec, 0x5a, 0xca, 0xd7, 0x3d, 0xa8, 0xed, 0x9f, 0x32, 0xe3, - 0xec, 0x17, 0x8a, 0x2e, 0x7d, 0x08, 0xcb, 0xb1, 0x7b, 0x53, 0x27, 0xda, 0x29, 0xd4, 0x65, 0x4e, - 0x1c, 0x23, 0x70, 0x08, 0xb5, 0x19, 0xcb, 0x86, 0x05, 0xae, 0xad, 0x60, 0x8f, 0xd3, 0xc1, 0x70, - 0xec, 0xbe, 0x39, 0x90, 0x39, 0x26, 0x29, 0xee, 0x62, 0xa1, 0xff, 0x41, 0x47, 0xf6, 0xb5, 0x88, - 0xa6, 0x23, 0x58, 0x4d, 0x21, 0x5d, 0x8b, 0x1f, 0x9f, 0xc0, 0xaa, 0xc6, 0x06, 0x26, 0x1f, 0x64, - 0xc2, 0x2b, 0x57, 0x76, 0x01, 0xbd, 0xd7, 0xf3, 0x98, 0xef, 0x4b, 0xd8, 0x90, 0xa4, 0x8f, 0xa1, - 0x91, 0x16, 0x33, 0xb5, 0xaf, 0xff, 0x08, 0xf5, 0xa3, 0x7e, 0xdf, 0x32, 0x6d, 0xf6, 0x82, 0x0d, - 0xbb, 0x09, 0x4d, 0x82, 0x4b, 0x37, 0xd2, 0x84, 0x3f, 0xe7, 0x0d, 0x0d, 0xbc, 0xae, 0xa4, 0xde, - 0x9f, 0x5a, 0x85, 0x3f, 0x44, 0xe1, 0x3e, 0x64, 0x7a, 0x6f, 0xac, 0x42, 0x26, 0xdc, 0x82, 0x2d, - 0xc2, 0x8d, 0xc0, 0xc9, 0xb7, 0xa6, 0x06, 0xfe, 0xb7, 0x02, 0xf0, 0x02, 0xc7, 0xc9, 0x03, 0xbb, - 0xef, 0xe4, 0x3a, 0x5f, 0x85, 0xca, 0x10, 0xed, 0x3a, 0xe8, 0xe0, 0x9b, 0x65, 0x2d, 0xa2, 0x79, - 0x0f, 0xd2, 0x2d, 0x33, 0x2a, 0xb7, 0x82, 0xe0, 0x6f, 0xb8, 0x8c, 0x79, 0x27, 0xda, 0xa1, 0x28, - 0x36, 0xf3, 0x5a, 0x44, 0xf3, 0xd1, 0xd1, 0xb0, 0x4c, 0x66, 0x07, 0xc8, 0x15, 0x5d, 0x2a, 0x76, - 0x42, 0xbb, 0x00, 0x22, 0x90, 0x13, 0xf5, 0x21, 0x50, 0xe6, 0xd1, 0x0f, 0x43, 0xc0, 0x9f, 0xb9, - 0x1e, 0x7e, 0xa0, 0x0f, 0xc2, 0x06, 0x29, 0x08, 0xac, 0x1e, 0x98, 0x6e, 0xb2, 0xae, 0x48, 0x8a, - 0x1e, 0x42, 0x8d, 0xcf, 0x0b, 0xc2, 0x69, 0x22, 0x66, 0xa1, 0x6b, 0x94, 0x71, 0x56, 0xe7, 0xcd, - 0x87, 0x21, 0x76, 0x69, 0x8c, 0x4d, 0xff, 0x2c, 0xa4, 0x09, 0x2f, 0x4e, 0x94, 0xb6, 0x0d, 0x73, - 0x62, 0x6c, 0x17, 0xf5, 0xbf, 0xba, 0xb7, 0xc4, 0xc3, 0x39, 0x76, 0xbd, 0x16, 0xb2, 0x43, 0x79, - 0xc2, 0x0b, 0x57, 0xc9, 0x13, 0x23, 0x7f, 0x42, 0xde, 0xd8, 0x75, 0x5a, 0xc8, 0xa6, 0x5f, 0x2b, - 0x30, 0x27, 0xc4, 0xf8, 0x64, 0x17, 0x66, 0x2d, 0xb4, 0x1a, 0x45, 0x55, 0xf7, 0xea, 0x98, 0x53, - 0x29, 0x5f, 0x3c, 0x2f, 0x68, 0xf2, 0x16, 0xbf, 0x2f, 0xd4, 0x42, 0x2f, 0xc4, 0xee, 0xc7, 0xad, - 0xe5, 0xf7, 0xc5, 0x2d, 0x7e, 0x5f, 0xc0, 0xa2, 0x87, 0x62, 0xf7, 0xe3, 0xd6, 0xf0, 0xfb, 0xe2, - 0xd6, 0xe3, 0x0a, 0xcc, 0x8a, 0x5c, 0xe2, 0x2b, 0x03, 0xca, 0x4d, 0x7c, 0x81, 0x8d, 0x84, 0xba, - 0x95, 0x48, 0xad, 0x46, 0x42, 0xad, 0x4a, 0x04, 0xdf, 0x48, 0xc0, 0x57, 0x42, 0x18, 0x9e, 0x1e, - 0x3c, 0x7c, 0x61, 0x36, 0x0a, 0x82, 0x32, 0x20, 0x71, 0xc8, 0xa9, 0xcb, 0xde, 0x5d, 0x98, 0x13, - 0xca, 0x27, 0x46, 0x1c, 0xe9, 0x6a, 0x2d, 0xe4, 0xd1, 0x6f, 0x94, 0x71, 0x2d, 0x37, 0x4e, 0xd9, - 0x50, 0x9f, 0x5c, 0xcb, 0x91, 0x3d, 0x5e, 0x4f, 0x32, 0x63, 0xe0, 0xc4, 0xf5, 0x84, 0x7f, 0x72, - 0x3d, 0x3d, 0xd0, 0xbb, 0xba, 0x1f, 0x35, 0xd1, 0x90, 0xe6, 0xd6, 0x07, 0x7a, 0xd7, 0x62, 0xb2, - 0x87, 0x0a, 0x02, 0x3f, 0x0e, 0xc4, 0x6b, 0xce, 0xca, 0x8f, 0x03, 0xa9, 0x78, 0x3f, 0x90, 0xda, - 0x5e, 0x4b, 0x3f, 0xd8, 0x81, 0xfa, 0x33, 0x16, 0x1c, 0x8f, 0xba, 0xbc, 0x61, 0xee, 0xf7, 0x07, - 0x57, 0xb4, 0x03, 0x7a, 0x02, 0xab, 0xa9, 0xbb, 0x53, 0xab, 0x48, 0xa0, 0x6c, 0xf4, 0x07, 0xa1, - 0x1b, 0xf1, 0x99, 0xfe, 0x16, 0x96, 0x9f, 0xb1, 0xe0, 0x33, 0xf0, 0x5f, 0x02, 0x89, 0x5f, 0x9c, - 0x1a, 0xbc, 0x06, 0x25, 0xa3, 0x1f, 0x4d, 0x67, 0x46, 0x7f, 0x40, 0xff, 0xa7, 0x00, 0x79, 0xae, - 0xdb, 0x3d, 0x8b, 0x3d, 0xf1, 0x3c, 0xc7, 0x9b, 0x38, 0x51, 0x22, 0xf7, 0x8b, 0x12, 0x64, 0x13, - 0xe6, 0xbb, 0xa6, 0x6d, 0x39, 0x83, 0x97, 0x8e, 0x2f, 0x33, 0x64, 0x7c, 0xc0, 0x65, 0xf9, 0x6f, - 0xac, 0x68, 0x6b, 0xe0, 0xcf, 0xd4, 0x87, 0x95, 0x84, 0x4a, 0xd7, 0x91, 0x06, 0x3b, 0x5d, 0xa8, - 0x84, 0x13, 0x0d, 0x59, 0x81, 0x1b, 0x07, 0xf6, 0xb9, 0x6e, 0x99, 0xbd, 0xf0, 0xa8, 0x56, 0x20, - 0x37, 0xa0, 0x8a, 0xbf, 0x16, 0xc4, 0x51, 0x4d, 0x21, 0x35, 0x58, 0x10, 0x3b, 0xac, 0x3c, 0x29, - 0x92, 0x25, 0x80, 0xe3, 0xc0, 0x71, 0x25, 0x5d, 0x42, 0xfa, 0xd4, 0xb9, 0x90, 0x74, 0x79, 0xe7, - 0x4f, 0x50, 0x09, 0xdb, 0x68, 0x0c, 0x23, 0x3c, 0xaa, 0x15, 0xc8, 0x32, 0x2c, 0x3e, 0x39, 0x37, - 0x8d, 0x20, 0x3a, 0x52, 0xc8, 0x1a, 0xac, 0xec, 0xeb, 0xb6, 0xc1, 0xac, 0x24, 0xa3, 0xb8, 0xf7, - 0xd3, 0x02, 0xcc, 0x8a, 0x62, 0x48, 0x5e, 0xc1, 0x7c, 0xf4, 0xd7, 0x83, 0x60, 0xe5, 0x4b, 0xff, - 0x66, 0x51, 0x57, 0x53, 0xa7, 0xc2, 0x7c, 0x7a, 0xeb, 0x5f, 0xdf, 0xfd, 0xf8, 0xff, 0xe2, 0x3a, - 0xad, 0xb7, 0x75, 0xd7, 0xf4, 0xdb, 0xe7, 0xf7, 0x75, 0xcb, 0x3d, 0xd5, 0xef, 0xb7, 0x79, 0x4c, - 0xfd, 0x07, 0xca, 0x0e, 0xe9, 0x43, 0x35, 0xf6, 0xf3, 0x81, 0x34, 0xb8, 0x98, 0xec, 0xef, 0x0e, - 0x75, 0x2d, 0x73, 0x2e, 0x01, 0xee, 0x21, 0xc0, 0x96, 0xba, 0x91, 0x07, 0xd0, 0x7e, 0xcb, 0xb3, - 0xfa, 0x1d, 0xc7, 0x79, 0x08, 0x30, 0xfe, 0x21, 0x40, 0x50, 0xdb, 0xcc, 0x3f, 0x06, 0xb5, 0x91, - 0x3e, 0x96, 0x20, 0x05, 0x62, 0x41, 0x35, 0xb6, 0x3b, 0x13, 0x35, 0xb5, 0x4c, 0xc7, 0x96, 0x7d, - 0x75, 0x23, 0x97, 0x27, 0x25, 0xdd, 0x41, 0x75, 0x5b, 0x64, 0x33, 0xa5, 0xae, 0x8f, 0x57, 0xa5, - 0xbe, 0x64, 0x1f, 0x16, 0xe2, 0x2b, 0x2a, 0x41, 0xeb, 0x73, 0x76, 0x73, 0xb5, 0x99, 0x65, 0x44, - 0x2a, 0x3f, 0x85, 0xc5, 0xc4, 0x52, 0x48, 0xf0, 0x72, 0xde, 0x56, 0xaa, 0xae, 0xe7, 0x70, 0x22, - 0x39, 0xaf, 0xa0, 0x91, 0x5d, 0xe2, 0xd0, 0x8b, 0x37, 0x63, 0x41, 0xc9, 0x2e, 0x52, 0x6a, 0x6b, - 0x12, 0x3b, 0x12, 0x7d, 0x04, 0xb5, 0xf4, 0xb2, 0x43, 0xd0, 0x7d, 0x13, 0x76, 0x33, 0x75, 0x33, - 0x9f, 0x19, 0x09, 0x7c, 0x00, 0xf3, 0xd1, 0x6e, 0x22, 0x12, 0x35, 0xbd, 0xd2, 0x88, 0x44, 0xcd, - 0x2c, 0x30, 0xb4, 0x40, 0x06, 0xb0, 0x98, 0x58, 0x17, 0x84, 0xbf, 0xf2, 0x76, 0x15, 0xe1, 0xaf, - 0xdc, 0xdd, 0x82, 0xde, 0xc6, 0x00, 0x6f, 0xa8, 0x8d, 0x74, 0x80, 0x45, 0x19, 0xe0, 0xa9, 0x78, - 0x00, 0x4b, 0xc9, 0xc9, 0x9e, 0xac, 0x8b, 0xed, 0x37, 0x67, 0x69, 0x50, 0xd5, 0x3c, 0x56, 0xa4, - 0xb3, 0x07, 0x8b, 0x89, 0x01, 0x5d, 0xea, 0x9c, 0x33, 0xf3, 0x4b, 0x9d, 0xf3, 0xa6, 0x79, 0xfa, - 0x3b, 0xd4, 0xf9, 0xde, 0xce, 0x9d, 0x94, 0xce, 0xb2, 0xcf, 0xb7, 0xdf, 0xf2, 0x05, 0xe1, 0x5d, - 0x98, 0x9c, 0x67, 0x91, 0x9f, 0x44, 0xb1, 0x48, 0xf8, 0x29, 0x31, 0xe4, 0x27, 0xfc, 0x94, 0x1c, - 0xe4, 0xe9, 0x5d, 0xc4, 0xbc, 0xa5, 0xaa, 0x29, 0x4c, 0x31, 0x07, 0xb5, 0xdf, 0x3a, 0x2e, 0x7e, - 0xb6, 0x7f, 0x07, 0x18, 0x4f, 0x32, 0xe2, 0xb3, 0xcd, 0x0c, 0x53, 0xe2, 0xb3, 0xcd, 0x0e, 0x3c, - 0xb4, 0x85, 0x18, 0x4d, 0xd2, 0xc8, 0xb7, 0x8b, 0xf4, 0xc7, 0x11, 0xc7, 0x81, 0x20, 0x19, 0xf1, - 0xf8, 0x44, 0x93, 0x8c, 0x78, 0x62, 0x7a, 0xa0, 0x5b, 0x88, 0xa2, 0xaa, 0xab, 0xe9, 0x88, 0xe3, - 0x35, 0x6e, 0x84, 0x05, 0x8b, 0x89, 0xae, 0x2e, 0x70, 0xf2, 0x86, 0x02, 0x81, 0x93, 0x3b, 0x02, - 0x84, 0x95, 0x8e, 0xb4, 0xd2, 0x38, 0xa3, 0x6e, 0xbc, 0xd8, 0x91, 0xd7, 0x00, 0xe3, 0x1e, 0x2e, - 0x5c, 0x96, 0x69, 0xfe, 0xc2, 0x65, 0xd9, 0x56, 0x4f, 0x7f, 0x83, 0x20, 0x37, 0xc9, 0x55, 0xe5, - 0x94, 0xbc, 0x86, 0x6a, 0xac, 0x7f, 0x8a, 0x9a, 0x9d, 0xed, 0xf1, 0xa2, 0x66, 0xe7, 0x34, 0xda, - 0x89, 0x1e, 0x63, 0xfc, 0x16, 0xff, 0x44, 0x1e, 0x37, 0xbf, 0xfd, 0xd8, 0x52, 0x3e, 0x7c, 0x6c, - 0x29, 0x3f, 0x7c, 0x6c, 0x29, 0xff, 0xfd, 0xd4, 0x2a, 0x7c, 0xf8, 0xd4, 0x2a, 0x7c, 0xff, 0xa9, - 0x55, 0xe8, 0xce, 0xe2, 0x9f, 0xfe, 0xdf, 0xff, 0x1c, 0x00, 0x00, 0xff, 0xff, 0x44, 0xe7, 0x99, - 0xfa, 0x2d, 0x18, 0x00, 0x00, + // 1873 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x4f, 0x6f, 0xdb, 0xc8, + 0x15, 0x17, 0x25, 0xc5, 0x96, 0x9f, 0x6c, 0xaf, 0x3c, 0xb6, 0x65, 0x86, 0xf1, 0x2a, 0xde, 0xe9, + 0x6e, 0x60, 0x18, 0x45, 0x8c, 0xb8, 0x3d, 0x2d, 0xb0, 0x05, 0x36, 0x52, 0x36, 0x6b, 0x54, 0xa9, + 0xb7, 0x74, 0x82, 0x76, 0x51, 0xa0, 0x58, 0x8a, 0x1a, 0xc9, 0x84, 0x29, 0x92, 0x21, 0x29, 0xbb, + 0x46, 0xb0, 0x97, 0x7e, 0x80, 0xfe, 0x41, 0x0f, 0x7b, 0xec, 0xa1, 0xd7, 0x9e, 0xfa, 0x29, 0x7a, + 0x5c, 0xa0, 0x97, 0x1e, 0x8b, 0xa4, 0x1f, 0xa4, 0x98, 0x37, 0x43, 0x72, 0xf8, 0x47, 0x6e, 0x15, + 0xa0, 0xbe, 0xcd, 0x9b, 0x37, 0x7a, 0xef, 0xf7, 0xfe, 0xcc, 0x9b, 0xf7, 0x28, 0xd8, 0x1c, 0xcf, + 0x66, 0x56, 0x14, 0xb3, 0xf0, 0x71, 0x10, 0xfa, 0xb1, 0x4f, 0xea, 0xc1, 0xc8, 0xd8, 0x1c, 0xcf, + 0xae, 0xfd, 0xf0, 0x32, 0xd9, 0x33, 0xf6, 0xa7, 0xbe, 0x3f, 0x75, 0xd9, 0xb1, 0x15, 0x38, 0xc7, + 0x96, 0xe7, 0xf9, 0xb1, 0x15, 0x3b, 0xbe, 0x17, 0x09, 0x2e, 0xfd, 0x06, 0x3a, 0xe7, 0xb1, 0x15, + 0xc6, 0x2f, 0xad, 0xe8, 0xd2, 0x64, 0xaf, 0xe7, 0x2c, 0x8a, 0x09, 0x81, 0x66, 0x6c, 0x45, 0x97, + 0xba, 0x76, 0xa0, 0x1d, 0xae, 0x99, 0xb8, 0x26, 0x3a, 0xac, 0x46, 0xfe, 0x3c, 0xb4, 0x59, 0xa4, + 0xd7, 0x0f, 0x1a, 0x87, 0x6b, 0x66, 0x42, 0x92, 0x1e, 0x40, 0xc8, 0x66, 0xfe, 0x15, 0x7b, 0xc1, + 0x62, 0x4b, 0x6f, 0x1c, 0x68, 0x87, 0x2d, 0x53, 0xd9, 0xa1, 0xaf, 0x61, 0x4b, 0xd1, 0x10, 0x05, + 0xbe, 0x17, 0x31, 0xd2, 0x85, 0x95, 0x90, 0x45, 0x73, 0x37, 0x46, 0x25, 0x2d, 0x53, 0x52, 0xa4, + 0x03, 0x8d, 0x59, 0x34, 0xd5, 0xeb, 0xa8, 0x99, 0x2f, 0xc9, 0x49, 0xa6, 0xb8, 0x71, 0xd0, 0x38, + 0x6c, 0x9f, 0xe8, 0x8f, 0x83, 0xd1, 0xe3, 0xbe, 0x3f, 0x9b, 0xf9, 0xde, 0x2f, 0xd0, 0xce, 0x44, + 0x68, 0x0a, 0x89, 0xfe, 0x1a, 0xc8, 0x59, 0xc0, 0x42, 0x2b, 0x66, 0xaa, 0x59, 0x06, 0xd4, 0xfd, + 0x00, 0xf5, 0x6d, 0x9e, 0x00, 0x17, 0xc2, 0x99, 0x67, 0x81, 0x59, 0xf7, 0x03, 0x6e, 0xb2, 0x67, + 0xcd, 0x98, 0x54, 0x8c, 0x6b, 0xd5, 0xe4, 0x46, 0xce, 0x64, 0xfa, 0x7b, 0x0d, 0xb6, 0x73, 0x0a, + 0xa4, 0x55, 0xb7, 0x69, 0xc8, 0x2c, 0xae, 0x57, 0x59, 0xdc, 0xa8, 0xb4, 0xb8, 0xf9, 0xbf, 0x5a, + 0xfc, 0x39, 0x6c, 0xbd, 0x0a, 0xc6, 0x05, 0x83, 0x97, 0x8a, 0x23, 0x0d, 0x81, 0xa8, 0x22, 0xee, + 0x24, 0x50, 0x5f, 0x40, 0xf7, 0xe7, 0x73, 0x16, 0xde, 0x9c, 0xc7, 0x56, 0x3c, 0x8f, 0x86, 0x4e, + 0x14, 0x2b, 0xd8, 0x31, 0x20, 0x5a, 0x75, 0x40, 0x0a, 0xd8, 0xaf, 0x60, 0xaf, 0x24, 0x67, 0x69, + 0x03, 0x9e, 0x14, 0x0d, 0xd8, 0xe3, 0x06, 0x28, 0x72, 0xcb, 0xf8, 0xfb, 0xb0, 0x7d, 0x7e, 0xe1, + 0x5f, 0x0f, 0x06, 0xc3, 0xa1, 0x6f, 0x5f, 0x46, 0xef, 0xe7, 0xf8, 0x3f, 0x6b, 0xb0, 0x2a, 0x25, + 0x90, 0x4d, 0xa8, 0x9f, 0x0e, 0xe4, 0xef, 0xea, 0xa7, 0x83, 0x54, 0x52, 0x5d, 0x91, 0x44, 0xa0, + 0x39, 0xf3, 0xc7, 0x4c, 0xa6, 0x0c, 0xae, 0xc9, 0x0e, 0xdc, 0xf3, 0xaf, 0x3d, 0x16, 0xea, 0x4d, + 0xdc, 0x14, 0x04, 0x3f, 0x39, 0x18, 0x0c, 0x23, 0xfd, 0x1e, 0x2a, 0xc4, 0x35, 0xf7, 0x47, 0x74, + 0xe3, 0xd9, 0x6c, 0xac, 0xaf, 0xe0, 0xae, 0xa4, 0x88, 0x01, 0xad, 0xb9, 0x27, 0x39, 0xab, 0xc8, + 0x49, 0x69, 0x6a, 0xc3, 0x4e, 0xde, 0xcc, 0xa5, 0x7d, 0xfb, 0x11, 0xdc, 0x73, 0xf9, 0x4f, 0xa5, + 0x67, 0xdb, 0xdc, 0xb3, 0x52, 0x9c, 0x29, 0x38, 0xd4, 0x85, 0x9d, 0x57, 0x1e, 0x5f, 0x26, 0xfb, + 0xd2, 0x99, 0x45, 0x97, 0x50, 0x58, 0x0f, 0x59, 0xe0, 0x5a, 0x36, 0x3b, 0x43, 0x8b, 0x85, 0x96, + 0xdc, 0x1e, 0x39, 0x80, 0xf6, 0xc4, 0x0f, 0x6d, 0x66, 0x62, 0x19, 0x92, 0x45, 0x49, 0xdd, 0xa2, + 0x9f, 0xc3, 0x6e, 0x41, 0xdb, 0xb2, 0x36, 0x51, 0x13, 0xee, 0xcb, 0x22, 0x90, 0xa4, 0xb7, 0x6b, + 0xdd, 0x24, 0xa8, 0x1f, 0x28, 0xa5, 0x00, 0xad, 0x45, 0xae, 0xac, 0x05, 0x8b, 0x73, 0xe1, 0x3b, + 0x0d, 0x8c, 0x2a, 0xa1, 0x12, 0xdc, 0xad, 0x52, 0xff, 0xbf, 0x15, 0xe6, 0x3b, 0x0d, 0xf6, 0xbe, + 0x9a, 0x87, 0xd3, 0x2a, 0x63, 0x15, 0x7b, 0xb4, 0xfc, 0xe3, 0x60, 0x40, 0xcb, 0xf1, 0x2c, 0x3b, + 0x76, 0xae, 0x98, 0x44, 0x95, 0xd2, 0x98, 0xdb, 0xce, 0x4c, 0x44, 0xa7, 0x61, 0xe2, 0x9a, 0x9f, + 0x9f, 0x38, 0x2e, 0xc3, 0xab, 0x2f, 0x52, 0x39, 0xa5, 0x31, 0x73, 0xe7, 0xa3, 0x81, 0x13, 0xea, + 0xf7, 0x90, 0x23, 0x29, 0xfa, 0x1b, 0xd0, 0xcb, 0xc0, 0xee, 0xa4, 0x7c, 0x3d, 0x82, 0x4e, 0xff, + 0x82, 0xd9, 0x97, 0xff, 0xa5, 0xe8, 0xd2, 0xcf, 0x60, 0x4b, 0x39, 0xb7, 0x74, 0xa2, 0x5d, 0xc0, + 0x8e, 0xcc, 0x89, 0x73, 0x54, 0x9c, 0xa8, 0xda, 0x57, 0xb2, 0x61, 0x9d, 0xa3, 0x15, 0xec, 0x2c, + 0x1d, 0x6c, 0xdf, 0x9b, 0x38, 0x53, 0x99, 0x63, 0x92, 0xe2, 0x2e, 0x16, 0xf8, 0x4f, 0x07, 0xf2, + 0x5d, 0x4b, 0x69, 0x3a, 0x87, 0xdd, 0x82, 0xa6, 0x3b, 0xf1, 0xe3, 0x33, 0xd8, 0x35, 0xd9, 0xd4, + 0xe1, 0x8d, 0x4c, 0x72, 0xe4, 0xd6, 0x57, 0xc0, 0x1a, 0x8f, 0x43, 0x16, 0x45, 0x52, 0x6d, 0x42, + 0xd2, 0xa7, 0xd0, 0x2d, 0x8a, 0x59, 0xda, 0xd7, 0x3f, 0x81, 0x9d, 0xb3, 0xc9, 0xc4, 0x75, 0x3c, + 0xf6, 0x82, 0xcd, 0x46, 0x39, 0x24, 0xf1, 0x4d, 0x90, 0x22, 0xe1, 0xeb, 0xaa, 0xa6, 0x81, 0xd7, + 0x95, 0xc2, 0xef, 0x97, 0x86, 0xf0, 0xe3, 0x34, 0xdc, 0x43, 0x66, 0x8d, 0x33, 0x08, 0xa5, 0x70, + 0x0b, 0xb6, 0x08, 0x37, 0x2a, 0xce, 0xff, 0x6a, 0x69, 0xc5, 0xbf, 0xd3, 0x00, 0x5e, 0x60, 0x3b, + 0x79, 0xea, 0x4d, 0xfc, 0x4a, 0xe7, 0x1b, 0xd0, 0x9a, 0xa1, 0x5d, 0xa7, 0x03, 0xfc, 0x65, 0xd3, + 0x4c, 0x69, 0xfe, 0x06, 0x59, 0xae, 0x93, 0x96, 0x5b, 0x41, 0xf0, 0x5f, 0x04, 0x8c, 0x85, 0xaf, + 0xcc, 0xa1, 0x28, 0x36, 0x6b, 0x66, 0x4a, 0xf3, 0xd6, 0xd1, 0x76, 0x1d, 0xe6, 0xc5, 0xc8, 0x15, + 0xaf, 0x94, 0xb2, 0x43, 0x47, 0x00, 0x22, 0x90, 0x0b, 0xf1, 0x10, 0x68, 0xf2, 0xe8, 0x27, 0x21, + 0xe0, 0x6b, 0x8e, 0x23, 0x8a, 0xad, 0x69, 0xf2, 0x40, 0x0a, 0x02, 0xab, 0x07, 0xa6, 0x9b, 0xac, + 0x2b, 0x92, 0xa2, 0x43, 0xe8, 0xf0, 0x7e, 0x41, 0x38, 0x4d, 0xc4, 0x2c, 0x71, 0x8d, 0x96, 0x65, + 0x75, 0x55, 0x7f, 0x98, 0xe8, 0x6e, 0x64, 0xba, 0xe9, 0xcf, 0x84, 0x34, 0xe1, 0xc5, 0x85, 0xd2, + 0x0e, 0x61, 0x55, 0xb4, 0xed, 0xa2, 0xfe, 0xb7, 0x4f, 0x36, 0x79, 0x38, 0x33, 0xd7, 0x9b, 0x09, + 0x3b, 0x91, 0x27, 0xbc, 0x70, 0x9b, 0x3c, 0xd1, 0xf2, 0xe7, 0xe4, 0x65, 0xae, 0x33, 0x13, 0x36, + 0xfd, 0x8b, 0x06, 0xab, 0x42, 0x4c, 0x44, 0x1e, 0xc3, 0x8a, 0x8b, 0x56, 0xa3, 0xa8, 0xf6, 0xc9, + 0x0e, 0xe6, 0x54, 0xc1, 0x17, 0x5f, 0xd6, 0x4c, 0x79, 0x8a, 0x9f, 0x17, 0xb0, 0xd0, 0x0b, 0xca, + 0x79, 0xd5, 0x5a, 0x7e, 0x5e, 0x9c, 0xe2, 0xe7, 0x85, 0x5a, 0xf4, 0x90, 0x72, 0x5e, 0xb5, 0x86, + 0x9f, 0x17, 0xa7, 0x9e, 0xb6, 0x60, 0x45, 0xe4, 0x12, 0x1f, 0x19, 0x50, 0x6e, 0xee, 0x06, 0x76, + 0x73, 0x70, 0x5b, 0x29, 0xac, 0x6e, 0x0e, 0x56, 0x2b, 0x55, 0xdf, 0xcd, 0xa9, 0x6f, 0x25, 0x6a, + 0x78, 0x7a, 0xf0, 0xf0, 0x25, 0xd9, 0x28, 0x08, 0xca, 0x80, 0xa8, 0x2a, 0x97, 0x2e, 0x7b, 0x9f, + 0xc0, 0xaa, 0x00, 0x9f, 0x6b, 0x71, 0xa4, 0xab, 0xcd, 0x84, 0x47, 0xff, 0xaa, 0x65, 0xb5, 0xdc, + 0xbe, 0x60, 0x33, 0x6b, 0x71, 0x2d, 0x47, 0x76, 0x36, 0x9e, 0x94, 0xda, 0xc0, 0x85, 0xe3, 0x09, + 0xbf, 0x72, 0x63, 0x2b, 0xb6, 0x46, 0x56, 0x94, 0x3e, 0xa2, 0x09, 0xcd, 0xad, 0x8f, 0xad, 0x91, + 0xcb, 0xe4, 0x1b, 0x2a, 0x08, 0xbc, 0x1c, 0xa8, 0x4f, 0x5f, 0x91, 0x97, 0x03, 0x29, 0xf5, 0x3d, + 0x90, 0x68, 0xef, 0xe4, 0x3d, 0x38, 0x82, 0x9d, 0xe7, 0x2c, 0x3e, 0x9f, 0x8f, 0xf8, 0x83, 0xd9, + 0x9f, 0x4c, 0x6f, 0x79, 0x0e, 0xe8, 0x2b, 0xd8, 0x2d, 0x9c, 0x5d, 0x1a, 0x22, 0x81, 0xa6, 0x3d, + 0x99, 0x26, 0x6e, 0xc4, 0x35, 0x1d, 0xc0, 0xc6, 0x73, 0x16, 0x2b, 0xba, 0x1f, 0x2a, 0x0f, 0x80, + 0x6c, 0xbe, 0xfa, 0x93, 0xe9, 0xcb, 0x9b, 0x80, 0xdd, 0xf2, 0x1a, 0x0c, 0x61, 0x33, 0x91, 0xb2, + 0x34, 0xaa, 0x0e, 0x34, 0xec, 0x49, 0xda, 0xb6, 0xd9, 0x93, 0x29, 0xdd, 0x85, 0xed, 0xe7, 0x4c, + 0xde, 0xb6, 0x0c, 0x19, 0x3d, 0x44, 0x6f, 0x29, 0xdb, 0x52, 0x95, 0x14, 0xa0, 0x65, 0x02, 0xfe, + 0xa8, 0x01, 0xf9, 0xd2, 0xf2, 0xc6, 0x2e, 0x7b, 0x16, 0x86, 0x7e, 0xb8, 0xb0, 0x57, 0x45, 0xee, + 0x7b, 0xa5, 0xde, 0x3e, 0xac, 0x8d, 0x1c, 0xcf, 0xf5, 0xa7, 0x5f, 0xf9, 0x91, 0xcc, 0xbd, 0x6c, + 0x83, 0xcb, 0x8a, 0x5e, 0xbb, 0xe9, 0x3c, 0xc2, 0xd7, 0x34, 0x82, 0xed, 0x1c, 0xa4, 0xbb, 0x48, + 0xb0, 0xa3, 0x11, 0xb4, 0x92, 0x5e, 0x89, 0x6c, 0xc3, 0x07, 0xa7, 0xde, 0x95, 0xe5, 0x3a, 0xe3, + 0x64, 0xab, 0x53, 0x23, 0x1f, 0x40, 0x1b, 0x3f, 0x5a, 0x88, 0xad, 0x8e, 0x46, 0x3a, 0xb0, 0x2e, + 0xa6, 0x63, 0xb9, 0x53, 0x27, 0x9b, 0x00, 0xe7, 0xb1, 0x1f, 0x48, 0xba, 0x81, 0xf4, 0x85, 0x7f, + 0x2d, 0xe9, 0xe6, 0xd1, 0x4f, 0xa1, 0x95, 0x3c, 0xd0, 0x8a, 0x8e, 0x64, 0xab, 0x53, 0x23, 0x5b, + 0xb0, 0xf1, 0xec, 0xca, 0xb1, 0xe3, 0x74, 0x4b, 0x23, 0x7b, 0xb0, 0xdd, 0xb7, 0x3c, 0x9b, 0xb9, + 0x79, 0x46, 0xfd, 0xe8, 0x97, 0xb0, 0x2a, 0xb3, 0x8d, 0x43, 0x93, 0xb2, 0x38, 0xd9, 0xa9, 0x91, + 0x75, 0x68, 0xf1, 0xdc, 0x47, 0x4a, 0xe3, 0x30, 0x44, 0x2a, 0x20, 0x8d, 0x30, 0x85, 0x17, 0x90, + 0x16, 0x30, 0x11, 0x22, 0xd2, 0xcd, 0x93, 0xbf, 0x6d, 0xc0, 0x8a, 0xf8, 0x01, 0xf9, 0x1a, 0xd6, + 0xd2, 0x2f, 0x35, 0x04, 0xab, 0x75, 0xf1, 0xd3, 0x90, 0xb1, 0x5b, 0xd8, 0x15, 0x8e, 0xa5, 0x0f, + 0x7f, 0xfb, 0x8f, 0x7f, 0xff, 0xa9, 0x7e, 0x9f, 0xee, 0x1c, 0x5b, 0x81, 0x13, 0x1d, 0x5f, 0x3d, + 0xb1, 0xdc, 0xe0, 0xc2, 0x7a, 0x72, 0xcc, 0xb3, 0x25, 0xfa, 0x54, 0x3b, 0x22, 0x13, 0x68, 0x2b, + 0x1f, 0x4c, 0x48, 0x97, 0x8b, 0x29, 0x7f, 0xa2, 0x31, 0xf6, 0x4a, 0xfb, 0x52, 0xc1, 0x23, 0x54, + 0x70, 0x60, 0x3c, 0xa8, 0x52, 0x70, 0xfc, 0x86, 0x5f, 0xb6, 0x6f, 0xb9, 0x9e, 0xcf, 0x00, 0xb2, + 0x8f, 0x18, 0x04, 0xd1, 0x96, 0xbe, 0x8b, 0x18, 0xdd, 0xe2, 0xb6, 0x54, 0x52, 0x23, 0x2e, 0xb4, + 0x95, 0x79, 0x9f, 0x18, 0x85, 0x0f, 0x00, 0xca, 0x07, 0x0a, 0xe3, 0x41, 0x25, 0x4f, 0x4a, 0xfa, + 0x18, 0xe1, 0xf6, 0xc8, 0x7e, 0x01, 0x6e, 0x84, 0x47, 0x25, 0x5e, 0xd2, 0x87, 0x75, 0x75, 0xac, + 0x26, 0x68, 0x7d, 0xc5, 0xf7, 0x04, 0x43, 0x2f, 0x33, 0x52, 0xc8, 0x5f, 0xc0, 0x46, 0x6e, 0x90, + 0x25, 0x78, 0xb8, 0x6a, 0x92, 0x36, 0xee, 0x57, 0x70, 0x52, 0x39, 0x5f, 0x43, 0xb7, 0x3c, 0x78, + 0xa2, 0x17, 0x3f, 0x54, 0x82, 0x52, 0x1e, 0xfe, 0x8c, 0xde, 0x22, 0x76, 0x2a, 0xfa, 0x0c, 0x3a, + 0xc5, 0x01, 0x8d, 0xa0, 0xfb, 0x16, 0xcc, 0x93, 0xc6, 0x7e, 0x35, 0x33, 0x15, 0xf8, 0x29, 0xac, + 0xa5, 0xf3, 0x94, 0x48, 0xd4, 0xe2, 0x18, 0x26, 0x12, 0xb5, 0x34, 0x74, 0xd1, 0x1a, 0x99, 0xc2, + 0x46, 0x6e, 0xc4, 0x11, 0xfe, 0xaa, 0x9a, 0xaf, 0x84, 0xbf, 0x2a, 0xe7, 0x21, 0xfa, 0x11, 0x06, + 0xf8, 0x81, 0xd1, 0x2d, 0x06, 0x58, 0x14, 0x18, 0x9e, 0x8a, 0xa7, 0xb0, 0x99, 0x9f, 0x46, 0xc8, + 0x7d, 0x31, 0xb1, 0x57, 0x0c, 0x3a, 0x86, 0x51, 0xc5, 0x4a, 0x31, 0x87, 0xb0, 0x91, 0x1b, 0x2a, + 0x24, 0xe6, 0x8a, 0x39, 0x45, 0x62, 0xae, 0x9a, 0x40, 0xe8, 0x0f, 0x11, 0xf3, 0xa3, 0xa3, 0x8f, + 0x0b, 0x98, 0x65, 0x6f, 0x72, 0xfc, 0x86, 0x3f, 0x63, 0xdf, 0x26, 0xc9, 0x79, 0x99, 0xfa, 0x49, + 0x94, 0xa1, 0x9c, 0x9f, 0x72, 0x83, 0x49, 0xce, 0x4f, 0xf9, 0xe1, 0x83, 0x7e, 0x82, 0x3a, 0x1f, + 0x1a, 0x46, 0x41, 0xa7, 0xe8, 0xdd, 0x8e, 0xdf, 0xf8, 0x01, 0x5e, 0xdb, 0x5f, 0x01, 0x64, 0xdd, + 0x97, 0xb8, 0xb6, 0xa5, 0x06, 0x50, 0x5c, 0xdb, 0x72, 0x93, 0x46, 0x7b, 0xa8, 0x43, 0x27, 0xdd, + 0x6a, 0xbb, 0xc8, 0x24, 0x8b, 0x38, 0x36, 0x31, 0xf9, 0x88, 0xab, 0x5d, 0x58, 0x3e, 0xe2, 0xb9, + 0x8e, 0x87, 0x1e, 0xa0, 0x16, 0xc3, 0xd8, 0x2d, 0x46, 0x1c, 0x8f, 0x71, 0x23, 0x5c, 0x6c, 0x19, + 0xb2, 0x4e, 0x44, 0xe8, 0xa9, 0x6a, 0x64, 0x84, 0x9e, 0xca, 0xb6, 0x25, 0xa9, 0x74, 0xa4, 0x57, + 0xd4, 0x33, 0x1f, 0xa9, 0xc5, 0x8e, 0xbc, 0x84, 0x15, 0xd1, 0x5a, 0x90, 0x2d, 0x29, 0x4c, 0x91, + 0x4f, 0xd4, 0x2d, 0x29, 0xf8, 0x07, 0x28, 0xf8, 0x43, 0x72, 0x5b, 0x09, 0x25, 0xdf, 0x40, 0x5b, + 0x79, 0x8d, 0x45, 0x9d, 0x2e, 0x77, 0x0c, 0xa2, 0x4e, 0x57, 0x3c, 0xdb, 0x0b, 0xbd, 0xc4, 0xf8, + 0x29, 0xbc, 0x16, 0x7d, 0x58, 0x57, 0xbb, 0x15, 0x51, 0xf4, 0x2a, 0xda, 0x1a, 0x43, 0x2f, 0x33, + 0x92, 0x0b, 0xf1, 0x54, 0xff, 0xfb, 0xdb, 0x9e, 0xf6, 0xfd, 0xdb, 0x9e, 0xf6, 0xaf, 0xb7, 0x3d, + 0xed, 0x0f, 0xef, 0x7a, 0xb5, 0xef, 0xdf, 0xf5, 0x6a, 0xff, 0x7c, 0xd7, 0xab, 0x8d, 0x56, 0xf0, + 0x6f, 0x8d, 0x1f, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0xf5, 0xb6, 0xf4, 0x66, 0x1a, 0x19, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2914,9 +3044,10 @@ type MasterClient interface { ListMember(ctx context.Context, in *ListMemberRequest, opts ...grpc.CallOption) (*ListMemberResponse, error) OperateSchema(ctx context.Context, in *OperateSchemaRequest, opts ...grpc.CallOption) (*OperateSchemaResponse, error) GetSubTaskCfg(ctx context.Context, in *GetSubTaskCfgRequest, opts ...grpc.CallOption) (*GetSubTaskCfgResponse, error) - // GetTaskCfg get task config - GetTaskCfg(ctx context.Context, in *GetTaskCfgRequest, opts ...grpc.CallOption) (*GetTaskCfgResponse, error) + // GetCfg get config + GetCfg(ctx context.Context, in *GetCfgRequest, opts ...grpc.CallOption) (*GetCfgResponse, error) HandleError(ctx context.Context, in *HandleErrorRequest, opts ...grpc.CallOption) (*HandleErrorResponse, error) + GetMasterCfg(ctx context.Context, in *GetMasterCfgRequest, opts ...grpc.CallOption) (*GetMasterCfgResponse, error) } type masterClient struct { @@ -3071,9 +3202,9 @@ func (c *masterClient) GetSubTaskCfg(ctx context.Context, in *GetSubTaskCfgReque return out, nil } -func (c *masterClient) GetTaskCfg(ctx context.Context, in *GetTaskCfgRequest, opts ...grpc.CallOption) (*GetTaskCfgResponse, error) { - out := new(GetTaskCfgResponse) - err := c.cc.Invoke(ctx, "/pb.Master/GetTaskCfg", in, out, opts...) +func (c *masterClient) GetCfg(ctx context.Context, in *GetCfgRequest, opts ...grpc.CallOption) (*GetCfgResponse, error) { + out := new(GetCfgResponse) + err := c.cc.Invoke(ctx, "/pb.Master/GetCfg", in, out, opts...) if err != nil { return nil, err } @@ -3089,6 +3220,15 @@ func (c *masterClient) HandleError(ctx context.Context, in *HandleErrorRequest, return out, nil } +func (c *masterClient) GetMasterCfg(ctx context.Context, in *GetMasterCfgRequest, opts ...grpc.CallOption) (*GetMasterCfgResponse, error) { + out := new(GetMasterCfgResponse) + err := c.cc.Invoke(ctx, "/pb.Master/GetMasterCfg", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MasterServer is the server API for Master service. type MasterServer interface { StartTask(context.Context, *StartTaskRequest) (*StartTaskResponse, error) @@ -3119,9 +3259,10 @@ type MasterServer interface { ListMember(context.Context, *ListMemberRequest) (*ListMemberResponse, error) OperateSchema(context.Context, *OperateSchemaRequest) (*OperateSchemaResponse, error) GetSubTaskCfg(context.Context, *GetSubTaskCfgRequest) (*GetSubTaskCfgResponse, error) - // GetTaskCfg get task config - GetTaskCfg(context.Context, *GetTaskCfgRequest) (*GetTaskCfgResponse, error) + // GetCfg get config + GetCfg(context.Context, *GetCfgRequest) (*GetCfgResponse, error) HandleError(context.Context, *HandleErrorRequest) (*HandleErrorResponse, error) + GetMasterCfg(context.Context, *GetMasterCfgRequest) (*GetMasterCfgResponse, error) } // UnimplementedMasterServer can be embedded to have forward compatible implementations. @@ -3176,12 +3317,15 @@ func (*UnimplementedMasterServer) OperateSchema(ctx context.Context, req *Operat func (*UnimplementedMasterServer) GetSubTaskCfg(ctx context.Context, req *GetSubTaskCfgRequest) (*GetSubTaskCfgResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSubTaskCfg not implemented") } -func (*UnimplementedMasterServer) GetTaskCfg(ctx context.Context, req *GetTaskCfgRequest) (*GetTaskCfgResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetTaskCfg not implemented") +func (*UnimplementedMasterServer) GetCfg(ctx context.Context, req *GetCfgRequest) (*GetCfgResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCfg not implemented") } func (*UnimplementedMasterServer) HandleError(ctx context.Context, req *HandleErrorRequest) (*HandleErrorResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method HandleError not implemented") } +func (*UnimplementedMasterServer) GetMasterCfg(ctx context.Context, req *GetMasterCfgRequest) (*GetMasterCfgResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMasterCfg not implemented") +} func RegisterMasterServer(s *grpc.Server, srv MasterServer) { s.RegisterService(&_Master_serviceDesc, srv) @@ -3475,20 +3619,20 @@ func _Master_GetSubTaskCfg_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } -func _Master_GetTaskCfg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTaskCfgRequest) +func _Master_GetCfg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCfgRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MasterServer).GetTaskCfg(ctx, in) + return srv.(MasterServer).GetCfg(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pb.Master/GetTaskCfg", + FullMethod: "/pb.Master/GetCfg", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MasterServer).GetTaskCfg(ctx, req.(*GetTaskCfgRequest)) + return srv.(MasterServer).GetCfg(ctx, req.(*GetCfgRequest)) } return interceptor(ctx, in, info, handler) } @@ -3511,6 +3655,24 @@ func _Master_HandleError_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Master_GetMasterCfg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMasterCfgRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MasterServer).GetMasterCfg(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.Master/GetMasterCfg", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MasterServer).GetMasterCfg(ctx, req.(*GetMasterCfgRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Master_serviceDesc = grpc.ServiceDesc{ ServiceName: "pb.Master", HandlerType: (*MasterServer)(nil), @@ -3580,13 +3742,17 @@ var _Master_serviceDesc = grpc.ServiceDesc{ Handler: _Master_GetSubTaskCfg_Handler, }, { - MethodName: "GetTaskCfg", - Handler: _Master_GetTaskCfg_Handler, + MethodName: "GetCfg", + Handler: _Master_GetCfg_Handler, }, { MethodName: "HandleError", Handler: _Master_HandleError_Handler, }, + { + MethodName: "GetMasterCfg", + Handler: _Master_GetMasterCfg_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "dmmaster.proto", @@ -5500,7 +5666,7 @@ func (m *GetSubTaskCfgResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *GetTaskCfgRequest) Marshal() (dAtA []byte, err error) { +func (m *GetCfgRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -5510,12 +5676,12 @@ func (m *GetTaskCfgRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *GetTaskCfgRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *GetCfgRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *GetTaskCfgRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *GetCfgRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -5525,12 +5691,17 @@ func (m *GetTaskCfgRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Name) i = encodeVarintDmmaster(dAtA, i, uint64(len(m.Name))) i-- - dAtA[i] = 0xa + dAtA[i] = 0x12 + } + if m.Type != 0 { + i = encodeVarintDmmaster(dAtA, i, uint64(m.Type)) + i-- + dAtA[i] = 0x8 } return len(dAtA) - i, nil } -func (m *GetTaskCfgResponse) Marshal() (dAtA []byte, err error) { +func (m *GetCfgResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -5540,12 +5711,12 @@ func (m *GetTaskCfgResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *GetTaskCfgResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *GetCfgResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *GetTaskCfgResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *GetCfgResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -5577,6 +5748,59 @@ func (m *GetTaskCfgResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *GetMasterCfgRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetMasterCfgRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetMasterCfgRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GetMasterCfgResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetMasterCfgResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetMasterCfgResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Cfg) > 0 { + i -= len(m.Cfg) + copy(dAtA[i:], m.Cfg) + i = encodeVarintDmmaster(dAtA, i, uint64(len(m.Cfg))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *HandleErrorRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6558,12 +6782,15 @@ func (m *GetSubTaskCfgResponse) Size() (n int) { return n } -func (m *GetTaskCfgRequest) Size() (n int) { +func (m *GetCfgRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l + if m.Type != 0 { + n += 1 + sovDmmaster(uint64(m.Type)) + } l = len(m.Name) if l > 0 { n += 1 + l + sovDmmaster(uint64(l)) @@ -6571,7 +6798,7 @@ func (m *GetTaskCfgRequest) Size() (n int) { return n } -func (m *GetTaskCfgResponse) Size() (n int) { +func (m *GetCfgResponse) Size() (n int) { if m == nil { return 0 } @@ -6591,6 +6818,28 @@ func (m *GetTaskCfgResponse) Size() (n int) { return n } +func (m *GetMasterCfgRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetMasterCfgResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Cfg) + if l > 0 { + n += 1 + l + sovDmmaster(uint64(l)) + } + return n +} + func (m *HandleErrorRequest) Size() (n int) { if m == nil { return 0 @@ -11974,7 +12223,7 @@ func (m *GetSubTaskCfgResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetTaskCfgRequest) Unmarshal(dAtA []byte) error { +func (m *GetCfgRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -11997,13 +12246,32 @@ func (m *GetTaskCfgRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetTaskCfgRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetCfgRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetTaskCfgRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetCfgRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDmmaster + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= CfgType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } @@ -12059,7 +12327,7 @@ func (m *GetTaskCfgRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetTaskCfgResponse) Unmarshal(dAtA []byte) error { +func (m *GetCfgResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -12082,10 +12350,10 @@ func (m *GetTaskCfgResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetTaskCfgResponse: wiretype end group for non-group") + return fmt.Errorf("proto: GetCfgResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetTaskCfgResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetCfgResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -12196,6 +12464,144 @@ func (m *GetTaskCfgResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *GetMasterCfgRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDmmaster + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetMasterCfgRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetMasterCfgRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipDmmaster(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthDmmaster + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDmmaster + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetMasterCfgResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDmmaster + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetMasterCfgResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetMasterCfgResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cfg", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDmmaster + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDmmaster + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDmmaster + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cfg = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDmmaster(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthDmmaster + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDmmaster + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *HandleErrorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/dm/pb/dmmaster.pb.gw.go b/dm/pb/dmmaster.pb.gw.go index 2b77fd8033..f2a0625595 100644 --- a/dm/pb/dmmaster.pb.gw.go +++ b/dm/pb/dmmaster.pb.gw.go @@ -511,8 +511,12 @@ func local_request_Master_GetSubTaskCfg_0(ctx context.Context, marshaler runtime } -func request_Master_GetTaskCfg_0(ctx context.Context, marshaler runtime.Marshaler, client MasterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTaskCfgRequest +var ( + filter_Master_GetCfg_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Master_GetCfg_0(ctx context.Context, marshaler runtime.Marshaler, client MasterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCfgRequest var metadata runtime.ServerMetadata var ( @@ -533,13 +537,20 @@ func request_Master_GetTaskCfg_0(ctx context.Context, marshaler runtime.Marshale return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) } - msg, err := client.GetTaskCfg(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Master_GetCfg_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetCfg(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Master_GetTaskCfg_0(ctx context.Context, marshaler runtime.Marshaler, server MasterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTaskCfgRequest +func local_request_Master_GetCfg_0(ctx context.Context, marshaler runtime.Marshaler, server MasterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCfgRequest var metadata runtime.ServerMetadata var ( @@ -560,7 +571,11 @@ func local_request_Master_GetTaskCfg_0(ctx context.Context, marshaler runtime.Ma return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) } - msg, err := server.GetTaskCfg(ctx, &protoReq) + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_Master_GetCfg_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetCfg(ctx, &protoReq) return msg, metadata, err } @@ -784,7 +799,7 @@ func RegisterMasterHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) - mux.Handle("GET", pattern_Master_GetTaskCfg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Master_GetCfg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -793,14 +808,14 @@ func RegisterMasterHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Master_GetTaskCfg_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Master_GetCfg_0(rctx, inboundMarshaler, server, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Master_GetTaskCfg_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Master_GetCfg_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1045,7 +1060,7 @@ func RegisterMasterHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) - mux.Handle("GET", pattern_Master_GetTaskCfg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Master_GetCfg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -1054,14 +1069,14 @@ func RegisterMasterHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Master_GetTaskCfg_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Master_GetCfg_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Master_GetTaskCfg_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Master_GetCfg_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1107,7 +1122,7 @@ var ( pattern_Master_GetSubTaskCfg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1alpha1", "subtasks", "name"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Master_GetTaskCfg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1alpha1", "tasks", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Master_GetCfg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1alpha1", "tasks", "name"}, "", runtime.AssumeColonVerbOpt(true))) pattern_Master_HandleError_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1alpha1", "errors"}, "", runtime.AssumeColonVerbOpt(true))) ) @@ -1131,7 +1146,7 @@ var ( forward_Master_GetSubTaskCfg_0 = runtime.ForwardResponseMessage - forward_Master_GetTaskCfg_0 = runtime.ForwardResponseMessage + forward_Master_GetCfg_0 = runtime.ForwardResponseMessage forward_Master_HandleError_0 = runtime.ForwardResponseMessage ) diff --git a/dm/pb/dmworker.pb.go b/dm/pb/dmworker.pb.go index 4dfabe291a..4d199df92e 100644 --- a/dm/pb/dmworker.pb.go +++ b/dm/pb/dmworker.pb.go @@ -2384,6 +2384,86 @@ func (m *HandleWorkerErrorRequest) GetSqls() []string { return nil } +type GetWorkerCfgRequest struct { +} + +func (m *GetWorkerCfgRequest) Reset() { *m = GetWorkerCfgRequest{} } +func (m *GetWorkerCfgRequest) String() string { return proto.CompactTextString(m) } +func (*GetWorkerCfgRequest) ProtoMessage() {} +func (*GetWorkerCfgRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_51a1b9e17fd67b10, []int{29} +} +func (m *GetWorkerCfgRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetWorkerCfgRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetWorkerCfgRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetWorkerCfgRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWorkerCfgRequest.Merge(m, src) +} +func (m *GetWorkerCfgRequest) XXX_Size() int { + return m.Size() +} +func (m *GetWorkerCfgRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetWorkerCfgRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWorkerCfgRequest proto.InternalMessageInfo + +type GetWorkerCfgResponse struct { + Cfg string `protobuf:"bytes,1,opt,name=cfg,proto3" json:"cfg,omitempty"` +} + +func (m *GetWorkerCfgResponse) Reset() { *m = GetWorkerCfgResponse{} } +func (m *GetWorkerCfgResponse) String() string { return proto.CompactTextString(m) } +func (*GetWorkerCfgResponse) ProtoMessage() {} +func (*GetWorkerCfgResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_51a1b9e17fd67b10, []int{30} +} +func (m *GetWorkerCfgResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetWorkerCfgResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetWorkerCfgResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetWorkerCfgResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWorkerCfgResponse.Merge(m, src) +} +func (m *GetWorkerCfgResponse) XXX_Size() int { + return m.Size() +} +func (m *GetWorkerCfgResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetWorkerCfgResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWorkerCfgResponse proto.InternalMessageInfo + +func (m *GetWorkerCfgResponse) GetCfg() string { + if m != nil { + return m.Cfg + } + return "" +} + func init() { proto.RegisterEnum("pb.TaskOp", TaskOp_name, TaskOp_value) proto.RegisterEnum("pb.Stage", Stage_name, Stage_value) @@ -2422,132 +2502,137 @@ func init() { proto.RegisterType((*OperateV1MetaResponse)(nil), "pb.OperateV1MetaResponse") proto.RegisterMapType((map[string]*V1SubTaskMeta)(nil), "pb.OperateV1MetaResponse.MetaEntry") proto.RegisterType((*HandleWorkerErrorRequest)(nil), "pb.HandleWorkerErrorRequest") + proto.RegisterType((*GetWorkerCfgRequest)(nil), "pb.GetWorkerCfgRequest") + proto.RegisterType((*GetWorkerCfgResponse)(nil), "pb.GetWorkerCfgResponse") } func init() { proto.RegisterFile("dmworker.proto", fileDescriptor_51a1b9e17fd67b10) } var fileDescriptor_51a1b9e17fd67b10 = []byte{ - // 1919 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x73, 0x1b, 0x49, - 0x15, 0xd7, 0xcc, 0x48, 0xb2, 0xf4, 0x24, 0x3b, 0x93, 0x4e, 0x76, 0x11, 0x26, 0x08, 0xd7, 0x64, - 0x2b, 0x18, 0x1f, 0x5c, 0xc4, 0x2c, 0xb5, 0xd4, 0x56, 0x01, 0x21, 0x76, 0xd6, 0x59, 0x70, 0x70, - 0x32, 0x4a, 0x96, 0x23, 0xd5, 0x9a, 0xe9, 0xc8, 0x53, 0x1e, 0xcd, 0x4c, 0xa6, 0x67, 0xec, 0xd2, - 0x81, 0xcf, 0x00, 0x17, 0x0e, 0x54, 0x71, 0xa3, 0xb8, 0x52, 0x9c, 0xf8, 0x08, 0xc0, 0x31, 0xc5, - 0x89, 0x23, 0x95, 0x9c, 0xf8, 0x0e, 0x1c, 0xa8, 0xf7, 0xba, 0x67, 0xa6, 0x65, 0x4b, 0x09, 0x39, - 0x70, 0x9b, 0xf7, 0x7b, 0xaf, 0x5f, 0xbf, 0xfe, 0xf5, 0xfb, 0xa3, 0x16, 0x6c, 0x85, 0xf3, 0xcb, - 0x34, 0x3f, 0x17, 0xf9, 0x7e, 0x96, 0xa7, 0x45, 0xca, 0xec, 0x6c, 0xea, 0xed, 0x02, 0x7b, 0x56, - 0x8a, 0x7c, 0x31, 0x29, 0x78, 0x51, 0x4a, 0x5f, 0xbc, 0x2a, 0x85, 0x2c, 0x18, 0x83, 0x76, 0xc2, - 0xe7, 0x62, 0x64, 0xed, 0x58, 0xbb, 0x7d, 0x9f, 0xbe, 0xbd, 0x0c, 0x6e, 0x1f, 0xa6, 0xf3, 0x79, - 0x9a, 0xfc, 0x82, 0x7c, 0xf8, 0x42, 0x66, 0x69, 0x22, 0x05, 0xfb, 0x18, 0xba, 0xb9, 0x90, 0x65, - 0x5c, 0x90, 0x75, 0xcf, 0xd7, 0x12, 0x73, 0xc1, 0x99, 0xcb, 0xd9, 0xc8, 0x26, 0x17, 0xf8, 0x89, - 0x96, 0x32, 0x2d, 0xf3, 0x40, 0x8c, 0x1c, 0x02, 0xb5, 0x84, 0xb8, 0x8a, 0x6b, 0xd4, 0x56, 0xb8, - 0x92, 0xbc, 0x3f, 0x59, 0x70, 0x6b, 0x29, 0xb8, 0x0f, 0xde, 0xf1, 0x53, 0x18, 0xaa, 0x3d, 0x94, - 0x07, 0xda, 0x77, 0x70, 0xe0, 0xee, 0x67, 0xd3, 0xfd, 0x89, 0x81, 0xfb, 0x4b, 0x56, 0xec, 0x33, - 0xd8, 0x94, 0xe5, 0xf4, 0x39, 0x97, 0xe7, 0x7a, 0x59, 0x7b, 0xc7, 0xd9, 0x1d, 0x1c, 0xdc, 0xa4, - 0x65, 0xa6, 0xc2, 0x5f, 0xb6, 0xf3, 0xfe, 0x68, 0xc1, 0xe0, 0xf0, 0x4c, 0x04, 0x5a, 0xc6, 0x40, - 0x33, 0x2e, 0xa5, 0x08, 0xab, 0x40, 0x95, 0xc4, 0x6e, 0x43, 0xa7, 0x48, 0x0b, 0x1e, 0x53, 0xa8, - 0x1d, 0x5f, 0x09, 0x6c, 0x0c, 0x20, 0xcb, 0x20, 0x10, 0x52, 0xbe, 0x2c, 0x63, 0x0a, 0xb5, 0xe3, - 0x1b, 0x08, 0x7a, 0x7b, 0xc9, 0xa3, 0x58, 0x84, 0x44, 0x53, 0xc7, 0xd7, 0x12, 0x1b, 0xc1, 0xc6, - 0x25, 0xcf, 0x93, 0x28, 0x99, 0x8d, 0x3a, 0xa4, 0xa8, 0x44, 0x5c, 0x11, 0x8a, 0x82, 0x47, 0xf1, - 0xa8, 0xbb, 0x63, 0xed, 0x0e, 0x7d, 0x2d, 0x79, 0x43, 0x80, 0xa3, 0x72, 0x9e, 0xe9, 0xa8, 0xff, - 0x62, 0x01, 0x9c, 0xa4, 0x3c, 0xd4, 0x41, 0x7f, 0x02, 0x9b, 0x2f, 0xa3, 0x24, 0x92, 0x67, 0x22, - 0x7c, 0xb8, 0x28, 0x84, 0xa4, 0xd8, 0x1d, 0x7f, 0x19, 0xc4, 0x60, 0x29, 0x6a, 0x65, 0x62, 0x93, - 0x89, 0x81, 0xb0, 0x6d, 0xe8, 0x65, 0x79, 0x3a, 0xcb, 0x85, 0x94, 0xfa, 0xb6, 0x6b, 0x19, 0xd7, - 0xce, 0x45, 0xc1, 0x1f, 0x46, 0x49, 0x9c, 0xce, 0xf4, 0x9d, 0x1b, 0x08, 0xbb, 0x07, 0x5b, 0x8d, - 0x74, 0xfc, 0xfc, 0xcb, 0x23, 0x3a, 0x57, 0xdf, 0xbf, 0x82, 0x7a, 0xbf, 0xb5, 0x60, 0x73, 0x72, - 0xc6, 0xf3, 0x30, 0x4a, 0x66, 0xc7, 0x79, 0x5a, 0x66, 0x78, 0xe0, 0x82, 0xe7, 0x33, 0x51, 0xe8, - 0xcc, 0xd5, 0x12, 0xe6, 0xf3, 0xd1, 0xd1, 0x09, 0xc6, 0xe9, 0x60, 0x3e, 0xe3, 0xb7, 0x3a, 0x67, - 0x2e, 0x8b, 0x93, 0x34, 0xe0, 0x45, 0x94, 0x26, 0x3a, 0xcc, 0x65, 0x90, 0x72, 0x76, 0x91, 0x04, - 0x44, 0xba, 0x43, 0x39, 0x4b, 0x12, 0x9e, 0xaf, 0x4c, 0xb4, 0xa6, 0x43, 0x9a, 0x5a, 0xf6, 0xfe, - 0xe0, 0x00, 0x4c, 0x16, 0x49, 0xa0, 0x09, 0xdd, 0x81, 0x01, 0x11, 0xf3, 0xe8, 0x42, 0x24, 0x45, - 0x45, 0xa7, 0x09, 0xa1, 0x33, 0x12, 0x9f, 0x67, 0x15, 0x95, 0xb5, 0xcc, 0xee, 0x40, 0x3f, 0x17, - 0x81, 0x48, 0x0a, 0x54, 0x3a, 0xa4, 0x6c, 0x00, 0xe6, 0xc1, 0x70, 0xce, 0x65, 0x21, 0xf2, 0x25, - 0x32, 0x97, 0x30, 0xb6, 0x07, 0xae, 0x29, 0x1f, 0x17, 0x51, 0xa8, 0x09, 0xbd, 0x86, 0xa3, 0x3f, - 0x3a, 0x44, 0xe5, 0xaf, 0xab, 0xfc, 0x99, 0x18, 0xfa, 0x33, 0x65, 0xf2, 0xb7, 0xa1, 0xfc, 0x5d, - 0xc5, 0xd1, 0xdf, 0x34, 0x4e, 0x83, 0xf3, 0x28, 0x99, 0xd1, 0x05, 0xf4, 0x88, 0xaa, 0x25, 0x8c, - 0xfd, 0x10, 0xdc, 0x32, 0xc9, 0x85, 0x4c, 0xe3, 0x0b, 0x11, 0xd2, 0x3d, 0xca, 0x51, 0xdf, 0xa8, - 0x38, 0xf3, 0x86, 0xfd, 0x6b, 0xa6, 0xc6, 0x0d, 0x81, 0x2a, 0x32, 0x7d, 0x43, 0x63, 0x80, 0x29, - 0x05, 0xf2, 0x7c, 0x91, 0x89, 0xd1, 0x40, 0x65, 0x59, 0x83, 0x78, 0xbf, 0xb7, 0x60, 0x68, 0x36, - 0x01, 0xa3, 0x3d, 0x59, 0x6b, 0xda, 0x93, 0x6d, 0xb6, 0x27, 0xf6, 0x9d, 0xba, 0x0d, 0xa9, 0xb6, - 0x42, 0xd1, 0x3e, 0xcd, 0x53, 0xac, 0x57, 0x9f, 0x14, 0x75, 0x67, 0xba, 0x0f, 0x83, 0x5c, 0xc4, - 0x7c, 0x51, 0xf7, 0x13, 0xb4, 0xbf, 0x81, 0xf6, 0x7e, 0x03, 0xfb, 0xa6, 0x8d, 0xf7, 0x37, 0x1b, - 0x06, 0x86, 0xf2, 0xda, 0x4d, 0x5b, 0xff, 0xe3, 0x4d, 0xdb, 0x6b, 0x6e, 0x7a, 0xa7, 0x0a, 0xa9, - 0x9c, 0x1e, 0x45, 0xb9, 0x4e, 0x7e, 0x13, 0xaa, 0x2d, 0x96, 0x52, 0xcb, 0x84, 0xd8, 0x2e, 0xdc, - 0x30, 0x44, 0x23, 0xb1, 0xae, 0xc2, 0x6c, 0x1f, 0x18, 0x41, 0x87, 0xbc, 0x08, 0xce, 0x5e, 0x64, - 0x4f, 0x28, 0x1a, 0xca, 0xae, 0x9e, 0xbf, 0x42, 0xc3, 0xbe, 0x05, 0x1d, 0x59, 0xf0, 0x99, 0xa0, - 0xc4, 0xda, 0x3a, 0xe8, 0x53, 0x22, 0x20, 0xe0, 0x2b, 0xdc, 0x20, 0xbf, 0xf7, 0x1e, 0xf2, 0xbd, - 0xff, 0xd8, 0xb0, 0xb9, 0xd4, 0xb6, 0x57, 0x8d, 0xb7, 0x66, 0x47, 0x7b, 0xcd, 0x8e, 0x3b, 0xd0, - 0x2e, 0x93, 0x48, 0x5d, 0xf6, 0xd6, 0xc1, 0x10, 0xf5, 0x2f, 0x92, 0xa8, 0xc0, 0x5c, 0xf2, 0x49, - 0x63, 0xc4, 0xd4, 0x7e, 0x5f, 0x42, 0x7c, 0x17, 0x6e, 0x35, 0x89, 0x7c, 0x74, 0x74, 0x72, 0x92, - 0x06, 0xe7, 0x75, 0x9f, 0x5b, 0xa5, 0x62, 0x4c, 0x0d, 0x37, 0x2a, 0xc8, 0xc7, 0x2d, 0x35, 0xde, - 0xbe, 0x0d, 0x9d, 0x00, 0xc7, 0x0d, 0xb1, 0xa4, 0x13, 0xca, 0x98, 0x3f, 0x8f, 0x5b, 0xbe, 0xd2, - 0xb3, 0x4f, 0xa0, 0x1d, 0x96, 0xf3, 0x4c, 0x73, 0xb5, 0x85, 0x76, 0xcd, 0x00, 0x78, 0xdc, 0xf2, - 0x49, 0x8b, 0x56, 0x71, 0xca, 0xc3, 0x51, 0xbf, 0xb1, 0x6a, 0xe6, 0x02, 0x5a, 0xa1, 0x16, 0xad, - 0xb0, 0xc2, 0xa8, 0xda, 0xb4, 0x55, 0xd3, 0xec, 0xd0, 0x0a, 0xb5, 0x0f, 0x7b, 0xd0, 0x95, 0x2a, - 0x91, 0x7f, 0x04, 0x37, 0x97, 0xd8, 0x3f, 0x89, 0x24, 0x51, 0xa5, 0xd4, 0x23, 0x6b, 0xdd, 0x6c, - 0xad, 0xd6, 0x8f, 0x01, 0xe8, 0x4c, 0x8f, 0xf2, 0x3c, 0xcd, 0xab, 0x19, 0x6f, 0xd5, 0x33, 0xde, - 0xfb, 0x26, 0xf4, 0xf1, 0x2c, 0xef, 0x50, 0xe3, 0x21, 0xd6, 0xa9, 0x33, 0x18, 0x52, 0xf4, 0xcf, - 0x4e, 0xd6, 0x58, 0xb0, 0x03, 0xb8, 0xad, 0x06, 0xad, 0x4a, 0xe7, 0xa7, 0xa9, 0x8c, 0x68, 0x5c, - 0xa8, 0xc2, 0x5a, 0xa9, 0xc3, 0x86, 0x2e, 0xd0, 0xdd, 0xe4, 0xd9, 0x49, 0x35, 0xfd, 0x2a, 0xd9, - 0xfb, 0x3e, 0xf4, 0x71, 0x47, 0xb5, 0xdd, 0x2e, 0x74, 0x49, 0x51, 0xf1, 0xe0, 0xd6, 0x74, 0xea, - 0x80, 0x7c, 0xad, 0xf7, 0x7e, 0x6d, 0xc1, 0x40, 0xb5, 0x2b, 0xb5, 0xf2, 0x43, 0xbb, 0xd5, 0xce, - 0xd2, 0xf2, 0xaa, 0xde, 0x4d, 0x8f, 0xfb, 0x00, 0xd4, 0x70, 0x94, 0x41, 0xbb, 0xb9, 0xde, 0x06, - 0xf5, 0x0d, 0x0b, 0xbc, 0x98, 0x46, 0x5a, 0x41, 0xed, 0xef, 0x6c, 0x18, 0xea, 0x2b, 0x55, 0x26, - 0xff, 0xa7, 0xb2, 0xd3, 0x95, 0xd1, 0x36, 0x2b, 0xe3, 0x5e, 0x55, 0x19, 0x9d, 0xe6, 0x18, 0x4d, - 0x16, 0x35, 0x85, 0x71, 0x57, 0x17, 0x46, 0x97, 0xcc, 0x36, 0xab, 0xc2, 0xa8, 0xac, 0x54, 0x5d, - 0xdc, 0xd5, 0x75, 0xb1, 0xd1, 0x18, 0xd5, 0x29, 0x55, 0x97, 0xc5, 0x5d, 0x5d, 0x16, 0xbd, 0xc6, - 0xa8, 0xbe, 0xe6, 0xba, 0x2a, 0x36, 0xa0, 0x43, 0xd7, 0xe9, 0x7d, 0x0e, 0xae, 0x49, 0x0d, 0xd5, - 0xc4, 0x3d, 0xad, 0x5c, 0x4a, 0x05, 0xc3, 0xc8, 0xd7, 0x6b, 0x5f, 0xc1, 0xe6, 0x52, 0x53, 0xc1, - 0x49, 0x17, 0xc9, 0x43, 0x9e, 0x04, 0x22, 0xae, 0x7f, 0x6a, 0x1a, 0x88, 0x91, 0x64, 0x76, 0xe3, - 0x59, 0xbb, 0x58, 0x4a, 0x32, 0xe3, 0x07, 0xa3, 0xb3, 0xf4, 0x83, 0xf1, 0x1f, 0x16, 0x0c, 0xcd, - 0x05, 0xf8, 0x9b, 0xf3, 0x51, 0x9e, 0x1f, 0xa6, 0xa1, 0xba, 0xcd, 0x8e, 0x5f, 0x89, 0x98, 0xfa, - 0xf8, 0x19, 0x73, 0x29, 0x75, 0x06, 0xd6, 0xb2, 0xd6, 0x4d, 0x82, 0x34, 0xab, 0x9e, 0x00, 0xb5, - 0xac, 0x75, 0x27, 0xe2, 0x42, 0xc4, 0x7a, 0xd4, 0xd4, 0x32, 0xee, 0xf6, 0x44, 0x48, 0x89, 0x69, - 0xa2, 0x3a, 0x64, 0x25, 0xe2, 0x2a, 0x9f, 0x5f, 0x1e, 0xf2, 0x52, 0x0a, 0xfd, 0x5b, 0xa5, 0x96, - 0x91, 0x16, 0x7c, 0xaa, 0xf0, 0x3c, 0x2d, 0x93, 0xea, 0x17, 0x8a, 0x81, 0x78, 0x97, 0x70, 0xf3, - 0x69, 0x99, 0xcf, 0x04, 0x25, 0x71, 0xf5, 0xf2, 0xd9, 0x86, 0x5e, 0x94, 0xf0, 0xa0, 0x88, 0x2e, - 0x84, 0x66, 0xb2, 0x96, 0x31, 0x7f, 0x8b, 0x68, 0x2e, 0xf4, 0x4f, 0x34, 0xfa, 0x46, 0xfb, 0x97, - 0x51, 0x2c, 0x28, 0xaf, 0xf5, 0x91, 0x2a, 0x99, 0x4a, 0x54, 0x4d, 0x57, 0xfd, 0xae, 0x51, 0x92, - 0xf7, 0x67, 0x0b, 0xb6, 0x4f, 0x33, 0x91, 0xf3, 0x42, 0xa8, 0xb7, 0xd4, 0x24, 0x38, 0x13, 0x73, - 0x5e, 0x85, 0x70, 0x07, 0xec, 0x34, 0xa3, 0xcd, 0x75, 0xbe, 0x2b, 0xf5, 0x69, 0xe6, 0xdb, 0x69, - 0x46, 0x41, 0x70, 0x79, 0xae, 0xb9, 0xa5, 0xef, 0xb5, 0x0f, 0xab, 0x6d, 0xe8, 0x85, 0xbc, 0xe0, - 0x53, 0x2e, 0x45, 0xc5, 0x69, 0x25, 0xd3, 0x1b, 0x84, 0x4f, 0xe3, 0x8a, 0x51, 0x25, 0x90, 0x27, - 0xda, 0x4d, 0xb3, 0xa9, 0x25, 0xaf, 0x80, 0xcd, 0xaf, 0xee, 0xeb, 0x64, 0x7c, 0x22, 0x0a, 0xce, - 0xb6, 0x8d, 0x20, 0x01, 0x83, 0x44, 0x8d, 0x0e, 0xf1, 0xbd, 0x35, 0x5d, 0x35, 0x02, 0xc7, 0x68, - 0x04, 0xd5, 0xb9, 0xda, 0x94, 0x78, 0xf4, 0xed, 0x7d, 0x0a, 0xb7, 0x35, 0x4f, 0x5f, 0xdd, 0xc7, - 0x5d, 0xd7, 0x32, 0xa4, 0xd4, 0x6a, 0x7b, 0xef, 0xaf, 0x16, 0x7c, 0x74, 0x65, 0xd9, 0x07, 0x3f, - 0x1c, 0x3f, 0x83, 0x36, 0x3e, 0x36, 0x46, 0x0e, 0x15, 0xcc, 0x5d, 0xdc, 0x63, 0xa5, 0xcb, 0x7d, - 0x14, 0x1e, 0x25, 0x45, 0xbe, 0xf0, 0x69, 0xc1, 0xf6, 0x4f, 0xa1, 0x5f, 0x43, 0xe8, 0xf7, 0x5c, - 0x2c, 0xaa, 0x9e, 0x78, 0x2e, 0x16, 0x38, 0xb1, 0x2f, 0x78, 0x5c, 0x2a, 0x6a, 0xf4, 0xd8, 0x5b, - 0x22, 0xd6, 0x57, 0xfa, 0xcf, 0xed, 0x1f, 0x58, 0xde, 0xaf, 0x60, 0xf4, 0x98, 0x27, 0x61, 0xac, - 0xb3, 0x44, 0x95, 0xaa, 0xa6, 0xe0, 0x1b, 0x06, 0x05, 0x03, 0xf4, 0x42, 0xda, 0x77, 0xe4, 0xc8, - 0x1d, 0xe8, 0x4f, 0xab, 0x21, 0xa5, 0x89, 0x6f, 0x00, 0x5c, 0x21, 0x5f, 0xc5, 0x52, 0x3f, 0x72, - 0xe8, 0x7b, 0xef, 0x97, 0xd0, 0x55, 0x97, 0xca, 0x36, 0xa1, 0xff, 0x65, 0x72, 0xc1, 0xe3, 0x28, - 0x3c, 0xcd, 0xdc, 0x16, 0xeb, 0x41, 0x7b, 0x52, 0xa4, 0x99, 0x6b, 0xb1, 0x3e, 0x74, 0x9e, 0x62, - 0xad, 0xb9, 0x36, 0x03, 0xe8, 0x62, 0x3b, 0x9a, 0x0b, 0xd7, 0x41, 0x78, 0x52, 0xf0, 0xbc, 0x70, - 0xdb, 0x08, 0xbf, 0xc8, 0x42, 0x5e, 0x08, 0xb7, 0xc3, 0xb6, 0x00, 0x7e, 0x52, 0x16, 0xa9, 0x36, - 0xeb, 0xee, 0xbd, 0x22, 0xb3, 0x99, 0x60, 0x2e, 0x0c, 0xb5, 0x7f, 0x92, 0xdd, 0x16, 0xdb, 0x00, - 0xe7, 0xe7, 0xe2, 0xd2, 0xb5, 0xd8, 0x00, 0x36, 0xfc, 0x32, 0xc1, 0xd7, 0xac, 0xda, 0x83, 0xb6, - 0x0b, 0x5d, 0x07, 0x15, 0x18, 0x44, 0x26, 0x42, 0xb7, 0xcd, 0x86, 0xd0, 0xfb, 0x42, 0x3f, 0x4f, - 0xdd, 0x0e, 0xaa, 0xd0, 0x0c, 0xd7, 0x74, 0x51, 0x45, 0x1b, 0xa2, 0xb4, 0xb1, 0x77, 0x0a, 0xbd, - 0x6a, 0x7a, 0xb0, 0x1b, 0x30, 0xd0, 0xbb, 0x22, 0xe4, 0xb6, 0x30, 0x6c, 0x9a, 0x11, 0xae, 0x85, - 0x47, 0xc4, 0x39, 0xe0, 0xda, 0xf8, 0x85, 0xcd, 0xde, 0x75, 0xe8, 0xd8, 0x8b, 0x24, 0x70, 0xdb, - 0x68, 0x48, 0x4d, 0xc3, 0x0d, 0xf7, 0x9e, 0xc0, 0x06, 0x7d, 0x9e, 0x22, 0xeb, 0x5b, 0xda, 0x9f, - 0x46, 0xdc, 0x16, 0x32, 0x87, 0x51, 0x2a, 0x6b, 0x0b, 0x19, 0xa0, 0x03, 0x28, 0xd9, 0xc6, 0x10, - 0x14, 0x1b, 0x0a, 0x70, 0x30, 0xbe, 0xaa, 0xda, 0xd9, 0x2d, 0xb8, 0x51, 0xb1, 0xa2, 0x21, 0xe5, - 0xf0, 0x58, 0x14, 0x0a, 0x70, 0x2d, 0xf2, 0x5f, 0x8b, 0x36, 0x12, 0xe9, 0x8b, 0x79, 0x7a, 0x21, - 0x34, 0xe2, 0xec, 0x3d, 0x80, 0x5e, 0x55, 0x1c, 0x86, 0xc3, 0x0a, 0xaa, 0x1d, 0x2a, 0xc0, 0xb5, - 0x1a, 0x0f, 0x1a, 0xb1, 0xf7, 0x1e, 0x50, 0xab, 0xc7, 0xdc, 0x32, 0x4e, 0xa8, 0x11, 0x9d, 0x0c, - 0xe7, 0x51, 0xa6, 0xaf, 0x4a, 0x64, 0x31, 0x0f, 0xea, 0x74, 0xb8, 0x10, 0x79, 0xe1, 0x3a, 0x07, - 0xff, 0xb6, 0xa1, 0xab, 0x52, 0x98, 0x3d, 0x80, 0x81, 0xf1, 0x8f, 0x0e, 0xfb, 0x18, 0x33, 0xf7, - 0xfa, 0xff, 0x4f, 0xdb, 0x5f, 0xbb, 0x86, 0xab, 0x72, 0xf3, 0x5a, 0xec, 0xc7, 0x00, 0x4d, 0xd7, - 0x66, 0x1f, 0xd1, 0x28, 0xbb, 0xda, 0xc5, 0xb7, 0x47, 0x34, 0xef, 0x57, 0xfc, 0x5b, 0xe5, 0xb5, - 0xd8, 0xcf, 0x60, 0x53, 0x97, 0xb2, 0x22, 0x89, 0x8d, 0x8d, 0xea, 0x5e, 0xd1, 0x8f, 0xdf, 0xe9, - 0xec, 0x8b, 0xda, 0x99, 0xe2, 0x8b, 0x8d, 0x56, 0xb4, 0x0a, 0xe5, 0xe6, 0xeb, 0x6b, 0x9b, 0x88, - 0xd7, 0x62, 0xc7, 0x30, 0x50, 0xa5, 0xae, 0xc6, 0xeb, 0x1d, 0xb4, 0x5d, 0x57, 0xfb, 0xef, 0x0a, - 0xe8, 0xe1, 0xe8, 0xef, 0x6f, 0xc6, 0xd6, 0xeb, 0x37, 0x63, 0xeb, 0x5f, 0x6f, 0xc6, 0xd6, 0x6f, - 0xde, 0x8e, 0x5b, 0xaf, 0xdf, 0x8e, 0x5b, 0xff, 0x7c, 0x3b, 0x6e, 0x4d, 0xbb, 0xf4, 0xa7, 0xdf, - 0xf7, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x50, 0x16, 0x36, 0x3c, 0x06, 0x14, 0x00, 0x00, + // 1962 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x73, 0xdc, 0x4a, + 0x11, 0x5f, 0xad, 0x76, 0xd7, 0xbb, 0xbd, 0x6b, 0x47, 0x99, 0x38, 0x8f, 0xc5, 0x84, 0xc5, 0xa5, + 0xbc, 0x0a, 0xc6, 0x07, 0x17, 0x31, 0x8f, 0x7a, 0xd4, 0xab, 0x02, 0x42, 0xec, 0x3c, 0xe7, 0x81, + 0x83, 0x13, 0x39, 0x79, 0x1c, 0xa9, 0x59, 0x69, 0xbc, 0x56, 0x59, 0x2b, 0x29, 0xd2, 0xc8, 0xae, + 0x3d, 0xf0, 0x19, 0xe0, 0xc2, 0x81, 0x2a, 0x6e, 0x14, 0xd7, 0x57, 0x9c, 0xf8, 0x08, 0xc0, 0xf1, + 0x15, 0x27, 0x8e, 0x54, 0xf2, 0x35, 0x38, 0x50, 0xdd, 0x33, 0x92, 0x46, 0xf6, 0x6e, 0x42, 0x0e, + 0xdc, 0xa6, 0x7f, 0xdd, 0xd3, 0xdd, 0xd3, 0xd3, 0x7f, 0x34, 0x82, 0x8d, 0x60, 0x7e, 0x95, 0x64, + 0x17, 0x22, 0xdb, 0x4b, 0xb3, 0x44, 0x26, 0xac, 0x9d, 0x4e, 0xdd, 0x1d, 0x60, 0x2f, 0x0a, 0x91, + 0x2d, 0x4e, 0x25, 0x97, 0x45, 0xee, 0x89, 0xd7, 0x85, 0xc8, 0x25, 0x63, 0xd0, 0x89, 0xf9, 0x5c, + 0x8c, 0xad, 0x6d, 0x6b, 0x67, 0xe0, 0xd1, 0xda, 0x4d, 0x61, 0xf3, 0x20, 0x99, 0xcf, 0x93, 0xf8, + 0x57, 0xa4, 0xc3, 0x13, 0x79, 0x9a, 0xc4, 0xb9, 0x60, 0x1f, 0x41, 0x2f, 0x13, 0x79, 0x11, 0x49, + 0x92, 0xee, 0x7b, 0x9a, 0x62, 0x0e, 0xd8, 0xf3, 0x7c, 0x36, 0x6e, 0x93, 0x0a, 0x5c, 0xa2, 0x64, + 0x9e, 0x14, 0x99, 0x2f, 0xc6, 0x36, 0x81, 0x9a, 0x42, 0x5c, 0xf9, 0x35, 0xee, 0x28, 0x5c, 0x51, + 0xee, 0x57, 0x16, 0xdc, 0x69, 0x38, 0xf7, 0xc1, 0x16, 0x3f, 0x81, 0x91, 0xb2, 0xa1, 0x34, 0x90, + 0xdd, 0xe1, 0xbe, 0xb3, 0x97, 0x4e, 0xf7, 0x4e, 0x0d, 0xdc, 0x6b, 0x48, 0xb1, 0x4f, 0x61, 0x3d, + 0x2f, 0xa6, 0x2f, 0x79, 0x7e, 0xa1, 0xb7, 0x75, 0xb6, 0xed, 0x9d, 0xe1, 0xfe, 0x6d, 0xda, 0x66, + 0x32, 0xbc, 0xa6, 0x9c, 0xfb, 0x67, 0x0b, 0x86, 0x07, 0xe7, 0xc2, 0xd7, 0x34, 0x3a, 0x9a, 0xf2, + 0x3c, 0x17, 0x41, 0xe9, 0xa8, 0xa2, 0xd8, 0x26, 0x74, 0x65, 0x22, 0x79, 0x44, 0xae, 0x76, 0x3d, + 0x45, 0xb0, 0x09, 0x40, 0x5e, 0xf8, 0xbe, 0xc8, 0xf3, 0xb3, 0x22, 0x22, 0x57, 0xbb, 0x9e, 0x81, + 0xa0, 0xb6, 0x33, 0x1e, 0x46, 0x22, 0xa0, 0x30, 0x75, 0x3d, 0x4d, 0xb1, 0x31, 0xac, 0x5d, 0xf1, + 0x2c, 0x0e, 0xe3, 0xd9, 0xb8, 0x4b, 0x8c, 0x92, 0xc4, 0x1d, 0x81, 0x90, 0x3c, 0x8c, 0xc6, 0xbd, + 0x6d, 0x6b, 0x67, 0xe4, 0x69, 0xca, 0x1d, 0x01, 0x1c, 0x16, 0xf3, 0x54, 0x7b, 0xfd, 0x57, 0x0b, + 0xe0, 0x38, 0xe1, 0x81, 0x76, 0xfa, 0x63, 0x58, 0x3f, 0x0b, 0xe3, 0x30, 0x3f, 0x17, 0xc1, 0xe3, + 0x85, 0x14, 0x39, 0xf9, 0x6e, 0x7b, 0x4d, 0x10, 0x9d, 0x25, 0xaf, 0x95, 0x48, 0x9b, 0x44, 0x0c, + 0x84, 0x6d, 0x41, 0x3f, 0xcd, 0x92, 0x59, 0x26, 0xf2, 0x5c, 0xdf, 0x76, 0x45, 0xe3, 0xde, 0xb9, + 0x90, 0xfc, 0x71, 0x18, 0x47, 0xc9, 0x4c, 0xdf, 0xb9, 0x81, 0xb0, 0x07, 0xb0, 0x51, 0x53, 0x47, + 0x2f, 0xbf, 0x38, 0xa4, 0x73, 0x0d, 0xbc, 0x6b, 0xa8, 0xfb, 0x7b, 0x0b, 0xd6, 0x4f, 0xcf, 0x79, + 0x16, 0x84, 0xf1, 0xec, 0x28, 0x4b, 0x8a, 0x14, 0x0f, 0x2c, 0x79, 0x36, 0x13, 0x52, 0x67, 0xae, + 0xa6, 0x30, 0x9f, 0x0f, 0x0f, 0x8f, 0xd1, 0x4f, 0x1b, 0xf3, 0x19, 0xd7, 0xea, 0x9c, 0x59, 0x2e, + 0x8f, 0x13, 0x9f, 0xcb, 0x30, 0x89, 0xb5, 0x9b, 0x4d, 0x90, 0x72, 0x76, 0x11, 0xfb, 0x14, 0x74, + 0x9b, 0x72, 0x96, 0x28, 0x3c, 0x5f, 0x11, 0x6b, 0x4e, 0x97, 0x38, 0x15, 0xed, 0xfe, 0xc9, 0x06, + 0x38, 0x5d, 0xc4, 0xbe, 0x0e, 0xe8, 0x36, 0x0c, 0x29, 0x30, 0x4f, 0x2e, 0x45, 0x2c, 0xcb, 0x70, + 0x9a, 0x10, 0x2a, 0x23, 0xf2, 0x65, 0x5a, 0x86, 0xb2, 0xa2, 0xd9, 0x3d, 0x18, 0x64, 0xc2, 0x17, + 0xb1, 0x44, 0xa6, 0x4d, 0xcc, 0x1a, 0x60, 0x2e, 0x8c, 0xe6, 0x3c, 0x97, 0x22, 0x6b, 0x04, 0xb3, + 0x81, 0xb1, 0x5d, 0x70, 0x4c, 0xfa, 0x48, 0x86, 0x81, 0x0e, 0xe8, 0x0d, 0x1c, 0xf5, 0xd1, 0x21, + 0x4a, 0x7d, 0x3d, 0xa5, 0xcf, 0xc4, 0x50, 0x9f, 0x49, 0x93, 0xbe, 0x35, 0xa5, 0xef, 0x3a, 0x8e, + 0xfa, 0xa6, 0x51, 0xe2, 0x5f, 0x84, 0xf1, 0x8c, 0x2e, 0xa0, 0x4f, 0xa1, 0x6a, 0x60, 0xec, 0xc7, + 0xe0, 0x14, 0x71, 0x26, 0xf2, 0x24, 0xba, 0x14, 0x01, 0xdd, 0x63, 0x3e, 0x1e, 0x18, 0x15, 0x67, + 0xde, 0xb0, 0x77, 0x43, 0xd4, 0xb8, 0x21, 0x50, 0x45, 0xa6, 0x6f, 0x68, 0x02, 0x30, 0x25, 0x47, + 0x5e, 0x2e, 0x52, 0x31, 0x1e, 0xaa, 0x2c, 0xab, 0x11, 0xf7, 0x8f, 0x16, 0x8c, 0xcc, 0x26, 0x60, + 0xb4, 0x27, 0x6b, 0x45, 0x7b, 0x6a, 0x9b, 0xed, 0x89, 0x7d, 0xaf, 0x6a, 0x43, 0xaa, 0xad, 0x90, + 0xb7, 0xcf, 0xb3, 0x04, 0xeb, 0xd5, 0x23, 0x46, 0xd5, 0x99, 0x1e, 0xc2, 0x30, 0x13, 0x11, 0x5f, + 0x54, 0xfd, 0x04, 0xe5, 0x6f, 0xa1, 0xbc, 0x57, 0xc3, 0x9e, 0x29, 0xe3, 0xfe, 0xbd, 0x0d, 0x43, + 0x83, 0x79, 0xe3, 0xa6, 0xad, 0xff, 0xf1, 0xa6, 0xdb, 0x2b, 0x6e, 0x7a, 0xbb, 0x74, 0xa9, 0x98, + 0x1e, 0x86, 0x99, 0x4e, 0x7e, 0x13, 0xaa, 0x24, 0x1a, 0xa9, 0x65, 0x42, 0x6c, 0x07, 0x6e, 0x19, + 0xa4, 0x91, 0x58, 0xd7, 0x61, 0xb6, 0x07, 0x8c, 0xa0, 0x03, 0x2e, 0xfd, 0xf3, 0x57, 0xe9, 0x33, + 0xf2, 0x86, 0xb2, 0xab, 0xef, 0x2d, 0xe1, 0xb0, 0xef, 0x40, 0x37, 0x97, 0x7c, 0x26, 0x28, 0xb1, + 0x36, 0xf6, 0x07, 0x94, 0x08, 0x08, 0x78, 0x0a, 0x37, 0x82, 0xdf, 0x7f, 0x4f, 0xf0, 0xdd, 0xff, + 0xb4, 0x61, 0xbd, 0xd1, 0xb6, 0x97, 0x8d, 0xb7, 0xda, 0x62, 0x7b, 0x85, 0xc5, 0x6d, 0xe8, 0x14, + 0x71, 0xa8, 0x2e, 0x7b, 0x63, 0x7f, 0x84, 0xfc, 0x57, 0x71, 0x28, 0x31, 0x97, 0x3c, 0xe2, 0x18, + 0x3e, 0x75, 0xde, 0x97, 0x10, 0xdf, 0x87, 0x3b, 0x75, 0x22, 0x1f, 0x1e, 0x1e, 0x1f, 0x27, 0xfe, + 0x45, 0xd5, 0xe7, 0x96, 0xb1, 0x18, 0x53, 0xc3, 0x8d, 0x0a, 0xf2, 0x69, 0x4b, 0x8d, 0xb7, 0xef, + 0x42, 0xd7, 0xc7, 0x71, 0x43, 0x51, 0xd2, 0x09, 0x65, 0xcc, 0x9f, 0xa7, 0x2d, 0x4f, 0xf1, 0xd9, + 0xc7, 0xd0, 0x09, 0x8a, 0x79, 0xaa, 0x63, 0xb5, 0x81, 0x72, 0xf5, 0x00, 0x78, 0xda, 0xf2, 0x88, + 0x8b, 0x52, 0x51, 0xc2, 0x83, 0xf1, 0xa0, 0x96, 0xaa, 0xe7, 0x02, 0x4a, 0x21, 0x17, 0xa5, 0xb0, + 0xc2, 0xa8, 0xda, 0xb4, 0x54, 0xdd, 0xec, 0x50, 0x0a, 0xb9, 0x8f, 0xfb, 0xd0, 0xcb, 0x55, 0x22, + 0xff, 0x04, 0x6e, 0x37, 0xa2, 0x7f, 0x1c, 0xe6, 0x14, 0x2a, 0xc5, 0x1e, 0x5b, 0xab, 0x66, 0x6b, + 0xb9, 0x7f, 0x02, 0x40, 0x67, 0x7a, 0x92, 0x65, 0x49, 0x56, 0xce, 0x78, 0xab, 0x9a, 0xf1, 0xee, + 0xb7, 0x61, 0x80, 0x67, 0x79, 0x07, 0x1b, 0x0f, 0xb1, 0x8a, 0x9d, 0xc2, 0x88, 0xbc, 0x7f, 0x71, + 0xbc, 0x42, 0x82, 0xed, 0xc3, 0xa6, 0x1a, 0xb4, 0x2a, 0x9d, 0x9f, 0x27, 0x79, 0x48, 0xe3, 0x42, + 0x15, 0xd6, 0x52, 0x1e, 0x36, 0x74, 0x81, 0xea, 0x4e, 0x5f, 0x1c, 0x97, 0xd3, 0xaf, 0xa4, 0xdd, + 0x1f, 0xc2, 0x00, 0x2d, 0x2a, 0x73, 0x3b, 0xd0, 0x23, 0x46, 0x19, 0x07, 0xa7, 0x0a, 0xa7, 0x76, + 0xc8, 0xd3, 0x7c, 0xf7, 0xb7, 0x16, 0x0c, 0x55, 0xbb, 0x52, 0x3b, 0x3f, 0xb4, 0x5b, 0x6d, 0x37, + 0xb6, 0x97, 0xf5, 0x6e, 0x6a, 0xdc, 0x03, 0xa0, 0x86, 0xa3, 0x04, 0x3a, 0xf5, 0xf5, 0xd6, 0xa8, + 0x67, 0x48, 0xe0, 0xc5, 0xd4, 0xd4, 0x92, 0xd0, 0xfe, 0xa1, 0x0d, 0x23, 0x7d, 0xa5, 0x4a, 0xe4, + 0xff, 0x54, 0x76, 0xba, 0x32, 0x3a, 0x66, 0x65, 0x3c, 0x28, 0x2b, 0xa3, 0x5b, 0x1f, 0xa3, 0xce, + 0xa2, 0xba, 0x30, 0xee, 0xeb, 0xc2, 0xe8, 0x91, 0xd8, 0x7a, 0x59, 0x18, 0xa5, 0x94, 0xaa, 0x8b, + 0xfb, 0xba, 0x2e, 0xd6, 0x6a, 0xa1, 0x2a, 0xa5, 0xaa, 0xb2, 0xb8, 0xaf, 0xcb, 0xa2, 0x5f, 0x0b, + 0x55, 0xd7, 0x5c, 0x55, 0xc5, 0x1a, 0x74, 0xe9, 0x3a, 0xdd, 0xcf, 0xc0, 0x31, 0x43, 0x43, 0x35, + 0xf1, 0x40, 0x33, 0x1b, 0xa9, 0x60, 0x08, 0x79, 0x7a, 0xef, 0x6b, 0x58, 0x6f, 0x34, 0x15, 0x9c, + 0x74, 0x61, 0x7e, 0xc0, 0x63, 0x5f, 0x44, 0xd5, 0xa7, 0xa6, 0x81, 0x18, 0x49, 0xd6, 0xae, 0x35, + 0x6b, 0x15, 0x8d, 0x24, 0x33, 0x3e, 0x18, 0xed, 0xc6, 0x07, 0xe3, 0x3f, 0x2d, 0x18, 0x99, 0x1b, + 0xf0, 0x9b, 0xf3, 0x49, 0x96, 0x1d, 0x24, 0x81, 0xba, 0xcd, 0xae, 0x57, 0x92, 0x98, 0xfa, 0xb8, + 0x8c, 0x78, 0x9e, 0xeb, 0x0c, 0xac, 0x68, 0xcd, 0x3b, 0xf5, 0x93, 0xb4, 0x7c, 0x02, 0x54, 0xb4, + 0xe6, 0x1d, 0x8b, 0x4b, 0x11, 0xe9, 0x51, 0x53, 0xd1, 0x68, 0xed, 0x99, 0xc8, 0x73, 0x4c, 0x13, + 0xd5, 0x21, 0x4b, 0x12, 0x77, 0x79, 0xfc, 0xea, 0x80, 0x17, 0xb9, 0xd0, 0xdf, 0x2a, 0x15, 0x8d, + 0x61, 0xc1, 0xa7, 0x0a, 0xcf, 0x92, 0x22, 0x2e, 0xbf, 0x50, 0x0c, 0xc4, 0xbd, 0x82, 0xdb, 0xcf, + 0x8b, 0x6c, 0x26, 0x28, 0x89, 0xcb, 0x97, 0xcf, 0x16, 0xf4, 0xc3, 0x98, 0xfb, 0x32, 0xbc, 0x14, + 0x3a, 0x92, 0x15, 0x8d, 0xf9, 0x2b, 0xc3, 0xb9, 0xd0, 0x9f, 0x68, 0xb4, 0x46, 0xf9, 0xb3, 0x30, + 0x12, 0x94, 0xd7, 0xfa, 0x48, 0x25, 0x4d, 0x25, 0xaa, 0xa6, 0xab, 0x7e, 0xd7, 0x28, 0xca, 0xfd, + 0x8b, 0x05, 0x5b, 0x27, 0xa9, 0xc8, 0xb8, 0x14, 0xea, 0x2d, 0x75, 0xea, 0x9f, 0x8b, 0x39, 0x2f, + 0x5d, 0xb8, 0x07, 0xed, 0x24, 0x25, 0xe3, 0x3a, 0xdf, 0x15, 0xfb, 0x24, 0xf5, 0xda, 0x49, 0x4a, + 0x4e, 0xf0, 0xfc, 0x42, 0xc7, 0x96, 0xd6, 0x2b, 0x1f, 0x56, 0x5b, 0xd0, 0x0f, 0xb8, 0xe4, 0x53, + 0x9e, 0x8b, 0x32, 0xa6, 0x25, 0x4d, 0x6f, 0x10, 0x3e, 0x8d, 0xca, 0x88, 0x2a, 0x82, 0x34, 0x91, + 0x35, 0x1d, 0x4d, 0x4d, 0xb9, 0x12, 0xd6, 0xbf, 0x7c, 0xa8, 0x93, 0xf1, 0x99, 0x90, 0x9c, 0x6d, + 0x19, 0x4e, 0x02, 0x3a, 0x89, 0x1c, 0xed, 0xe2, 0x7b, 0x6b, 0xba, 0x6c, 0x04, 0xb6, 0xd1, 0x08, + 0xca, 0x73, 0x75, 0x28, 0xf1, 0x68, 0xed, 0x7e, 0x02, 0x9b, 0x3a, 0x4e, 0x5f, 0x3e, 0x44, 0xab, + 0x2b, 0x23, 0xa4, 0xd8, 0xca, 0xbc, 0xfb, 0x37, 0x0b, 0xee, 0x5e, 0xdb, 0xf6, 0xc1, 0x0f, 0xc7, + 0x4f, 0xa1, 0x83, 0x8f, 0x8d, 0xb1, 0x4d, 0x05, 0x73, 0x1f, 0x6d, 0x2c, 0x55, 0xb9, 0x87, 0xc4, + 0x93, 0x58, 0x66, 0x0b, 0x8f, 0x36, 0x6c, 0xfd, 0x1c, 0x06, 0x15, 0x84, 0x7a, 0x2f, 0xc4, 0xa2, + 0xec, 0x89, 0x17, 0x62, 0x81, 0x13, 0xfb, 0x92, 0x47, 0x85, 0x0a, 0x8d, 0x1e, 0x7b, 0x8d, 0xc0, + 0x7a, 0x8a, 0xff, 0x59, 0xfb, 0x47, 0x96, 0xfb, 0x1b, 0x18, 0x3f, 0xe5, 0x71, 0x10, 0xe9, 0x2c, + 0x51, 0xa5, 0xaa, 0x43, 0xf0, 0x2d, 0x23, 0x04, 0x43, 0xd4, 0x42, 0xdc, 0x77, 0xe4, 0xc8, 0x3d, + 0x18, 0x4c, 0xcb, 0x21, 0xa5, 0x03, 0x5f, 0x03, 0xb8, 0x23, 0x7f, 0x1d, 0xe5, 0xfa, 0x91, 0x43, + 0x6b, 0xf7, 0x2e, 0xdc, 0x39, 0x12, 0x52, 0xd9, 0x3e, 0x38, 0x9b, 0x69, 0xcb, 0xee, 0x0e, 0x6c, + 0x36, 0x61, 0x1d, 0x5c, 0x07, 0x6c, 0xff, 0xac, 0x1a, 0x00, 0xfe, 0xd9, 0x6c, 0xf7, 0xd7, 0xd0, + 0x53, 0x59, 0xc1, 0xd6, 0x61, 0xf0, 0x45, 0x7c, 0xc9, 0xa3, 0x30, 0x38, 0x49, 0x9d, 0x16, 0xeb, + 0x43, 0xe7, 0x54, 0x26, 0xa9, 0x63, 0xb1, 0x01, 0x74, 0x9f, 0x63, 0xb1, 0x3a, 0x6d, 0x06, 0xd0, + 0xc3, 0x7e, 0x36, 0x17, 0x8e, 0x8d, 0xf0, 0xa9, 0xe4, 0x99, 0x74, 0x3a, 0x08, 0xbf, 0x4a, 0x03, + 0x2e, 0x85, 0xd3, 0x65, 0x1b, 0x00, 0x3f, 0x2b, 0x64, 0xa2, 0xc5, 0x7a, 0xbb, 0xaf, 0x49, 0x6c, + 0x86, 0xb6, 0x47, 0x5a, 0x3f, 0xd1, 0x4e, 0x8b, 0xad, 0x81, 0xfd, 0x4b, 0x71, 0xe5, 0x58, 0x6c, + 0x08, 0x6b, 0x5e, 0x11, 0xe3, 0x73, 0x58, 0xd9, 0x20, 0x73, 0x81, 0x63, 0x23, 0x03, 0x9d, 0x48, + 0x45, 0xe0, 0x74, 0xd8, 0x08, 0xfa, 0x9f, 0xeb, 0xf7, 0xad, 0xd3, 0x45, 0x16, 0x8a, 0xe1, 0x9e, + 0x1e, 0xb2, 0xc8, 0x20, 0x52, 0x6b, 0xbb, 0x27, 0xd0, 0x2f, 0xc7, 0x0f, 0xbb, 0x05, 0x43, 0x6d, + 0x15, 0x21, 0xa7, 0x85, 0x6e, 0xd3, 0x90, 0x71, 0x2c, 0x3c, 0x22, 0x0e, 0x12, 0xa7, 0x8d, 0x2b, + 0x9c, 0x16, 0x8e, 0x4d, 0xc7, 0x5e, 0xc4, 0xbe, 0xd3, 0x41, 0x41, 0xea, 0x3a, 0x4e, 0xb0, 0xfb, + 0x0c, 0xd6, 0x68, 0x79, 0x82, 0xd7, 0xb6, 0xa1, 0xf5, 0x69, 0xc4, 0x69, 0x61, 0xe4, 0xd0, 0x4b, + 0x25, 0x6d, 0x61, 0x04, 0xe8, 0x00, 0x8a, 0x6e, 0xa3, 0x0b, 0x2a, 0x1a, 0x0a, 0xb0, 0xd1, 0xbf, + 0xb2, 0x5d, 0xb0, 0x3b, 0x70, 0xab, 0x8c, 0x8a, 0x86, 0x94, 0xc2, 0x23, 0x21, 0x15, 0xe0, 0x58, + 0xa4, 0xbf, 0x22, 0xdb, 0x18, 0x48, 0x4f, 0xcc, 0x93, 0x4b, 0xa1, 0x11, 0x7b, 0xf7, 0x11, 0xf4, + 0xcb, 0xea, 0x32, 0x14, 0x96, 0x50, 0xa5, 0x50, 0x01, 0x8e, 0x55, 0x6b, 0xd0, 0x48, 0x7b, 0xf7, + 0x11, 0xcd, 0x0a, 0x4c, 0x4e, 0xe3, 0x84, 0x1a, 0xd1, 0xc9, 0x70, 0x11, 0xa6, 0xfa, 0xaa, 0x44, + 0x1a, 0x71, 0xbf, 0x4a, 0x87, 0x4b, 0x91, 0x49, 0xc7, 0xde, 0xff, 0xca, 0x86, 0x9e, 0x4a, 0x38, + 0xf6, 0x08, 0x86, 0xc6, 0x2f, 0x21, 0xf6, 0x11, 0xa6, 0xfe, 0xcd, 0x1f, 0x58, 0x5b, 0xdf, 0xb8, + 0x81, 0xab, 0x2c, 0x75, 0x5b, 0xec, 0xa7, 0x00, 0x75, 0xdb, 0x67, 0x77, 0x69, 0x16, 0x5e, 0x1f, + 0x03, 0x5b, 0x63, 0xfa, 0x60, 0x58, 0xf2, 0xbb, 0xcb, 0x6d, 0xb1, 0x5f, 0xc0, 0xba, 0xee, 0x05, + 0x2a, 0x48, 0x6c, 0x62, 0xb4, 0x87, 0x25, 0x0d, 0xfd, 0x9d, 0xca, 0x3e, 0xaf, 0x94, 0xa9, 0x78, + 0xb1, 0xf1, 0x92, 0x5e, 0xa3, 0xd4, 0x7c, 0x73, 0x65, 0x17, 0x72, 0x5b, 0xec, 0x08, 0x86, 0xaa, + 0x57, 0xa8, 0xf9, 0x7c, 0x0f, 0x65, 0x57, 0x35, 0x8f, 0x77, 0x3a, 0x74, 0x00, 0x23, 0xb3, 0xbc, + 0x19, 0x45, 0x72, 0x49, 0x1f, 0x50, 0x4a, 0x96, 0x75, 0x02, 0xb7, 0xf5, 0x78, 0xfc, 0x8f, 0x37, + 0x13, 0xeb, 0xeb, 0x37, 0x13, 0xeb, 0xdf, 0x6f, 0x26, 0xd6, 0xef, 0xde, 0x4e, 0x5a, 0x5f, 0xbf, + 0x9d, 0xb4, 0xfe, 0xf5, 0x76, 0xd2, 0x9a, 0xf6, 0xe8, 0xd7, 0xe3, 0x0f, 0xfe, 0x1b, 0x00, 0x00, + 0xff, 0xff, 0x8b, 0xc0, 0x89, 0xd7, 0x8c, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2571,6 +2656,7 @@ type WorkerClient interface { OperateSchema(ctx context.Context, in *OperateWorkerSchemaRequest, opts ...grpc.CallOption) (*CommonWorkerResponse, error) OperateV1Meta(ctx context.Context, in *OperateV1MetaRequest, opts ...grpc.CallOption) (*OperateV1MetaResponse, error) HandleError(ctx context.Context, in *HandleWorkerErrorRequest, opts ...grpc.CallOption) (*CommonWorkerResponse, error) + GetWorkerCfg(ctx context.Context, in *GetWorkerCfgRequest, opts ...grpc.CallOption) (*GetWorkerCfgResponse, error) } type workerClient struct { @@ -2626,6 +2712,15 @@ func (c *workerClient) HandleError(ctx context.Context, in *HandleWorkerErrorReq return out, nil } +func (c *workerClient) GetWorkerCfg(ctx context.Context, in *GetWorkerCfgRequest, opts ...grpc.CallOption) (*GetWorkerCfgResponse, error) { + out := new(GetWorkerCfgResponse) + err := c.cc.Invoke(ctx, "/pb.Worker/GetWorkerCfg", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // WorkerServer is the server API for Worker service. type WorkerServer interface { QueryStatus(context.Context, *QueryStatusRequest) (*QueryStatusResponse, error) @@ -2637,6 +2732,7 @@ type WorkerServer interface { OperateSchema(context.Context, *OperateWorkerSchemaRequest) (*CommonWorkerResponse, error) OperateV1Meta(context.Context, *OperateV1MetaRequest) (*OperateV1MetaResponse, error) HandleError(context.Context, *HandleWorkerErrorRequest) (*CommonWorkerResponse, error) + GetWorkerCfg(context.Context, *GetWorkerCfgRequest) (*GetWorkerCfgResponse, error) } // UnimplementedWorkerServer can be embedded to have forward compatible implementations. @@ -2658,6 +2754,9 @@ func (*UnimplementedWorkerServer) OperateV1Meta(ctx context.Context, req *Operat func (*UnimplementedWorkerServer) HandleError(ctx context.Context, req *HandleWorkerErrorRequest) (*CommonWorkerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method HandleError not implemented") } +func (*UnimplementedWorkerServer) GetWorkerCfg(ctx context.Context, req *GetWorkerCfgRequest) (*GetWorkerCfgResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetWorkerCfg not implemented") +} func RegisterWorkerServer(s *grpc.Server, srv WorkerServer) { s.RegisterService(&_Worker_serviceDesc, srv) @@ -2753,6 +2852,24 @@ func _Worker_HandleError_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Worker_GetWorkerCfg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetWorkerCfgRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkerServer).GetWorkerCfg(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.Worker/GetWorkerCfg", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkerServer).GetWorkerCfg(ctx, req.(*GetWorkerCfgRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Worker_serviceDesc = grpc.ServiceDesc{ ServiceName: "pb.Worker", HandlerType: (*WorkerServer)(nil), @@ -2777,6 +2894,10 @@ var _Worker_serviceDesc = grpc.ServiceDesc{ MethodName: "HandleError", Handler: _Worker_HandleError_Handler, }, + { + MethodName: "GetWorkerCfg", + Handler: _Worker_GetWorkerCfg_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "dmworker.proto", @@ -4460,6 +4581,59 @@ func (m *HandleWorkerErrorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *GetWorkerCfgRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetWorkerCfgRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetWorkerCfgRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GetWorkerCfgResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetWorkerCfgResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetWorkerCfgResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Cfg) > 0 { + i -= len(m.Cfg) + copy(dAtA[i:], m.Cfg) + i = encodeVarintDmworker(dAtA, i, uint64(len(m.Cfg))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintDmworker(dAtA []byte, offset int, v uint64) int { offset -= sovDmworker(v) base := offset @@ -5264,6 +5438,28 @@ func (m *HandleWorkerErrorRequest) Size() (n int) { return n } +func (m *GetWorkerCfgRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetWorkerCfgResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Cfg) + if l > 0 { + n += 1 + l + sovDmworker(uint64(l)) + } + return n +} + func sovDmworker(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -10185,6 +10381,144 @@ func (m *HandleWorkerErrorRequest) Unmarshal(dAtA []byte) error { } return nil } +func (m *GetWorkerCfgRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDmworker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetWorkerCfgRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetWorkerCfgRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipDmworker(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthDmworker + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDmworker + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetWorkerCfgResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDmworker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetWorkerCfgResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetWorkerCfgResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cfg", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDmworker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDmworker + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDmworker + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cfg = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDmworker(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthDmworker + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDmworker + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipDmworker(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/dm/pbmock/dmmaster.go b/dm/pbmock/dmmaster.go index fa46d10b86..b5d3c4885f 100644 --- a/dm/pbmock/dmmaster.go +++ b/dm/pbmock/dmmaster.go @@ -55,44 +55,64 @@ func (mr *MockMasterClientMockRecorder) CheckTask(arg0, arg1 interface{}, arg2 . return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckTask", reflect.TypeOf((*MockMasterClient)(nil).CheckTask), varargs...) } -// GetSubTaskCfg mocks base method -func (m *MockMasterClient) GetSubTaskCfg(arg0 context.Context, arg1 *pb.GetSubTaskCfgRequest, arg2 ...grpc.CallOption) (*pb.GetSubTaskCfgResponse, error) { +// GetCfg mocks base method +func (m *MockMasterClient) GetCfg(arg0 context.Context, arg1 *pb.GetCfgRequest, arg2 ...grpc.CallOption) (*pb.GetCfgResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "GetSubTaskCfg", varargs...) - ret0, _ := ret[0].(*pb.GetSubTaskCfgResponse) + ret := m.ctrl.Call(m, "GetCfg", varargs...) + ret0, _ := ret[0].(*pb.GetCfgResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetSubTaskCfg indicates an expected call of GetSubTaskCfg -func (mr *MockMasterClientMockRecorder) GetSubTaskCfg(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { +// GetCfg indicates an expected call of GetCfg +func (mr *MockMasterClientMockRecorder) GetCfg(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubTaskCfg", reflect.TypeOf((*MockMasterClient)(nil).GetSubTaskCfg), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCfg", reflect.TypeOf((*MockMasterClient)(nil).GetCfg), varargs...) } -// GetTaskCfg mocks base method -func (m *MockMasterClient) GetTaskCfg(arg0 context.Context, arg1 *pb.GetTaskCfgRequest, arg2 ...grpc.CallOption) (*pb.GetTaskCfgResponse, error) { +// GetMasterCfg mocks base method +func (m *MockMasterClient) GetMasterCfg(arg0 context.Context, arg1 *pb.GetMasterCfgRequest, arg2 ...grpc.CallOption) (*pb.GetMasterCfgResponse, error) { m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "GetTaskCfg", varargs...) - ret0, _ := ret[0].(*pb.GetTaskCfgResponse) + ret := m.ctrl.Call(m, "GetMasterCfg", varargs...) + ret0, _ := ret[0].(*pb.GetMasterCfgResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetTaskCfg indicates an expected call of GetTaskCfg -func (mr *MockMasterClientMockRecorder) GetTaskCfg(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { +// GetMasterCfg indicates an expected call of GetMasterCfg +func (mr *MockMasterClientMockRecorder) GetMasterCfg(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]interface{}{arg0, arg1}, arg2...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskCfg", reflect.TypeOf((*MockMasterClient)(nil).GetTaskCfg), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMasterCfg", reflect.TypeOf((*MockMasterClient)(nil).GetMasterCfg), varargs...) +} + +// GetSubTaskCfg mocks base method +func (m *MockMasterClient) GetSubTaskCfg(arg0 context.Context, arg1 *pb.GetSubTaskCfgRequest, arg2 ...grpc.CallOption) (*pb.GetSubTaskCfgResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetSubTaskCfg", varargs...) + ret0, _ := ret[0].(*pb.GetSubTaskCfgResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSubTaskCfg indicates an expected call of GetSubTaskCfg +func (mr *MockMasterClientMockRecorder) GetSubTaskCfg(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubTaskCfg", reflect.TypeOf((*MockMasterClient)(nil).GetSubTaskCfg), varargs...) } // HandleError mocks base method @@ -433,34 +453,49 @@ func (mr *MockMasterServerMockRecorder) CheckTask(arg0, arg1 interface{}) *gomoc return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckTask", reflect.TypeOf((*MockMasterServer)(nil).CheckTask), arg0, arg1) } -// GetSubTaskCfg mocks base method -func (m *MockMasterServer) GetSubTaskCfg(arg0 context.Context, arg1 *pb.GetSubTaskCfgRequest) (*pb.GetSubTaskCfgResponse, error) { +// GetCfg mocks base method +func (m *MockMasterServer) GetCfg(arg0 context.Context, arg1 *pb.GetCfgRequest) (*pb.GetCfgResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSubTaskCfg", arg0, arg1) - ret0, _ := ret[0].(*pb.GetSubTaskCfgResponse) + ret := m.ctrl.Call(m, "GetCfg", arg0, arg1) + ret0, _ := ret[0].(*pb.GetCfgResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetSubTaskCfg indicates an expected call of GetSubTaskCfg -func (mr *MockMasterServerMockRecorder) GetSubTaskCfg(arg0, arg1 interface{}) *gomock.Call { +// GetCfg indicates an expected call of GetCfg +func (mr *MockMasterServerMockRecorder) GetCfg(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubTaskCfg", reflect.TypeOf((*MockMasterServer)(nil).GetSubTaskCfg), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCfg", reflect.TypeOf((*MockMasterServer)(nil).GetCfg), arg0, arg1) +} + +// GetMasterCfg mocks base method +func (m *MockMasterServer) GetMasterCfg(arg0 context.Context, arg1 *pb.GetMasterCfgRequest) (*pb.GetMasterCfgResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetMasterCfg", arg0, arg1) + ret0, _ := ret[0].(*pb.GetMasterCfgResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMasterCfg indicates an expected call of GetMasterCfg +func (mr *MockMasterServerMockRecorder) GetMasterCfg(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMasterCfg", reflect.TypeOf((*MockMasterServer)(nil).GetMasterCfg), arg0, arg1) } -// GetTaskCfg mocks base method -func (m *MockMasterServer) GetTaskCfg(arg0 context.Context, arg1 *pb.GetTaskCfgRequest) (*pb.GetTaskCfgResponse, error) { +// GetSubTaskCfg mocks base method +func (m *MockMasterServer) GetSubTaskCfg(arg0 context.Context, arg1 *pb.GetSubTaskCfgRequest) (*pb.GetSubTaskCfgResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTaskCfg", arg0, arg1) - ret0, _ := ret[0].(*pb.GetTaskCfgResponse) + ret := m.ctrl.Call(m, "GetSubTaskCfg", arg0, arg1) + ret0, _ := ret[0].(*pb.GetSubTaskCfgResponse) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetTaskCfg indicates an expected call of GetTaskCfg -func (mr *MockMasterServerMockRecorder) GetTaskCfg(arg0, arg1 interface{}) *gomock.Call { +// GetSubTaskCfg indicates an expected call of GetSubTaskCfg +func (mr *MockMasterServerMockRecorder) GetSubTaskCfg(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskCfg", reflect.TypeOf((*MockMasterServer)(nil).GetTaskCfg), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubTaskCfg", reflect.TypeOf((*MockMasterServer)(nil).GetSubTaskCfg), arg0, arg1) } // HandleError mocks base method diff --git a/dm/pbmock/dmworker.go b/dm/pbmock/dmworker.go index b36b1666a5..fa4f3de7a3 100644 --- a/dm/pbmock/dmworker.go +++ b/dm/pbmock/dmworker.go @@ -35,6 +35,26 @@ func (m *MockWorkerClient) EXPECT() *MockWorkerClientMockRecorder { return m.recorder } +// GetWorkerCfg mocks base method +func (m *MockWorkerClient) GetWorkerCfg(arg0 context.Context, arg1 *pb.GetWorkerCfgRequest, arg2 ...grpc.CallOption) (*pb.GetWorkerCfgResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetWorkerCfg", varargs...) + ret0, _ := ret[0].(*pb.GetWorkerCfgResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWorkerCfg indicates an expected call of GetWorkerCfg +func (mr *MockWorkerClientMockRecorder) GetWorkerCfg(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkerCfg", reflect.TypeOf((*MockWorkerClient)(nil).GetWorkerCfg), varargs...) +} + // HandleError mocks base method func (m *MockWorkerClient) HandleError(arg0 context.Context, arg1 *pb.HandleWorkerErrorRequest, arg2 ...grpc.CallOption) (*pb.CommonWorkerResponse, error) { m.ctrl.T.Helper() @@ -158,6 +178,21 @@ func (m *MockWorkerServer) EXPECT() *MockWorkerServerMockRecorder { return m.recorder } +// GetWorkerCfg mocks base method +func (m *MockWorkerServer) GetWorkerCfg(arg0 context.Context, arg1 *pb.GetWorkerCfgRequest) (*pb.GetWorkerCfgResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetWorkerCfg", arg0, arg1) + ret0, _ := ret[0].(*pb.GetWorkerCfgResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWorkerCfg indicates an expected call of GetWorkerCfg +func (mr *MockWorkerServerMockRecorder) GetWorkerCfg(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkerCfg", reflect.TypeOf((*MockWorkerServer)(nil).GetWorkerCfg), arg0, arg1) +} + // HandleError mocks base method func (m *MockWorkerServer) HandleError(arg0 context.Context, arg1 *pb.HandleWorkerErrorRequest) (*pb.CommonWorkerResponse, error) { m.ctrl.T.Helper() diff --git a/dm/proto/dmmaster.proto b/dm/proto/dmmaster.proto index 4633baf20d..6b2a7746ea 100644 --- a/dm/proto/dmmaster.proto +++ b/dm/proto/dmmaster.proto @@ -89,8 +89,8 @@ service Master { }; } - // GetTaskCfg get task config - rpc GetTaskCfg(GetTaskCfgRequest) returns(GetTaskCfgResponse) { + // GetCfg get config + rpc GetCfg(GetCfgRequest) returns(GetCfgResponse) { option (google.api.http) = { get: "/apis/v1alpha1/tasks/{name}" }; @@ -102,6 +102,8 @@ service Master { body: "*" }; } + + rpc GetMasterCfg(GetMasterCfgRequest) returns(GetMasterCfgResponse) {} } message StartTaskRequest { @@ -383,17 +385,32 @@ message GetSubTaskCfgResponse { repeated string cfgs = 3; } -message GetTaskCfgRequest { - // the task name - string name = 1; +enum CfgType { + InvalidType = 0; + TaskType = 1; + MasterType = 2; + WorkerType = 3; + SourceType = 4; +} + +message GetCfgRequest { + CfgType type = 1; // the config type + string name = 2; // the config name } -message GetTaskCfgResponse { +message GetCfgResponse { bool result = 1; string msg = 2; string cfg = 3; } +message GetMasterCfgRequest { +} + +message GetMasterCfgResponse { + string cfg = 1; +} + message HandleErrorRequest { ErrorOp op = 1; // operation type string task = 2; // the task name diff --git a/dm/proto/dmworker.proto b/dm/proto/dmworker.proto index d84a9e9176..f9965b3df5 100644 --- a/dm/proto/dmworker.proto +++ b/dm/proto/dmworker.proto @@ -17,6 +17,8 @@ service Worker { rpc OperateV1Meta(OperateV1MetaRequest) returns(OperateV1MetaResponse) {} rpc HandleError(HandleWorkerErrorRequest) returns(CommonWorkerResponse) {} + + rpc GetWorkerCfg(GetWorkerCfgRequest) returns(GetWorkerCfgResponse) {} } enum TaskOp { @@ -359,4 +361,11 @@ message HandleWorkerErrorRequest { string task = 2; // task name string binlogPos = 3; // binlog-pos (that's file:pos format) repeated string sqls = 4; // sqls (use for replace) +} + +message GetWorkerCfgRequest { +} + +message GetWorkerCfgResponse { + string cfg = 1; } \ No newline at end of file diff --git a/dm/worker/config.go b/dm/worker/config.go index 8de442423b..22778d9074 100644 --- a/dm/worker/config.go +++ b/dm/worker/config.go @@ -78,7 +78,7 @@ type Config struct { WorkerAddr string `toml:"worker-addr" json:"worker-addr"` AdvertiseAddr string `toml:"advertise-addr" json:"advertise-addr"` - ConfigFile string `json:"config-file"` + ConfigFile string `toml:"config-file" json:"config-file"` // TODO: in the future dm-workers should share a same ttl from dm-master KeepAliveTTL int64 `toml:"keepalive-ttl" json:"keepalive-ttl"` diff --git a/dm/worker/relay.go b/dm/worker/relay.go index 6cd3ed25e1..6dcbe0d859 100644 --- a/dm/worker/relay.go +++ b/dm/worker/relay.go @@ -227,11 +227,12 @@ func (h *realRelayHolder) resumeRelay(ctx context.Context, op pb.RelayOp) error func (h *realRelayHolder) stopRelay(ctx context.Context, op pb.RelayOp) error { h.Lock() - defer h.Unlock() if h.stage == pb.Stage_Stopped { + h.Unlock() return terror.ErrWorkerRelayStageNotValid.Generatef("current stage is already stopped not valid, relayop %s", op) } h.stage = pb.Stage_Stopped + h.Unlock() // unlock to make `run` can return // now, when try to stop relay unit, we close relay holder h.Close() diff --git a/dm/worker/server.go b/dm/worker/server.go index c07a67b19a..ff6fb97cc1 100644 --- a/dm/worker/server.go +++ b/dm/worker/server.go @@ -776,3 +776,13 @@ func (s *Server) HandleError(ctx context.Context, req *pb.HandleWorkerErrorReque Worker: s.cfg.Name, }, nil } + +// GetWorkerCfg get worker config +func (s *Server) GetWorkerCfg(ctx context.Context, req *pb.GetWorkerCfgRequest) (*pb.GetWorkerCfgResponse, error) { + log.L().Info("", zap.String("request", "GetWorkerCfg"), zap.Stringer("payload", req)) + var err error + resp := &pb.GetWorkerCfgResponse{} + + resp.Cfg, err = s.cfg.Toml() + return resp, err +} diff --git a/pkg/ha/task.go b/pkg/ha/task.go deleted file mode 100644 index 2d3203a127..0000000000 --- a/pkg/ha/task.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2020 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// See the License for the specific language governing permissions and -// limitations under the License. - -package ha - -import ( - "context" - - "go.etcd.io/etcd/clientv3" - - "github.com/pingcap/dm/dm/common" - "github.com/pingcap/dm/pkg/etcdutil" - "github.com/pingcap/dm/pkg/terror" -) - -func taskCfgFromResp(task string, resp *clientv3.GetResponse) (map[string]string, error) { - tcm := make(map[string]string) - if resp.Count == 0 { - return tcm, nil - } else if task != "" && resp.Count > 1 { - // this should not happen. - return tcm, terror.ErrConfigMoreThanOne.Generate(resp.Count, "task", "task name: "+task) - } - - for _, kvs := range resp.Kvs { - keys, err := common.TaskConfigKeyAdapter.Decode(string(kvs.Key)) - if err != nil { - return tcm, err - } - tcm[keys[0]] = string(kvs.Value) - } - return tcm, nil -} - -// PutTaskCfg puts the config string of task into etcd. -// k/v: task name -> task config string. -func PutTaskCfg(cli *clientv3.Client, task string, cfg string) (int64, error) { - key := common.TaskConfigKeyAdapter.Encode(task) - _, rev, err := etcdutil.DoOpsInOneTxnWithRetry(cli, clientv3.OpPut(key, cfg)) - return rev, err -} - -// GetTaskCfg gets the config string of task. -// k/v: task name -> task config string. -// if the task name is "", it will return all task configs as a map{task-name: task-config-string}. -// if the task name is given, it will return a map{task-name: task-config-string} whose length is 1. -func GetTaskCfg(cli *clientv3.Client, task string) (map[string]string, int64, error) { - ctx, cancel := context.WithTimeout(cli.Ctx(), etcdutil.DefaultRequestTimeout) - defer cancel() - - var ( - tcm = make(map[string]string) - resp *clientv3.GetResponse - err error - ) - if task != "" { - resp, err = cli.Get(ctx, common.TaskConfigKeyAdapter.Encode(task)) - } else { - resp, err = cli.Get(ctx, common.TaskConfigKeyAdapter.Path(), clientv3.WithPrefix()) - } - - if err != nil { - return tcm, 0, err - } - - tcm, err = taskCfgFromResp(task, resp) - if err != nil { - return tcm, 0, err - } - - return tcm, resp.Header.Revision, nil -} - -// DeleteTaskCfg deletes the config of task. -func DeleteTaskCfg(cli *clientv3.Client, task string) (int64, error) { - _, rev, err := etcdutil.DoOpsInOneTxnWithRetry(cli, clientv3.OpDelete(common.TaskConfigKeyAdapter.Encode(task))) - return rev, err -} diff --git a/pkg/ha/task_test.go b/pkg/ha/task_test.go deleted file mode 100644 index 90164dd319..0000000000 --- a/pkg/ha/task_test.go +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2020 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// See the License for the specific language governing permissions and -// limitations under the License. - -package ha - -import ( - . "github.com/pingcap/check" - - "github.com/pingcap/dm/dm/config" -) - -const ( - // do not forget to update this path if the file removed/renamed. - taskSampleFile = "../../dm/master/task_basic.yaml" -) - -func (t *testForEtcd) TestTaskEtcd(c *C) { - defer clearTestInfoOperation(c) - - cfg1 := config.TaskConfig{} - c.Assert(cfg1.DecodeFile(taskSampleFile), IsNil) - taskName1 := cfg1.Name - - taskName2 := taskName1 + "2" - cfg2 := cfg1 - cfg2.Name = taskName2 - - for _, mysqlInstance := range cfg1.MySQLInstances { - mysqlInstance.RemoveDuplicateCfg() - } - for _, mysqlInstance := range cfg2.MySQLInstances { - mysqlInstance.RemoveDuplicateCfg() - } - cfgStr1 := cfg1.String() - cfgStr2 := cfg2.String() - - // no task config exist. - tcm1, rev1, err := GetTaskCfg(etcdTestCli, taskName1) - c.Assert(err, IsNil) - c.Assert(rev1, Greater, int64(0)) - c.Assert(tcm1, HasLen, 0) - - // put task config 1 - rev2, err := PutTaskCfg(etcdTestCli, taskName1, cfgStr1) - c.Assert(err, IsNil) - c.Assert(rev2, Greater, rev1) - - // put task config 2 - rev3, err := PutTaskCfg(etcdTestCli, taskName2, cfgStr2) - c.Assert(err, IsNil) - c.Assert(rev3, Greater, rev2) - - // get single config back. - tsm2, rev4, err := GetTaskCfg(etcdTestCli, taskName1) - c.Assert(err, IsNil) - c.Assert(rev4, Equals, rev3) - c.Assert(tsm2, HasLen, 1) - c.Assert(tsm2, HasKey, taskName1) - c.Assert(tsm2[taskName1], Equals, cfgStr1) - - tsm3, rev5, err := GetTaskCfg(etcdTestCli, "") - c.Assert(err, IsNil) - c.Assert(rev5, Equals, rev4) - c.Assert(tsm3, HasLen, 2) - c.Assert(tsm3, HasKey, taskName1) - c.Assert(tsm3, HasKey, taskName2) - c.Assert(tsm3[taskName1], DeepEquals, cfgStr1) - c.Assert(tsm3[taskName2], DeepEquals, cfgStr2) - - // delete the config. - rev6, err := DeleteTaskCfg(etcdTestCli, taskName1) - c.Assert(err, IsNil) - c.Assert(rev6, Greater, rev5) - - // get again, not exists now. - tsm4, rev7, err := GetTaskCfg(etcdTestCli, taskName1) - c.Assert(err, IsNil) - c.Assert(tsm4, HasLen, 0) - c.Assert(rev7, Equals, rev6) - - // put task config. - rev8, err := PutTaskCfg(etcdTestCli, taskName1, cfgStr1) - c.Assert(err, IsNil) - c.Assert(rev8, Greater, rev7) - - // update task config. - cfg3 := cfg1 - cfg3.TaskMode = "full" - for _, mysqlInstance := range cfg2.MySQLInstances { - mysqlInstance.RemoveDuplicateCfg() - } - cfgStr3 := cfg3.String() - rev9, err := PutTaskCfg(etcdTestCli, cfg3.Name, cfgStr3) - c.Assert(err, IsNil) - c.Assert(rev9, Greater, rev8) - - // get updated task - tsm5, rev10, err := GetTaskCfg(etcdTestCli, taskName1) - c.Assert(err, IsNil) - c.Assert(rev10, Equals, rev9) - c.Assert(tsm5, HasLen, 1) - c.Assert(tsm5, HasKey, taskName1) - c.Assert(tsm5[taskName1], DeepEquals, cfgStr3) -} diff --git a/tests/dmctl_basic/check_list/get_config.sh b/tests/dmctl_basic/check_list/get_config.sh new file mode 100644 index 0000000000..c7f76d1eb5 --- /dev/null +++ b/tests/dmctl_basic/check_list/get_config.sh @@ -0,0 +1,125 @@ +#!/bin/bash + +function get_config_wrong_arg() { + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config" \ + "get-config \[--file filename\] \[flags\]" 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config hihi haha" \ + "invalid config type 'hihi'" 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config task haha" \ + "task not found" 1 + + # test alias + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-task-config haha" \ + "task not found" 1 + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-task-config haha hihi" \ + "get-config \[--file filename\] \[flags\]" 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config master haha" \ + "master not found" 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config worker haha" \ + "worker not found" 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config source haha" \ + "source not found" 1 +} + +function diff_get_config() { + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config task test --file $WORK_DIR/get_task.yaml" \ + "\"result\": true" 1 + diff $WORK_DIR/get_task.yaml $cur/conf/get_task.yaml || exit 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config master master1 --file $dm_master_conf" \ + "\"result\": true" 1 + diff $dm_master_conf $cur/conf/get_master1.toml || exit 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config worker worker1 --file $dm_worker1_conf" \ + "\"result\": true" 1 + diff $dm_worker1_conf $cur/conf/get_worker1.toml || exit 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config worker worker2 --file $dm_worker2_conf" \ + "\"result\": true" 1 + diff $dm_worker2_conf $cur/conf/get_worker2.toml || exit 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config source mysql-replica-01 --file $WORK_DIR/get_source1.yaml" \ + "\"result\": true" 1 + diff $WORK_DIR/get_source1.yaml $cur/conf/get_source1.yaml || exit 1 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config source mysql-replica-02 --file $WORK_DIR/get_source2.yaml" \ + "\"result\": true" 1 + diff $WORK_DIR/get_source2.yaml $cur/conf/get_source2.yaml || exit 1 +} + +function get_config_to_file() { + diff_get_config + + sed -i "s/password: '\*\*\*\*\*\*'/password: ''/g" $WORK_DIR/get_task.yaml + sed -i "s/password: '\*\*\*\*\*\*'/password: '123456'/g" $WORK_DIR/get_source1.yaml + sed -i "s/password: '\*\*\*\*\*\*'/password: '123456'/g" $WORK_DIR/get_source2.yaml + + # stop task + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "stop-task test" \ + "\"result\": true" 3 + + # restart source with get config + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "operate-source stop mysql-replica-01" \ + "\"result\": true" 2 + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "operate-source create $WORK_DIR/get_source1.yaml" \ + "\"result\": true" 2 + + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "operate-source stop mysql-replica-02" \ + "\"result\": true" 2 + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "operate-source create $WORK_DIR/get_source2.yaml" \ + "\"result\": true" 2 + + # start task with get config + run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "start-task $WORK_DIR/get_task.yaml" \ + "\"result\": true" 3 + + # restart master with get config + ps aux | grep dm-master |awk '{print $2}'|xargs kill || true + check_port_offline $MASTER_PORT1 20 + run_dm_master $WORK_DIR/master $MASTER_PORT $dm_master_conf + check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT + + # restart worker with get config + ps aux | grep worker1 |awk '{print $2}'|xargs kill || true + check_port_offline $WORKER1_PORT 20 + ps aux | grep worker2 |awk '{print $2}'|xargs kill || true + check_port_offline $WORKER2_PORT 20 + run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "list-member --worker" \ + "offline" 2 + + run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $dm_worker1_conf + check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT + run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $dm_worker2_conf + check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT + run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "list-member --worker" \ + "bound" 2 + + diff_get_config +} diff --git a/tests/dmctl_basic/check_list/get_task_config.sh b/tests/dmctl_basic/check_list/get_task_config.sh deleted file mode 100644 index 49e7f2bffb..0000000000 --- a/tests/dmctl_basic/check_list/get_task_config.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash - -function get_task_config_wrong_name() { - run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "get-task-config haha" \ - "task not found" 1 -} - -function get_task_config_to_file() { - run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "get-task-config test --file $WORK_DIR/test.yaml" \ - "\"result\": true" 1 - - run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "stop-task test" \ - "\"result\": true" 3 - - run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "get-task-config test --file $WORK_DIR/test.yaml" \ - "task not found" 1 - - # start task with file - run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "start-task $WORK_DIR/test.yaml" \ - "\"result\": true" 3 -} - -function get_task_config_recover_etcd() { - run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "get-task-config test --file $WORK_DIR/test1.yaml" \ - "\"result\": true" 1 - - ps aux | grep dm-master |awk '{print $2}'|xargs kill || true - check_port_offline $MASTER_PORT1 20 - - run_dm_master $WORK_DIR/master $MASTER_PORT $dm_master_conf - check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT - - run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "get-task-config test --file $WORK_DIR/test2.yaml" \ - "\"result\": true" 1 - - diff $WORK_DIR/test1.yaml $WORK_DIR/test2.yaml || exit 1 -} diff --git a/tests/dmctl_basic/conf/dm-master.toml b/tests/dmctl_basic/conf/dm-master.toml index 14ac020290..bcef66e4b9 100644 --- a/tests/dmctl_basic/conf/dm-master.toml +++ b/tests/dmctl_basic/conf/dm-master.toml @@ -1,4 +1,5 @@ # Master Configuration. +name = "master1" master-addr = ":8261" advertise-addr = "127.0.0.1:8261" diff --git a/tests/dmctl_basic/conf/get_master1.toml b/tests/dmctl_basic/conf/get_master1.toml new file mode 100644 index 0000000000..bc1589d944 --- /dev/null +++ b/tests/dmctl_basic/conf/get_master1.toml @@ -0,0 +1,21 @@ +log-level = "debug" +log-file = "/tmp/dm_test/dmctl_basic/master/log/dm-master.log" +log-format = "text" +log-rotate = "" +rpc-timeout = "30s" +rpc-rate-limit = 10.0 +rpc-rate-burst = 40 +master-addr = ":8261" +advertise-addr = "127.0.0.1:8261" +config-file = "/tmp/dm_test/dmctl_basic/master/dm-master.toml" +name = "master1" +data-dir = "default.master1" +peer-urls = "http://127.0.0.1:8291" +advertise-peer-urls = "http://127.0.0.1:8291" +initial-cluster = "master1=http://127.0.0.1:8291" +initial-cluster-state = "new" +join = "" +v1-sources-path = "" +ssl-ca = "" +ssl-cert = "" +ssl-key = "" diff --git a/tests/dmctl_basic/conf/get_source1.yaml b/tests/dmctl_basic/conf/get_source1.yaml new file mode 100644 index 0000000000..e059f6098c --- /dev/null +++ b/tests/dmctl_basic/conf/get_source1.yaml @@ -0,0 +1,32 @@ +enable-gtid: false +auto-fix-gtid: false +relay-dir: /tmp/dm_test/dmctl_basic/worker1/relay_log +meta-dir: "" +flavor: mysql +charset: "" +enable-relay: true +relay-binlog-name: "" +relay-binlog-gtid: "" +source-id: mysql-replica-01 +from: + host: 127.0.0.1 + port: 3306 + user: root + password: '******' + max-allowed-packet: null + session: {} + security: null +purge: + interval: 3600 + expires: 0 + remain-space: 15 +checker: + check-enable: true + backoff-rollback: 5m0s + backoff-max: 5m0s + check-interval: 5s + backoff-min: 1s + backoff-jitter: true + backoff-factor: 2 +server-id: 123456 +tracer: {} diff --git a/tests/dmctl_basic/conf/get_source2.yaml b/tests/dmctl_basic/conf/get_source2.yaml new file mode 100644 index 0000000000..b58ef52df0 --- /dev/null +++ b/tests/dmctl_basic/conf/get_source2.yaml @@ -0,0 +1,32 @@ +enable-gtid: false +auto-fix-gtid: false +relay-dir: /tmp/dm_test/dmctl_basic/worker2/relay_log +meta-dir: "" +flavor: mysql +charset: "" +enable-relay: true +relay-binlog-name: "" +relay-binlog-gtid: "" +source-id: mysql-replica-02 +from: + host: 127.0.0.1 + port: 3307 + user: root + password: '******' + max-allowed-packet: null + session: {} + security: null +purge: + interval: 3600 + expires: 0 + remain-space: 15 +checker: + check-enable: true + backoff-rollback: 5m0s + backoff-max: 5m0s + check-interval: 5s + backoff-min: 1s + backoff-jitter: true + backoff-factor: 2 +server-id: 654321 +tracer: {} diff --git a/tests/dmctl_basic/conf/get_task.yaml b/tests/dmctl_basic/conf/get_task.yaml new file mode 100644 index 0000000000..7095f083d4 --- /dev/null +++ b/tests/dmctl_basic/conf/get_task.yaml @@ -0,0 +1,135 @@ +name: test +task-mode: all +is-sharding: true +shard-mode: pessimistic +ignore-checking-items: [] +meta-schema: dm_meta +enable-heartbeat: false +heartbeat-update-interval: 1 +heartbeat-report-interval: 10 +timezone: Asia/Shanghai +case-sensitive: false +target-database: + host: 127.0.0.1 + port: 4000 + user: root + password: '******' + max-allowed-packet: null + session: + tidb_txn_mode: optimistic + security: null +mysql-instances: +- source-id: mysql-replica-01 + meta: null + filter-rules: [] + column-mapping-rules: + - cm-01 + route-rules: + - route-01 + - route-02 + black-white-list: "" + block-allow-list: balist-01 + mydumper-config-name: dump-01 + mydumper: null + mydumper-thread: 0 + loader-config-name: load-01 + loader: null + loader-thread: 0 + syncer-config-name: sync-01 + syncer: null + syncer-thread: 0 +- source-id: mysql-replica-02 + meta: null + filter-rules: [] + column-mapping-rules: + - cm-02 + route-rules: + - route-01 + - route-02 + black-white-list: "" + block-allow-list: balist-01 + mydumper-config-name: dump-01 + mydumper: null + mydumper-thread: 0 + loader-config-name: load-01 + loader: null + loader-thread: 0 + syncer-config-name: sync-01 + syncer: null + syncer-thread: 0 +online-ddl-scheme: "" +routes: + route-01: + schema-pattern: dmctl + table-pattern: t_* + target-schema: dmctl + target-table: t_target + route-02: + schema-pattern: dmctl + table-pattern: "" + target-schema: dmctl + target-table: "" +filters: {} +column-mappings: + cm-01: + schema-pattern: dmctl + table-pattern: t_* + source-column: id + target-column: id + expression: partition id + arguments: + - "1" + - "" + - t_ + create-table-query: "" + cm-02: + schema-pattern: dmctl + table-pattern: t_* + source-column: id + target-column: id + expression: partition id + arguments: + - "2" + - "" + - t_ + create-table-query: "" +black-white-list: {} +block-allow-list: + balist-01: + do-tables: + - db-name: dmctl + tbl-name: ~^t_[\d]+ + do-dbs: + - dmctl + ignore-tables: [] + ignore-dbs: [] +mydumpers: + dump-01: + mydumper-path: ./bin/mydumper + threads: 4 + chunk-filesize: "64" + statement-size: 0 + rows: 0 + where: "" + skip-tz-utc: true + extra-args: "" +loaders: + load-01: + pool-size: 16 + dir: ./dumped_data.test +syncers: + sync-01: + meta-file: "" + worker-count: 16 + batch: 100 + queue-size: 1024 + checkpoint-flush-interval: 30 + max-retry: 0 + auto-fix-gtid: false + enable-gtid: false + disable-detect: false + safe-mode: false + enable-ansi-quotes: false +clean-dump-file: true +ansi-quotes: false +remove-meta: false diff --git a/tests/dmctl_basic/conf/get_worker1.toml b/tests/dmctl_basic/conf/get_worker1.toml new file mode 100644 index 0000000000..c2ef225d2d --- /dev/null +++ b/tests/dmctl_basic/conf/get_worker1.toml @@ -0,0 +1,13 @@ +name = "worker1" +log-level = "debug" +log-file = "/tmp/dm_test/dmctl_basic/worker1/log/dm-worker.log" +log-format = "text" +log-rotate = "" +join = "http://127.0.0.1:8261" +worker-addr = "0.0.0.0:8262" +advertise-addr = "127.0.0.1:8262" +config-file = "/tmp/dm_test/dmctl_basic/worker1/dm-worker.toml" +keepalive-ttl = 10 +ssl-ca = "" +ssl-cert = "" +ssl-key = "" diff --git a/tests/dmctl_basic/conf/get_worker2.toml b/tests/dmctl_basic/conf/get_worker2.toml new file mode 100644 index 0000000000..a873a41fb7 --- /dev/null +++ b/tests/dmctl_basic/conf/get_worker2.toml @@ -0,0 +1,13 @@ +name = "worker2" +log-level = "debug" +log-file = "/tmp/dm_test/dmctl_basic/worker2/log/dm-worker.log" +log-format = "text" +log-rotate = "" +join = "http://127.0.0.1:8261" +worker-addr = "0.0.0.0:8263" +advertise-addr = "127.0.0.1:8263" +config-file = "/tmp/dm_test/dmctl_basic/worker2/dm-worker.toml" +keepalive-ttl = 10 +ssl-ca = "" +ssl-cert = "" +ssl-key = "" diff --git a/tests/dmctl_basic/conf/source1.yaml b/tests/dmctl_basic/conf/source1.yaml index 80b527688d..4bbcf0f019 100644 --- a/tests/dmctl_basic/conf/source1.yaml +++ b/tests/dmctl_basic/conf/source1.yaml @@ -1,5 +1,5 @@ source-id: mysql-replica-01 -flavor: '' +server-id: 123456 enable-gtid: false relay-binlog-name: '' relay-binlog-gtid: '' diff --git a/tests/dmctl_basic/conf/source2.yaml b/tests/dmctl_basic/conf/source2.yaml index a3d54dbfc6..871d35d6eb 100644 --- a/tests/dmctl_basic/conf/source2.yaml +++ b/tests/dmctl_basic/conf/source2.yaml @@ -1,5 +1,5 @@ source-id: mysql-replica-02 -flavor: '' +server-id: 654321 enable-gtid: false relay-binlog-name: '' relay-binlog-gtid: '' diff --git a/tests/dmctl_basic/run.sh b/tests/dmctl_basic/run.sh index 9071f0f3ae..157e2ab23b 100755 --- a/tests/dmctl_basic/run.sh +++ b/tests/dmctl_basic/run.sh @@ -174,10 +174,9 @@ function run() { "\"stage\": \"Running\"" 4 # update_task_not_paused $TASK_CONF - echo "get_task_config" - get_task_config_wrong_name - get_task_config_to_file - get_task_config_recover_etcd + echo "get_config" + get_config_wrong_arg + get_config_to_file # retry to wait for recovered from etcd ready run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ diff --git a/tests/ha_master/run.sh b/tests/ha_master/run.sh index 7d1b713a5e..8112be6558 100755 --- a/tests/ha_master/run.sh +++ b/tests/ha_master/run.sh @@ -232,6 +232,14 @@ function test_list_member() { "list-member --worker" \ "\"stage\": \"bound\"" 2 + run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config master master1" \ + 'name = \\"master1\\"' 1 + + run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ + "get-config master master2" \ + 'name = \\"master2\\"' 1 + echo "[$(date)] <<<<<< finish test_list_member_command >>>>>>" } diff --git a/tests/http_apis/run.sh b/tests/http_apis/run.sh index 09087cc40b..1f4980deab 100644 --- a/tests/http_apis/run.sh +++ b/tests/http_apis/run.sh @@ -57,10 +57,6 @@ function run() { curl -X GET 127.0.0.1:$MASTER_PORT/apis/${API_VERSION}/subtasks/test > $WORK_DIR/subtask.log check_log_contains $WORK_DIR/subtask.log "is-sharding = false" 1 - echo "get task config" - curl -X GET 127.0.0.1:$MASTER_PORT/apis/${API_VERSION}/tasks/test > $WORK_DIR/task.log - check_log_contains $WORK_DIR/task.log "is-sharding: false" 1 - echo "pause task and check stage" curl -X PUT 127.0.0.1:$MASTER_PORT/apis/${API_VERSION}/tasks/test -d '{ "op": 2 }' > $WORK_DIR/pause.log check_log_contains $WORK_DIR/pause.log "\"op\": \"Pause\"" 1 diff --git a/tests/import_v10x/conf/task.yaml b/tests/import_v10x/conf/task.yaml index db0e5464c1..8d85a51204 100644 --- a/tests/import_v10x/conf/task.yaml +++ b/tests/import_v10x/conf/task.yaml @@ -43,11 +43,11 @@ mysql-instances: column-mapping-rules: [] route-rules: [] black-white-list: "" - block-allow-list: balist-02 - mydumper-config-name: dump-02 + block-allow-list: balist-01 + mydumper-config-name: dump-01 mydumper: null mydumper-thread: 0 - loader-config-name: load-02 + loader-config-name: load-01 loader: null loader-thread: 0 syncer-config-name: sync-02 @@ -65,12 +65,6 @@ block-allow-list: - import_v10x ignore-tables: [] ignore-dbs: [] - balist-02: - do-tables: [] - do-dbs: - - import_v10x - ignore-tables: [] - ignore-dbs: [] mydumpers: dump-01: mydumper-path: ./bin/mydumper @@ -81,22 +75,10 @@ mydumpers: where: "" skip-tz-utc: true extra-args: "" - dump-02: - mydumper-path: ./bin/mydumper - threads: 4 - chunk-filesize: "64" - statement-size: 0 - rows: 0 - where: "" - skip-tz-utc: true - extra-args: "" loaders: load-01: pool-size: 16 dir: ./dumped_data.test - load-02: - pool-size: 16 - dir: ./dumped_data.test syncers: sync-01: meta-file: "" diff --git a/tests/import_v10x/run.sh b/tests/import_v10x/run.sh index 3146bfafe2..918b8ed163 100644 --- a/tests/import_v10x/run.sh +++ b/tests/import_v10x/run.sh @@ -75,9 +75,10 @@ function run() { # check task config, just a simple match run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ - "get-task-config test --file $WORK_DIR/task.yaml" \ + "get-config task test --file $WORK_DIR/task.yaml" \ "\"result\": true" 1 + sed -i "s/password: '\*\*\*\*\*\*'/password: \"\"/g" $WORK_DIR/task.yaml diff $cur/conf/task.yaml $WORK_DIR/task.yaml || exit 1 run_sql "show create table \`dm_meta\`.\`test_syncer_checkpoint\`" $TIDB_PORT $TIDB_PASSWORD