Skip to content

Commit

Permalink
address comments
Browse files Browse the repository at this point in the history
Signed-off-by: Ryan Leung <[email protected]>
  • Loading branch information
rleungx committed Jul 13, 2023
1 parent 8f2b95f commit 0c5cc53
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 33 deletions.
29 changes: 16 additions & 13 deletions components/playground/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,12 @@ import (
// BootOptions is the topology and options used to start a playground cluster
type BootOptions struct {
Mode string `yaml:"mode"`
PDMode string `yaml:"pd_mode"`
Version string `yaml:"version"`
PD instance.Config `yaml:"pd"` // ignored when mode == tidb-ms
PDAPI instance.Config `yaml:"pd_api"` // Only available when mode == tidb-ms
PDTSO instance.Config `yaml:"pd_tso"` // Only available when mode == tidb-ms
PDRM instance.Config `yaml:"pd_rm"` // Only available when mode == tidb-ms
PD instance.Config `yaml:"pd"` // ignored when pd_mode == ms
PDAPI instance.Config `yaml:"pd_api"` // Only available when pd_mode == ms
PDTSO instance.Config `yaml:"pd_tso"` // Only available when pd_mode == ms
PDRM instance.Config `yaml:"pd_rm"` // Only available when pd_mode == ms
TiDB instance.Config `yaml:"tidb"`
TiKV instance.Config `yaml:"tikv"`
TiFlash instance.Config `yaml:"tiflash"` // ignored when mode == tidb-disagg
Expand Down Expand Up @@ -269,7 +270,8 @@ If you'd like to use a TiDB version other than %s, cancel and retry with the fol
},
}

