diff --git a/plugins/common/common.go b/plugins/common/common.go index 6d9c5ae5a..78e938f84 100644 --- a/plugins/common/common.go +++ b/plugins/common/common.go @@ -74,13 +74,10 @@ func GetAppScheduler(appName string) string { wg.Add(1) go func() { defer wg.Done() - b, _ := PlugnTriggerOutput("config-get", []string{appName, "DOKKU_SCHEDULER"}...) - value := strings.TrimSpace(string(b[:])) - if value != "" { - appScheduler = value - } + appScheduler = getAppScheduler(appName) }() } + wg.Add(1) go func() { defer wg.Done() @@ -95,6 +92,15 @@ func GetAppScheduler(appName string) string { return appScheduler } +func getAppScheduler(appName string) string { + b, _ := PlugnTriggerOutput("config-get", []string{appName, "DOKKU_SCHEDULER"}...) + value := strings.TrimSpace(string(b[:])) + if value != "" { + return value + } + return "" +} + // GetGlobalScheduler fetchs the global scheduler func GetGlobalScheduler() string { b, _ := PlugnTriggerOutput("config-get-global", []string{"DOKKU_SCHEDULER"}...) diff --git a/plugins/common/log.go b/plugins/common/log.go index fe1193e1e..e939cd1b2 100644 --- a/plugins/common/log.go +++ b/plugins/common/log.go @@ -110,7 +110,7 @@ func LogStderr(text string) { // LogDebug is the debug log formatter func LogDebug(text string) { - if os.Getenv("DOKKU_TRACE") == "" { - fmt.Fprintln(os.Stderr, fmt.Sprintf(" ? %s", text)) + if os.Getenv("DOKKU_TRACE") == "1" { + fmt.Fprintln(os.Stderr, fmt.Sprintf(" ? %s", strings.TrimPrefix(text, " ? "))) } } diff --git a/plugins/common/subprocess.go b/plugins/common/subprocess.go index 8257a8e51..f60362ff1 100644 --- a/plugins/common/subprocess.go +++ b/plugins/common/subprocess.go @@ -80,21 +80,34 @@ func PlugnTrigger(triggerName string, args ...string) error { // PlugnTriggerOutput fire the given plugn trigger with the given args func PlugnTriggerOutput(triggerName string, args ...string) ([]byte, error) { - rescueStderr := os.Stderr - r, w, _ := os.Pipe() - os.Stderr = w - out, err := PlugnTriggerSetup(triggerName, args...).Output() - w.Close() + LogDebug(fmt.Sprintf("plugn trigger %s %v", triggerName, args)) + rE, wE, _ := os.Pipe() + rO, wO, _ := os.Pipe() + session := PlugnTriggerSetup(triggerName, args...) + session.Stderr = wE + session.Stdout = wO + err := session.Run() + wE.Close() + wO.Close() - readStderr, _ := ioutil.ReadAll(r) - os.Stderr = rescueStderr + readStderr, _ := ioutil.ReadAll(rE) + readStdout, _ := ioutil.ReadAll(rO) - var stderr error + stderr := string(readStderr[:]) if err != nil { - stderr = fmt.Errorf(string(readStderr[:])) + err = fmt.Errorf(stderr) } - return out, stderr + if os.Getenv("DOKKU_TRACE") == "1" { + for _, line := range strings.Split(stderr, "\n") { + LogDebug(fmt.Sprintf("plugn trigger %s stderr: %s", triggerName, line)) + } + for _, line := range strings.Split(string(readStdout[:]), "\n") { + LogDebug(fmt.Sprintf("plugn trigger %s stdout: %s", triggerName, line)) + } + } + + return readStdout, err } // PlugnTriggerSetup sets up a plugn trigger call