X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fc880f7053c5fc5a669d92453f4fc293e0b514f1..6fe66955fb53dde27d9677d31fdb137913b2b850:/services/crunch-run/crunchrun.go diff --git a/services/crunch-run/crunchrun.go b/services/crunch-run/crunchrun.go index 8fd5801d23..59fdd007e2 100644 --- a/services/crunch-run/crunchrun.go +++ b/services/crunch-run/crunchrun.go @@ -664,7 +664,6 @@ type infoCommand struct { // purposes. func (runner *ContainerRunner) LogNodeInfo() (err error) { w := runner.NewLogWriter("node-info") - logger := log.New(w, "node-info", 0) commands := []infoCommand{ { @@ -690,17 +689,17 @@ func (runner *ContainerRunner) LogNodeInfo() (err error) { } // Run commands with informational output to be logged. - var out []byte for _, command := range commands { - out, err = exec.Command(command.cmd[0], command.cmd[1:]...).CombinedOutput() - if err != nil { - return fmt.Errorf("While running command %q: %v", - command.cmd, err) - } - logger.Println(command.label) - for _, line := range strings.Split(string(out), "\n") { - logger.Println(" ", line) + fmt.Fprintln(w, command.label) + cmd := exec.Command(command.cmd[0], command.cmd[1:]...) + cmd.Stdout = w + cmd.Stderr = w + if err := cmd.Run(); err != nil { + err = fmt.Errorf("While running command %q: %v", command.cmd, err) + fmt.Fprintln(w, err) + return err } + fmt.Fprintln(w, "") } err = w.Close() @@ -1052,6 +1051,21 @@ func (runner *ContainerRunner) UploadOutputFile( followed int) (manifestText string, err error) { if info.Mode().IsDir() { + // if empty, need to create a .keep file + dir, direrr := os.Open(path) + if (direrr != nil) { + return "", direrr + } + defer dir.Close() + names, eof := dir.Readdirnames(1) + if len(names) == 0 && eof == io.EOF { + keep, keeperr := os.Create(path+"/.keep") + if keeperr != nil { + return "", keeperr + } + keep.Close() + } + return }