rootCmd.Flags().StringVar(&options.Mode, "mode", "tidb", "TiUP playground mode: 'tidb', 'tidb-disagg', 'tikv-slim', 'tidb-ms'")
rootCmd.Flags().StringVar(&options.Mode, "mode", "tidb", "TiUP playground mode: 'tidb', 'tidb-disagg', 'tikv-slim'")
rootCmd.Flags().StringVar(&options.PDMode, "pd.mode", "pd", "PD mode: 'pd', 'ms'")
rootCmd.PersistentFlags().StringVarP(&tag, "tag", "T", "", "Specify a tag for playground") // Use `PersistentFlags()` to make it available to subcommands.
rootCmd.Flags().Bool("without-monitor", false, "Don't start prometheus and grafana component")
rootCmd.Flags().BoolVar(&options.Monitor, "monitor", true, "Start prometheus and grafana component")
Expand Down Expand Up @@ -371,15 +373,12 @@ func populateDefaultOpt(flagSet *pflag.FlagSet) error {
case "tidb":
defaultInt(&options.TiDB.Num, "db", 1)
defaultInt(&options.TiKV.Num, "kv", 1)
defaultInt(&options.PD.Num, "pd", 1)
defaultInt(&options.TiFlash.Num, "tiflash", 1)
case "tikv-slim":
defaultInt(&options.TiKV.Num, "kv", 1)
defaultInt(&options.PD.Num, "pd", 1)
case "tidb-disagg":
defaultInt(&options.TiDB.Num, "db", 1)
defaultInt(&options.TiKV.Num, "kv", 1)
defaultInt(&options.PD.Num, "pd", 1)
defaultInt(&options.TiFlash.Num, "tiflash", 1)
defaultInt(&options.TiFlashWrite.Num, "tiflash.write", options.TiFlash.Num)
defaultStr(&options.TiFlashWrite.BinPath, "tiflash.write.binpath", options.TiFlash.BinPath)
Expand All @@ -389,9 +388,14 @@ func populateDefaultOpt(flagSet *pflag.FlagSet) error {
defaultStr(&options.TiFlashCompute.BinPath, "tiflash.compute.binpath", options.TiFlash.BinPath)
defaultStr(&options.TiFlashCompute.ConfigPath, "tiflash.compute.config", options.TiFlash.ConfigPath)
options.TiFlashCompute.UpTimeout = options.TiFlash.UpTimeout
case "tidb-ms":
defaultInt(&options.TiDB.Num, "db", 1)
defaultInt(&options.TiKV.Num, "kv", 1)
default:
return errors.Errorf("Unknown --mode %s", options.Mode)
}

switch options.PDMode {
case "pd":
defaultInt(&options.PD.Num, "pd", 1)
case "ms":
defaultInt(&options.PDAPI.Num, "pd.api", 1)
defaultStr(&options.PDAPI.BinPath, "pd.api.binpath", options.PDAPI.BinPath)
defaultStr(&options.PDAPI.ConfigPath, "pd.api.config", options.PDAPI.ConfigPath)
Expand All @@ -401,9 +405,8 @@ func populateDefaultOpt(flagSet *pflag.FlagSet) error {
defaultInt(&options.PDRM.Num, "pd.rm", 1)
defaultStr(&options.PDRM.BinPath, "pd.rm.binpath", options.PDRM.BinPath)
defaultStr(&options.PDRM.ConfigPath, "pd.rm.config", options.PDRM.ConfigPath)
defaultInt(&options.TiFlash.Num, "tiflash", 1)
default:
return errors.Errorf("Unknown --mode %s", options.Mode)
return errors.Errorf("Unknown --pd.mode %s", options.PDMode)
}

return nil
Expand Down
58 changes: 38 additions & 20 deletions components/playground/playground.go
Original file line number Diff line number Diff line change
Expand Up @@ -831,7 +831,7 @@ func (p *Playground) bootCluster(ctx context.Context, env *environment.Environme
p.bootOptions = options

// All others components depend on the pd, we just ensure the pd count must be great than 0
if options.Mode != "tidb-ms" && options.PD.Num < 1 {
if options.PDMode != "ms" && options.PD.Num < 1 {
return fmt.Errorf("all components count must be great than 0 (pd=%v)", options.PD.Num)
}

Expand Down Expand Up @@ -863,9 +863,6 @@ func (p *Playground) bootCluster(ctx context.Context, env *environment.Environme
}

if options.Mode == "tidb" {
instances = append([]InstancePair{{spec.ComponentPD, instance.PDRoleNormal, instance.TiFlashRoleNormal, options.PD}},
instances...,
)
instances = append(instances,
InstancePair{spec.ComponentTiFlash, instance.PDRoleNormal, instance.TiFlashRoleNormal, options.TiFlash},
)
Expand Down Expand Up @@ -902,15 +899,19 @@ func (p *Playground) bootCluster(ctx context.Context, env *environment.Environme
return fmt.Errorf("Disaggregate mode preflight check failed: Bucket %s doesn't exist", options.DisaggOpts.Bucket)
}
}
instances = append([]InstancePair{{spec.ComponentPD, instance.PDRoleNormal, instance.TiFlashRoleNormal, options.PD}},
instances...,
)

instances = append(
instances,
InstancePair{spec.ComponentTiFlash, instance.PDRoleNormal, instance.TiFlashRoleDisaggWrite, options.TiFlashWrite},
InstancePair{spec.ComponentTiFlash, instance.PDRoleNormal, instance.TiFlashRoleDisaggCompute, options.TiFlashCompute},
)
} else if options.Mode == "tidb-ms" {
}

if options.PDMode == "pd" {
instances = append([]InstancePair{{spec.ComponentPD, instance.PDRoleNormal, instance.TiFlashRoleNormal, options.PD}},
instances...,
)
} else if options.PDMode == "ms" {
if !tidbver.PDSupportMicroServices(options.Version) {
return fmt.Errorf("PD cluster doesn't support microservices mode in version %s", options.Version)
}
Expand All @@ -920,13 +921,6 @@ func (p *Playground) bootCluster(ctx context.Context, env *environment.Environme
{spec.ComponentPD, instance.PDRoleResourceManager, instance.TiFlashRoleNormal, options.PDRM}},
instances...,
)
instances = append(instances,
InstancePair{spec.ComponentTiFlash, instance.PDRoleNormal, instance.TiFlashRoleNormal, options.TiFlash},
)
} else {
instances = append([]InstancePair{{spec.ComponentPD, instance.PDRoleNormal, instance.TiFlashRoleNormal, options.PD}},
instances...,
)
}

for _, inst := range instances {
Expand Down Expand Up @@ -1022,12 +1016,36 @@ func (p *Playground) bootCluster(ctx context.Context, env *environment.Environme
}

if p.bootOptions.Mode == "tikv-slim" {
var pdAddrs []string
for _, pd := range p.pds {
pdAddrs = append(pdAddrs, pd.Addr())
if p.bootOptions.PDMode == "ms" {
var (
tsoAddr []string
apiAddr []string
rmAddr []string
)
for _, pd := range p.pds {
switch pd.Role {
case instance.PDRoleTSO:
tsoAddr = append(tsoAddr, pd.Addr())
case instance.PDRoleAPI:
apiAddr = append(apiAddr, pd.Addr())
case instance.PDRoleResourceManager:
rmAddr = append(rmAddr, pd.Addr())
}
}
fmt.Printf("PD TSO Endpoints: ")
colorCmd.Printf("%s\n", strings.Join(tsoAddr, ","))
fmt.Printf("PD API Endpoints: ")
colorCmd.Printf("%s\n", strings.Join(apiAddr, ","))
fmt.Printf("PD Resource Ranager Endpoints: ")
colorCmd.Printf("%s\n", strings.Join(rmAddr, ","))
} else {
var pdAddrs []string
for _, pd := range p.pds {
pdAddrs = append(pdAddrs, pd.Addr())
}
fmt.Printf("PD Endpoints: ")
colorCmd.Printf("%s\n", strings.Join(pdAddrs, ","))
}
fmt.Printf("PD Endpoints: ")
colorCmd.Printf("%s\n", strings.Join(pdAddrs, ","))
}

if monitorInfo != nil {
Expand Down

0 comments on commit 0c5cc53

Please sign in to comment.