fix: handle scaling properly when there is no procfile

This commit is contained in:
Jose Diaz-Gonzalez
2020-11-02 08:18:42 -05:00
parent 833a64cc0e
commit bf84405b43
2 changed files with 19 additions and 9 deletions

View File

@@ -223,9 +223,13 @@ func updateScalefile(appName string, processTuples []string) error {
return err
}
processTypes, err := processesInProcfile(procfilePath)
if err != nil {
return err
processTypes := make(map[string]bool)
hasProcfile := common.FileExists(procfilePath)
if hasProcfile {
processTypes, err = processesInProcfile(procfilePath)
if err != nil {
return err
}
}
newLines := []string{}
@@ -257,10 +261,8 @@ func updateScalefile(appName string, processTuples []string) error {
return fmt.Errorf("Invalid count for process type %s", s[0])
}
if _, ok := processTypes[processType]; !ok {
if count != 0 && len(processTypes) == 0 {
return fmt.Errorf("%s is not a valid process name to scale up", processType)
}
if _, ok := processTypes[processType]; !ok && hasProcfile && count != 0 {
return fmt.Errorf("%s is not a valid process name to scale up", processType)
}
scale = append(scale, fmt.Sprintf("%s=%d", processType, count))
@@ -288,5 +290,5 @@ func updateScalefile(appName string, processTuples []string) error {
return err
}
return err
return nil
}

View File

@@ -104,7 +104,10 @@ func CommandScale(appName string, processTuples []string) error {
scalefilePath := getScalefilePath(appName)
if !common.FileExists(procfilePath) {
image := common.GetAppImageRepo(appName)
extractProcfile(appName, image, procfilePath)
common.SuppressOutput(func() error {
extractProcfile(appName, image, procfilePath)
return nil
})
}
if !common.FileExists(scalefilePath) {
@@ -152,10 +155,15 @@ func CommandScale(appName string, processTuples []string) error {
return fmt.Errorf("App %s contains DOKKU_SCALE file and cannot be manually scaled", appName)
}
common.LogInfo1(fmt.Sprintf("Scaling %s processes: %s", appName, strings.Join(processTuples, " ")))
if err := updateScalefile(appName, processTuples); err != nil {
return err
}
if !common.IsDeployed(appName) {
return nil
}
imageTag, err := common.GetRunningImageTag(appName)
if err != nil {
return err